Торговые операции сиБота
В этом руководстве мы подробно объясняем ключевые торговые операции, которые вы можете выполнять с помощью сиБота, разработанного через Algo API.
Вот некоторые из поддерживаемых операций для сиБотов:
- Отправка рыночных ордеров.
- Размещение отложенных ордеров.
- Изменение отложенных ордеров и открытых позиций.
- Закрытие позиций и отмена ордеров.
- Подписка на торговые события (позиции, ордера и связанная активность).
Отправка рыночных ордеров
Рыночный ордер отправляется на торговый сервер при вызове метода ExecuteMarketOrder(). После создания нового сиБота вы можете добавить этот метод с несколькими определенными свойствами рыночного ордера (инструмент, объем, тейк-профит, стоп-лосс и т. д.). Приведенный ниже пример размещает рыночный ордер при запуске сиБота.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
1 2 3 4 5 6 7 8 9 10 | |
Совет
В примере несколько параметров ордера были намеренно оставлены неопределенными "". Проверьте Справочники для сигнатур и порядка всех параметров ExecuteMarketOrder().
После сборки сиБота и добавления экземпляра вы увидите, что рыночный ордер с указанными параметрами был выполнен при запуске. Вкладки Позиции и Лог на панели Обзора сделок отображают соответствующую позицию и записи в логе.
Размещение отложенных ордеров
cTrader поддерживает три типа отложенных ордеров, а именно стоп ордера, лимитные ордера и стоп-лимит ордера. Чтобы разместить отложенные ордера при запуске, вы можете заменить рыночный ордер следующими фрагментами кода в предыдущем примере сиБота.
1 2 3 | |
1 2 3 | |
Совет
Чтобы быстро проверить параметры метода, начните вводить имя метода и открывающую скобку. Вы увидите всплывающее окно IntelliSense с дополнительной информацией.

Совет
Если вы кликните на метод/параметр в cTrader Algo и нажмете F1, панель справки справа от окна кода покажет соответствующие результаты поиска. Если текстовый курсор остается за пределами окна кода и вы нажимаете F1, появится окно Центра помощи, чтобы помочь вам.
Вы увидите следующие записи на панели Обзора сделок после успешной сборки и запуска сиБота.
Изменение отложенных ордеров и открытых позиций
Когда отложенные ордера размещены, они становятся доступными в вашей коллекции PendingOrders сиБота. Через эту коллекцию вы можете получить к ним доступ и изменить их. Существующие отложенные ордера можно изменить, настроив их уровень стоп-лосса следующим образом.
1 2 3 4 5 6 7 8 9 10 11 | |
1 2 3 4 5 6 7 8 | |
Вкладка Лог панели Обзора сделок показывает, что три отложенных ордера были успешно изменены сразу после размещения.

После успешного выполнения различных типов ордеров для вашего счета будут открыты позиции. Все открытые позиции доступны в коллекции Positions вашего сиБота. Аналогично изменению отложенных ордеров в предыдущем примере, вы можете изменить открытую позицию. Поскольку рыночные ордера — самый быстрый способ открыть позиции, давайте добавим метод OnBar() с действием изменения позиции к первому сиБоту в этом руководстве.
1 2 3 4 5 6 7 | |
1 2 3 4 | |
Как отражено в логе, открытая позиция была изменена на первом открытом баре.

Закрытие позиций и отмена ордеров
Ниже вы можете найти пример сиБота, который закрывает все открытые позиции и отменяет все отложенные ордера в пятницу в 11:00 (UTC), вызывая метод OnTick().
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |

Подписка на торговые события
cTrader позволяет разработчикам алгоритмов подписываться на торговые события и отслеживать торговую активность, независимо от того, были ли они инициированы сиБотом или вручную. Это достигается путем прослушивания событий, доступных в двух коллекциях, продемонстрированных ранее, Positions и PendingOrders.
Для позиций доступны три события:
OpenModifiedClosed
Они срабатывают, когда вы открываете, изменяете и закрываете позиции на вашем счете, соответственно.
В приведенном ниже фрагменте кода три события объявлены в методе OnStart(), и назначены методы, которые будут вызваны. Они автоматически создадут для нас сигнатуры кода для использования. После этого операторы Print() добавляются в каждый из методов событий.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Независимо от того, кто выполняет события Open, Modified и Closed — вы или сиБот, — алгоритм будет реагировать на них каждый раз с выводом сообщений, как показано в журнале ниже.

Аналогичным образом вы можете подписаться на события, связанные с отложенными ордерами. Для отложенных ордеров доступны четыре события:
CreatedModifiedFilledCancelled
Эти четыре события объявляются в методе OnStart(), а обработчики событий добавляются следующим образом.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
При подписке на события, связанные с отложенными ордерами, сиБот будет реагировать как на ручную, так и на программную торговую активность.

Обзор
В заключение отметим, что cTrader предоставляет разработчикам алгоритмов впечатляющий арсенал торговых операций, которые могут выполняться сиБотами. Умело применяя их, вы можете реализовывать индивидуальные и сложные торговые стратегии.



