Кейс: как написать торгового робота в Metatrader 4
Сегодня автоматизированные алгоритмы для торговли на бирже становятся все популярнее. При этом дело не только в том, что трейдеры хотят наладить автоматизированную торговлю. Ручное тестирование может отнимать недели и месяцы, а робот дает возможность тестировать свои торговые гипотезы буквально в режиме нон-стоп. Как создать торгового робота и какие задавать алгоритмы и скрипты, рассказываем в статье.
Шаг 1. Создаем гипотезу
Гипотеза — это предположение о том, как трейдеру попасть из точки А в точку Б — то есть, из момента где вы деньги теряете, к моменту, где вы закрываете сделки в плюс. Гипотезы помогают протестировать свои предположения на исторических данных. Большинство ваших гипотез не подтвердятся, но только таким образом вы сможете найти рабочие решения и создать сильную торговую стратегию.
Вашу торговую гипотезу нужно описать в техническом задании. По этому ТЗ и будет торговать ваш робот.
На следующем этапе эту гипотезу мы будем кодить, чтобы проверить, срабатывает ли она.
Шаг 2. Кодим торгового робота
В основе любого робота лежит алгоритм — это все та же торговая гипотеза или стратегия, но переведенная на язык кода. Именно написание алгоритмов — ключевая работа при создании робота. После того как есть алгоритмы, вам остается просто «объяснить» их компьютерной системе в доступном формате.
В этой статье мы рассказывали, как устроена высокочастотная торговля в целом и какие алгоритмы должен включать в себя хороший робот — почитайте, если хотите вникнуть в детали.
А если вкратце, то у хорошего робота должно быть несколько модулей:
-
модуль ценового анализа;
-
модуль управления капиталом;
-
модуль анализа истории сделок и расчета ошибки;
-
модуль оценки набора позиций (оценка ликвидности в стакане);
-
модуль открытия, закрытия и сопровождения сделок.
Рассмотрим на практике, как конкретно мы задаем эти параметры роботу при кодинге.
Ордера Buy и Sell
Для модуля «Частоменяемые параметры» мы указываем название переменной — например, extern bool — и ставим роботу задачу, покупать или продавать (Buy и Sell).
Раздел «Частоменяемые параметры»
Ордер стоп-лосс
Для модуля «Параметры ордеров» слева мы видим название переменных, справа — заданные значения. Например, мы можем указать, чтобы робот выставлял защитные ордера для автоматического закрытия сделок и ограничения возможных убытков.
Раздел «Параметры ордеров» |
Переворот позиций
Суть стратегии переворота позиции — при быстрых изменениях рынка всегда есть вероятность мгновенного разворота цены. Трейдер должен это учитывать и мгновенно принимать решения. В этом как раз и помогает тактика переворота позиций — она дает возможность закрывать открытую позицию и одновременно открывать новую в противоположном направлении.
Эту стратегию мы тоже можем внедрить в нашего торгового робота — в модуле «Переворот ордеров» мы задаем значения, при которых робот должен будет перевернуть ордера.
Раздел «Переворот ордеров»
Стоимость и количество торговых лотов
В робота можно заложить данные по размерам лотов. В модуле «Количество лотов» мы указываем фиксированный и максимальный лот — то есть, допустимый риск, на который робот может пойти при торговле. Также можно указать количество лотов для ордеров.
Раздел для лотов
Дополнительные параметры
Также можно выставить дополнительные настройки — цену открытия бара, верхнюю и нижнюю границы канала.
Раздел «Дополнительные параметры»
Индикаторы и другие инструменты
Также добавляем ваши предпочитаемые технические обоснования для торговых сигналов, согласно которым робот будет открывать и закрывать позиции.
Для задания параметров можно использовать индикаторы инструменты и другие инструменты технического анализа: индикатор волатильности полосы Боллинджера, осциллятор Стохастик для поиска уровней разворота цены и другие.
Раздел «Сигналы на открытие/закрытие»
Настройка уведомлений
Еще можно прописать в коде, чтобы робот присылал вам уведомления на электронную почту при открытии/закрытии ордеров.
Раздел «Алерт на электронную почту»
Перевод сделки в безубыток
Безубыток — уровень цены, который ограничивает убыток по открытой сделке. При выставлении сделки в безубыток ордер стоп-лосс переносится на уровень открытия цены — после того как цена пройдет в нужном направлении конкретное количество пунктов. Сделка выставляется в безубыток, чтобы трейдер избежал убытков, если цена развернется в противоположном направлении. При кодинге робота мы можем выставить уровень безубытка, чтобы избежать финансовых потерь.
Ордер Трейлинг стоп
Трейлинг стоп — вид стоп-лосс ордера, но со своей спецификой. В то время как стоп-лосс помогает сократить размер убытка и контролировать риски, трейлинг стоп помогает максимально сохранить прибыль и ограничить риски и потери, если рынок развернется против трейдера. Мы также задаем роботу значения, при которых автоматически сработает трейлинг стоп.
Разделы «Безубыток» и «Трейлинг стоп»
Настройка параметров индикаторов
Также можно дополнительно настраивать параметры самых разных индикаторов для робота — Стохастик, FOREX Day Monster «Fast Trend», Stochastic Cross Alert, полосы Боллинджера и других.
Раздел «Параметры индикаторов»
Коротко
-
Торговый робот может быть очень полезен — как для автоматизации торговли, так и для тестирования ваших торговых стратегий и гипотез.
-
У качественного робота должны быть основные модули, без которых он не будет эффективен.
-
Ключевая часть при написании робота — создание алгоритмов.
-
Алгоритмы для робота можно прописать самые разные: можно настроить параметры индикаторов и уровни выставления стоп-лоссов, отправку уведомлений и многое другое.