Доступ ко всем позициям скрипта осуществляется через свойство ISecurity.Positions. ISecurity.Positions - это список позиций.
Для каждой позиции назначается название сигнала. В один момент может быть активна только одна позиция с одним названием.
Например, если создали позицию "LE" и ее не закрыли, то нельзя создать вторую позицию с таким же названием.
Для открытия позиций используются методы sec.Positions.BuyXXX(...) для покупки и sec.Positions.SellXXX(...) для продажи.
Примеры покупок:
Примеры продаж:
Часто используемый метод для получения позиции GetLastActiveForSignal(...), пример:
Метод ищет активную позицию с названием "LE" и ее возвращает, если нету позиций, то метод вернет null.
Также существуют другие методы для получения позиций, все они пишутся так: sec.Positions.GetXXX(...).
Для изменении размера позиции используются методы pos.ChangeAtXXX(...), при этом передается размер новой позиции.
Например, чтобы увеличить длинную позицию на 2 контракта по рынку, надо написать pos.ChangeAtMarket(i + 1, pos.Shares + 2, "LX"); Тут pos.Shares показывает текущее количество контрактов позиции, а когда мы передаем pos.Shares + 2, это означает, что надо увеличить позицию на 2 контракта.
Если же передать отрицательное значение, например -3, то позиция перевернется в короткую с тремя контрактами.
Примеры:
Для закрытия позиции используются методы pos.CloseAtXXX(...).
Примеры:
Важно заметить, что методы которые закрывают позицию по условию (CloseAtPrice, CloseAtProfit, CloseAtStop) должны выставляться на каждом баре пока не закроется позиция, иначе TSLab снимет ордер закрытия на бирже.
Некоторые методы позиции:
Для примера напишем скрипт, который будет покупать после растущей свечи по рынку и выставлять стоп 200 пунктов и тейк 400 пунктов: