Как написать торгового робота: инструкция для новичков

Поделиться:

Эксперты Traders Union ответили на вопрос, как написать торгового робота. Итак, для написания кода можно обратиться к специалисту, сделать это самостоятельно, пройдя простое обучение, или сгенерировать код с помощью специальных сайтов.

Торговый робот (или бот) – это специальный алгоритм, который может сделать вашу торговлю на Форекс или других финансовых рынках проще.

Торговые советники на Форекс имеют массу преимуществ:

дисциплина и отсутствие эмоций;

точное выполнение торгового плана;

не устает, готов работать 24/7;

он может быть использован для управления капиталом инвесторов;

он может быть оптимизирован по результатам торговли на истории (бэктестинг);

может работать автономно без участия человека, или требовать совсем немного внимания.

Поэтому создать торгового робота – это цель многих, кто хочет получить доход от финансовых рынков, не имея большого опыта в трейдинге. Данная статья поможет сделать это, она написана с учетом рекомендаций профессиональных алготрейдеров, сотрудничающих с МОФТ.

Интересуетесь автоторговлей? Попробуйте трейдинг на RoboForex

Что такое торговый робот?

По своей сути, торговый бот или торговый советник – это компьютерная программа, в коде которой написаны инструкции:

в каком случае открывать позицию (покупать / продавать);

в каком случае корректировать / закрывать позицию;

какого размера позиция.

В качестве исходных данных для формирования условия открытия / закрытия / корректировки позиции может быть использована следующая информация:

сигналы индикаторов и осцилляторов (объемы, RSI, MACD)

уровни поддержки и сопротивления

данные о позициях трейдеров

статистика другого рода

Ниже – фрагмент торгового робота, код написан на языке С#.

Пример кода торгового робота

Пример кода торгового робота

Этот робот открывает позицию лонг, если быстрая SMA пересекает медленную SMA вверх. Когда быстрая SMA пересекает медленную SMA вниз, робот закрывает лонг и открывает позицию шорт. Читайте также информацию о торговых ботах Tickeron AI в статье Traders Union.

Как создать торгового робота для биржи

Следует начать с поиска идей. Например:

  • вы заметили, что рынок часто совершает ложные пробои круглых уровней;

  • вы обнаружили зависимости во взаимодействии цены и объемов торгов;

  • вы прочитали в книге описание торговой стратегии.

Если идея может быть описана в форме недвусмысленных инструкций – отлично, она может быть реализована в программном коде.

Как написать код для торгового робота

Выбор простой – доступно 3 варианта:

Вариант 1. Обратиться к специалисту

Программистов, готовых написать торгового робота, можно найти на MQL5, сайтах фрилансеров.

Преимущества:

  • идея будет реализована быстро,

  • вы можете выбрать исполнителя.

Вариант 2. Написать код самому

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

Преимущества:

  • Идей много, вы сможете реализовывать их одну за другой – создавать с нуля, редактировать других роботов, комбинировать куски кодов. Во время написания кода для одного торгового робота, у вас будут появляться идеи для нескольких других роботов.

  • Вам не нужно делиться ни с кем своей идеей.

  • Вы будете точно знать устройство робота, и сможете понять, почему он работает так, а не иначе.

Вариант 3. Сгенерировать код

Например, терминал Metatrader 4 настолько популярен, что в интернете есть специальные сайты, где можно сгенерировать простых торговых роботов в формате ex4 специально под MT4.

Вот, например, несколько находок из топа Гугла (мы не несем ответственности за содержание сторонних сайтов):

  • eabuilderpro.com

  • forexeadvisor.com

Создание торгового робота онлайн бесплатно

Создание торгового робота онлайн бесплатно

Создание торгового робота в таком случае будет проводиться по схеме:

  • 1

    Добавить индикаторы

  • 2

    Создать условие

  • 3

    Добавить стратегию управления капиталом

  • 4

    Экспортировать торгового робота в файл

Преимущества:

  • вы быстро получите робота, если его можно реализовать через доступный функционал в конструкторе

  • бесплатно, если иное не предусмотрено в конструкторе

Тестирование на истории и оптимизация

Хорошо, вы получили робота по одному из 3 вариантов описанных выше, что дальше?

Далее нужно провести тестирование (backtesting) и оптимизацию параметров.

Тестирование – это прогон робота на истории. То есть вы берете данные за, скажем, 2017-2019 год и смотрите, какие сделки бы совершил бы робот по заложенным в него правилам в этом периоде из прошлого. Далее данные по сделкам обрабатываются и предоставляются в форме отчета, где видно:

  • сколько совершено сделок;

  • сколько робот заработал / потерял;

  • какие отношения заработка к потерям;

  • другие данные, которые позволяют оценить качество робота.

Вот ↓ как это выглядит в форекс терминале Metatrader 4.

Панель тестирования в МТ4

Панель тестирования в МТ4

Чтобы открыть панель Тестирования, нажмите Ctrl+T.

