Как создать сиБот для cTrader за 5 минут
В этой статье и соответствующем видео мы опишем быстрый способ создания сиБота в cTrader Algo. СиБот, который мы создадим, будет реализовывать простую торговую стратегию под названием «Три белых солдата и три черные вороны». Вы можете узнать больше об этой стратегии в нашей базе знаний.
Прежде чем следовать нашим инструкциям, убедитесь, что вы загрузили и установили приложение cTrader Windows или Mac с официального сайта. Запустите его и перейдите в раздел cTrader Algo. Вы можете найти его на левой панели. Нажмите вкладку Algo, и должен появиться раздел cTrader Algo.
Добавьте новый сиБот
Нажмите кнопку Создать в cTrader Algo, чтобы начать создание нового сиБота. Введите имя, выберите язык программирования между C# и Python и продолжайте, пока не откроется редактор кода.
Добавьте настройки сиБота
Прежде чем мы начнем реализовывать торговую стратегию, мы рассмотрим основные параметры и методы сиБотов. Вы также можете обратиться к нашей документации, чтобы ознакомиться с тем, что делают различные параметры и методы.
-
Параметры сиБота — позволяют определять настраиваемые атрибуты, такие как торгуемый объем или расстояния стоп-лосса/тейк-профита.
-
Методы сиБота — определяют, как ваш сиБот ведет себя при возникновении определенных событий. Существует четыре основных события, которые необходимо обрабатывать при разработке сиБота cTrader, и каждое из них управляется соответствующим методом, предоставляемым cTrader. Эти методы —
OnStart(),OnTick(),OnBar(),OnStop()в C# иon_start(),on_tick(),on_bar_closed(),on_stop()в Python. Обратите внимание, что методOnBar()в C# иon_bar_closed()в Python не включен в шаблон кода по умолчанию.
В следующей таблице подробно описаны эти четыре метода.
| C# | Python | Цель |
|---|---|---|
OnStart() | on_start() | Срабатывает при запуске экземпляра сиБота. Используется для инициализации любых переменных, которые вы планируете использовать в своем сиБоте, таких как индикаторы, счетчики, обработчики событий или таймеры. |
OnTick() | on_tick() | Срабатывает при каждом тике (обновлении цены) на торговом графике, на котором работает экземпляр сиБота. Обычно используется для логики быстрого входа или выхода на основе данных в реальном времени. Внутри этого метода вы можете запрограммировать пользовательские условия входа и выхода, а также любую другую вспомогательную функцию, которую необходимо запускать при поступлении нового тика. |
OnBar() | on_bar_closed() | Срабатывает при закрытии каждого бара. Внутри этого метода вы можете запрограммировать пользовательские условия входа и выхода или любые другие функции, которые должны выполняться при формировании каждого нового бара. |
OnStop() | on_stop() | Вызывается при остановке сиБота. Используется для выполнения финальных операций, таких как закрытие позиций, сохранение состояния и т. д. |
Добавьте торговую логику
Теперь мы добавим код для нашей торговой стратегии. Наш сиБот должен открывать позицию на покупку, когда на графике формируются три зеленых бара, и позицию на продажу, когда появляются три последовательных красных бара.
Сначала нам нужно определить параметры нашего сиБота. Эти параметры будут полностью настраиваемыми из пользовательского интерфейса cTrader. Мы определим три параметра в нашем сиБоте.
- Объем каждой сделки.
- Стоп-лосс в пипах.
- Тейк-профит в пипах.
Вставьте следующий код в редактор кода сразу под фигурными скобками после объявления класса (public class NewcBot : Robot)
1 2 3 4 5 6 7 8 | |
Примечание
СиБоты Python используют настраиваемые параметры, объявленные в их файлах .cs.
1 2 3 4 5 6 7 8 | |
Теперь нам нужно реализовать логику нашей торговой стратегии. Вставьте следующий код в метод OnBar() или on_bar_closed(). Помните, что этот метод вызывается каждый раз при формировании нового бара.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
1 2 3 4 5 6 7 8 9 10 11 | |
Теперь мы рассмотрим код более подробно. cTrader предоставляет доступ к историческим барам графика, что позволяет нам проверить, являются ли последние три бара зелеными или красными соответственно. В методе OnBar() в C# и on_bar_closed() в Python выше мы сначала проверяем, были ли последние три бара зелеными. Затем мы оцениваем, были ли эти бары красными.
Если одно из двух условий истинно, мы размещаем рыночный ордер с помощью метода ExecuteMarketOrder(). Он принимает несколько входных данных (аргументов), наиболее важными из которых являются направление сделки, инструмент, торгуемый объем, стоп-лосс и тейк-профит.
В нашем случае направление ордера (TradeType.Buy, TradeType.Sell) определяется условиями торговой стратегии. Название инструмента берется непосредственно с графика, на котором работает наш сиБот, — SymbolName. Объем торговли, стоп-лосс и тейк-профит (в C# Volume, StopLoss, TakeProfit, а в Python VolumeInLots, StopLossInPips, TakeProfitInPips) — все они извлекаются из параметров сиБота, которые мы определили.
Сборка и запуск сиБота
Теперь нам нужно проверить, успешно ли собирается наш сиБот. По умолчанию окно результатов сборки расположено непосредственно под редактором кода. Если вы его не видите, кликните по кнопке Layout в самой верхней панели интерфейса cTrader и выберите Build Result. Сочетание клавиш для этого действия — Ctrl + W
После этого кликните по кнопке Build, расположенной в самой верхней панели интерфейса cTrader. Либо кликните правой кнопкой мыши по вашему сиБоту и выберите Build в появившемся меню, или просто нажмите Ctrl + B.

Если сборка прошла успешно, вы увидите зеленое сообщение в области Build Result в нижней части редактора кода.

Если же в вашем коде есть проблемы, вы увидите красное сообщение и подробную сводку всех ошибок сборки.

После того как ваш сиБот успешно собран, вы можете начать его использовать. Все, что вам нужно сделать, — это добавить экземпляр на торговый график. Для этого просто кликните по иконке + справа от названия вашего сиБота. Вы увидите список всех инструментов, на которых можно запустить ваш сиБот.

Мы выберем EURUSD. После того как вы выберете инструмент, будет добавлен новый экземпляр сиБота. Вы увидите новый элемент в списке сиБотов с названием инструмента и таймфреймом, на котором вы хотите торговать.
Вы также увидите параметры, которые вы закодировали, во вкладке Parameters непосредственно под торговым графиком.

Вы можете изменить эти параметры как угодно или просто оставить их значения по умолчанию.
Кроме того, вы увидите кнопку Play в верхней части графика EURUSD.

Чтобы запустить ваш экземпляр, нажмите эту кнопку. Копия этой кнопки также расположена справа от вашего экземпляра в списке сиБотов слева. Любая из этих кнопок запустит сиБота.
После нажатия на любую из кнопок вы увидите, что она станет оранжевой, что означает, что экземпляр нашего сиБота теперь запущен и работает. Во вкладке Log вы также увидите новую строку, сообщающую о том, что сиБот запущен.
Бэктестинг сиБота
Нашему сиБоту может потребоваться много времени, чтобы открыть позицию на реальном торговом графике. Мы запустим быстрый бэктестинг, чтобы увидеть его в действии на исторических данных. Для этого откройте вкладку Backtest.

Используйте ползунок календаря в верхней части экрана, чтобы выбрать диапазон дат, который вы хотите использовать для бэктестинга. Включите флажок Visual mode, чтобы отслеживать результаты бэктестинга по мере их появления.
Мы переместим ползунок на один месяц назад. Кликните по кнопке Play, чтобы запустить сиБота на выбранных исторических данных.
После этого вы сможете видеть новые открываемые и/или закрываемые позиции во вкладке непосредственно под торговым графиком и справа от раздела Parameters. В частности, после обнаружения одного из двух паттернов, которые мы закодировали, сиБот разместит ордер на покупку или продажу.
Запуск бэктестинга — это полезный способ проанализировать, правильно ли работает ваш сиБот.
Обзор
Мы надеемся, что эта статья была полезна для демонстрации того, как вы можете создать автоматизированного торгового робота с помощью cTrader.