Далее вы:

  • Выбираете робота, которого собираетесь тестировать. Файл робота в формате ex4 должен находиться в папке MQL4Experts. В примере мы выбрали робота, торгующего по скользящим средним. Он идет в комплекте с терминалом МТ4.

  • Выбираете торговую пару, по которой будете производить тестирование. Например, EURUSD.

  • Выбираете точность тестирования (чем точнее, тем дольше по времени будет длиться тестирование).

  • Период тестирования. Чем больше исторических данных будет обработано, тем достоверней будет результат.

  • Выбираете таймфрейм

  • Задаете величину спреда (разница между ценой покупки и продажи). Current значит, что значение спреда подгрузится автоматически.

  • Выбираете параметры робота. Например, периоды используемых скользящих средних, сумму начального депозита.

  • Запускается тестирование.

На вкладке Results будут показываться сделки, которые заключает робот во время тестирования.

В результате, если вы все сделаете правильно, с большой вероятностью вы получите такую ↓ картину на вкладке Graph:

Пример тестирования торгового робота

Пример тестирования торгового робота

Она означает, что торговый робот медленно сливает депозит, потому что:

  • математическая вероятность получения прибыли = 50/50;

  • итоговый убыток идет за счет спреда (комиссионных), которые платятся в каждой сделке.

Чтобы попытаться исправить этот результат, можно попробовать “поиграться” с периодами скользящей средней, таймфреймом, валютной парой. Но все эти “игры” не дадут желаемого результата на длинной дистанции, скорее всего.

Но не исключено, что после многочисленных экспериментов со стратегиями и оптимизациями (поисков наилучших настроек торгового робота) вы увидите впечатляющую кривую, как на картинке ниже.

Результаты робота

Результаты робота

На вкладке Report вы получите больше детальной информации.

информация о тестировании

информация о тестировании

На примере выше отчет гласит, что:

  • Точность тестирования = 99,9%, а ошибок тестирования = 0. Это высокая достоверность, её можно добиться за счет качественной базы данных по ценам.

  • Совершив 9395 сделок, роботу удалось разогнать начальные 20 тысяч долларов до 1,1 миллиона в срок с февраля 2019 года по сентябрь 2023 года.

  • Относительная просадка = 40% конечно высока. И в реальных условиях она серьезно потрепала бы вам нервы.

Мы еще вернемся к этому роботу, демонстрирующему миллионные доходы позже, а пока что...

Совет. Проводите оптимизацию так, чтобы находить параметры на одном периоде (например, на данных за 2015-2018 года), а тестировать их на другом (на 2019-2023). Это называется forward testing.

Мнение эксперта. Какие бы вы не проводили тестирования, на них нельзя полагаться на 100%. Дело в том, что вы не сможете смоделировать реальные условия полностью и учесть проскальзывания, изменяющиеся спреды. Большой проблемой является детализация данных внутри одной минуты, это самый маленький таймфрейм в среде Metatrader. Но от того, как меняется цена внутри минуты, может зависеть, закроется ли сделка по тейку или по стопу. На самом деле МТ4 упрощает то, что происходит внутри минуты, чтобы оптимизировать базу данных и терминал работал быстрее.

Таймфрейм тестирования

Таймфрейм тестирования

Но для профессионала важно достигать максимальной точности, поэтому он покупает тиковые базы данных большого размера за почти 20 лет, которые вам не предоставит ваш брокер, скорее всего. “Сглаженные” исторические данные от вашего брокера могут быть причиной того, что на истории робот показывает прибыль, а в реальном времени – терпит убытки.

Тестирование на демо

Когда ваш робот прошел тщательное тестирование и оптимизацию, не спешите ставить на реал.

Попробуйте вначале демо. Хотя бы несколько месяцев, чтобы торговый бот на форекс смог “пережить” несколько важных новостей. При этом вы также проверите:

Качество вашего оборудования и соединения с интернетом. Не будут ли они мешать роботу работать так, как вы этого задумываете. Чтобы минимизировать влияние этого фактора, желательно будет использовать услугу VPS.

Качество вашего кода. Наблюдая за демо, наверняка вы захотите внести в код правки, чтобы учесть больше рыночных ситуаций.

Качество вашего брокера. Используйте демо-счета от разных брокеров, чтобы посмотреть, не влияет ли выбор брокера на результативность.

Допустим, торговый робот работал на демо в реальном времени с 1 января по 1 мая, провел 40 сделок, увеличил депозит на 7.45% с просадкой 6%.

Теперь прогоните робота на историческом тесте, используя данные за эти 4 месяца. Вы увидите, что результаты отличаются. Как так? Один и тот же робот / рынок / период, все идентично, но результаты с демо и бектестинга с большой вероятностью будут отличаться? Да, это нормально. Главное, проверьте, не критично ли это отличие. Если отличия слишком большие, найдите причину. Важно, чтобы отличия были минимальны, тогда ваши результаты тестирования на истории за предыдущие годы можно считать достоверными.

Запуск на реальный счет

Если вы все сделали правильно и дошли до этого шага, то объективно вы большой молодец. Потому что обычно новички слишком опрометчиво ставят на реальный счет наспех полученные роботы, чтобы как можно быстрее начать получать прибыль. К сожалению, это чревато сливами депозитов.

“Семь раз проверь – один раз поставь на реал” – вот пословица, которой должны руководствоваться начинающие алготрейдеры.

Главное – осторожность и защита капитала. Запуская торгового робота на реальный счет, дайте ему в управление небольшую сумму для начала.

Далее смотрите, отклоняются ли результаты на реальном счете от результатов, полученных на демо-счете и на истории. Возможно, вы получите такую ↓ ситуацию:

сравнение результатов на демо-счете и на реальном счете

сравнение результатов на демо-счете и на реальном счете

2 счета – демо и реал от одного уважаемого брокера – работают параллельно. Но на демо – прибыль, а на реале – убыток, хотя и там и там все идентично.

Это характерно для роботов - скальперов, которые совершают сделки во время импульсных движений цены. Длительность сделок исчисляется секундами, и критическую роль обретает качество исполнения. А оно отличается между реалом и демо. Поэтому разрабатывая робота, настоятельно отдавайте предпочтение идеям, которые не предусматривают скальпинговые трейды.

Сколько можно заработать?

Будьте реалистами, не питайте иллюзий, что простая стратегия сможет вас обогатить. Вот данные с авторитетного сайта, где продаются разработанные специалистами стратегии для управления активами на фондовом рынке. В колонке Performance указана доходность – разброс от 6% до 18% в год. Это то, что реально.

Прибыльность робота

Прибыльность робота

Может ли ваш робот на долгосроке превосходить такую доходность, демонстрируя при этом просадку не более 20%?

Отлично. Вы можете подумать о том, как:

  • использовать робота, продавая его защищенные копии другим трейдерам,

  • строить долгосрочный финансовый план,

  • принимать инвестиции.

Частый вопрос – Может ли торговый робот работать на полном автомате?

Теоретически, да. Но оставлять его без присмотра рискованно. Желательно по мере течения времени проводить тестирования и оптимизацию на обновленных исторических данных, чтобы настройки робота были актуальными для текущих рыночных условий. Рынки же меняются, следуя глобальным макроэкономическим циклам.

Ошибки алготрейдеров

В завершение темы сделаем краткий обзор самых распространенных ошибок тех, кто начинает строить торговых роботов:

  • Недооценивают мысль: “Прошлые результаты не гарантируют прибыльность в будущем”

  • Запускают роботов на реальных счетах не имея убедительных доказательств их прибыльности на истории и на демо.

  • Подвергают свой капитал риску, запуская роботов по непредсказуемым “секретным” стратегиям. Это так называемые “черные ящики”.

  • Слишком оптимизируют роботов, тем самым просто “подгоняют” настройки.

  • Работают с брокерами на счетах, которые не рассчитаны для алгоритмической торговли.

  • Увлекаются роботами-скальперами для быстрой прибыли.

  • Оставляют роботов во включенном состоянии во время выхода новостей.

Одна распространенная ошибка – использование мартингейла – заслуживает отдельных абзацев. Помните захватывающую картинку выше, где робот разгоняет $20к до $1,1м за 2,5 года? Это мартингейл.

После каждой неудачной сделки этот робот, работающий по системе мартингейл, входит в новую сделку с увеличенным размером. Тем самым расчет идет на то, что прибыль по последующим сделкам перекроет минусы от предыдущих.

У мартингейла есть два минуса:

  • такому роботу нужен большой стартовый депозит, чтобы иметь достаточно ликвидности на случай, если полоса неудачных сделок затянется;

  • существует риск, что депозита хватит, если робот начнет открываться против сильного тренда. В таком случае депозит будет слит.

Можно, конечно рассчитывать, что торговый робот, использующий мартингейл, принесет достаточно прибыли перед тем, как сольется... Если вы готовы нести ответственность за такое решение – это ваш выбор. Мы не рекомендуем играть с огнем.

Выводы

Трейдинг на бирже не приносит легкие деньги. Алготрейдинг – не исключение.

Чем больше кажущаяся прибыль – тем выше на самом деле риски.

Чтобы ваш опыт с разработкой торговых роботов для форекс принес больше ценности, чем разочарований – стройте свою работу на основе информации, представленной выше. Статья написана с учетом рекомендаций профессиональных алготрейдеров, сотрудничающих с МОФТ.

FAQ

Могу ли я написать торгового робота?

Да, создать торгового робота может каждый. Для этого нужен небольшой объем знаний, но его важно правильно настроить.

Можно ли использовать робота у моего брокера?

Не факт. Не все брокеры разрешают алгоритмическую торговлю. Ознакомьтесь с внутренними документами платформы и задайте вопрос в службу технической поддержки.

Торговый робот гарантирует прибыль?

Нет. Даже самый лучший трейдинг-бот не обеспечит вам 100% гарантию получения прибыли. Поэтому контролируйте сделки.

Я не умею писать код самостоятельно. Можно ли его сгенерировать?

Да. Существуют сервисы, которые автоматически генерируют код для MetaTrader 4 или MetaTrader 5.