Как создать торгового робота для MetaTrader 4

Трейдер должен постоянно искать новые идеи и стратегии, если хочет стабильно зарабатывать на финансовых рынках. Но, что делать, когда есть несколько методик, приносящих прибыль? Когда есть несколько одновременно открытых позиций, их сопровождение требует времени и определенного психологического склада характера. Если вы не умеете, как Юлий Цезарь делать несколько дел одновременно, выходом будет создать своего автоматического робота для терминала MT4.

Получить бесплатно ТОП 5 лучших торговых роботов можно здесь!

Создание идеи

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

При разработке советника нужно всегда иметь в виду, что трейдер (если это не высокочастотная HFT-торговля, больше работающая по статистическим алгоритмам) для поиска новой стратегии ограничен индикаторами технического анализа – попытки автоматизировать поиск и оценку графических и свечных паттернов пока не увенчались успехом. Даже такие сильные разворотные модели как «pin-bar» или «дожи» не могут быть основным сигналом для входа в рынок. Требуется дополнительное подтверждение, а здесь человек анализирует изменение торгового потока быстрее и лучше.

Автоматическое открытие ордеров
Автоматическое открытие ордеров по техническим индикаторам

С фундаментальными торговыми стратегиями ситуация на первый взгляд выглядит проще. Заранее известны время и даты выхода значимых новостей и статистики, роботу нужно только открыть сделку в нужном направлении или установить связку отложенных ордеров с последующим закрытием одного из них. Основных проблем здесь две: создать условия получения результата фундаментального события с минимальной задержкой и учесть, как ведет себя брокер в такие периоды.

Брокеры тоже знают, что связки «отложенников» в MT4 гарантируют клиентам прибыль, которую придется платить из своего кармана. Борются с этим по-разному. Искусственно создать резкие импульсами перед самым выходом новости, приводящим к срабатыванию обоих Stop Loss, запретить открытие ордеров непосредственно до/после выхода события, а то и полное отключение торгового потока.

Таким образом, начинающим трейдерам рекомендуется создание советников, в основе которых базовые технические индикаторы и их комбинации, например, «пересечение скользящих средних + выход осциллятора из зоны перекупленности/перепроданности + подтверждение тоски входа индикатором объема». Даже притом, что на текущем рынке для советника важна каждая миллисекунда при открытии сделки «классические» стратегии продолжают давать стабильный доход.

Далее по мере накопления опыта рыночного анализа и программирования в MT4 можно переходить к более сложному алготрейдингу советника: мультивалютный трейдинг, открытие противоположных позиций (хеджирование), новые подходы к обработке исторических данных (машинное обучение, нейросети) и т.д.

Хотя работа робота идет в фоновом режиме не все могут полностью отключить эмоции, вовлекающие в торговый процесс. Скальперу постоянно хочется создать стратегию, входящую в рынок каждую минуту. У привыкших к средне- и долгосрочным сделкам, подобная «частота» приводит к хроническим стрессам и страхам. Особенно при нескольких убытках подряд. Прежде чем написать советник, определите какой вариант стратегий, психологически комфортен именно для вас!

Приступаем к написанию робота

Если по результатам ручного тестирования убедились в прибыльности выбранного алгоритма можно переходить к самому важному процессу – создание технического задания (ТЗ). Обязательные элементы:

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

Вся информация должна быть максимально четкой и не допускать двойного толкования. Это особенно важно, когда создание робота по ТЗ будет идти через стороннего исполнителя!

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

Ручное и визуальное создание роботов для MT4
Ручное и визуальное создание роботов для MT4

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

  1. Скорости обработки торговых потоков: минимальное и максимальное время открытия/закрытия/изменения ордера, реакция на новый тик, изменение спреда и прочие факторы, связанные со временем;
  2. Применение торгового алгоритма на нескольких таймфреймах, рынках, активах с минимальными перенастройками;
  3. Простота внесения изменений в программный код советника.

Теперь по каждому пункту подробнее. Работа с брокером или биржей на максимальной скорости, что требуется при скальпинге или HFT (High-frequency trading, высокочастотный трейдинг), то создание действительно качественного робота можно только на низкоуровневых языках программирования (C++, .NET) или подключаемых к МТ4 библиотек на их основе. Требуется соответствующая техническая поддержка: канал связи с торговым сервером должен быть как можно быстрее и «короче», тем выше вероятность получения прибыли.

Когда большого (в сравнении со скальпингом) числа сделок не требуется скорость исполнения приказов, проскальзывание и прочие задержки практически не влияют на итоговый результат – профессиональные трейдеры в этом случае говорят «будем умнее, а не быстрее». Здесь советники могут разрабатываться на языках высокого уровня, в т.ч. терминальных (MQL, QPILE и других).

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

Проверяем результат

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

1. Цикличные. Идет просто перебор исторического торгового потока по барам и тикам, советник запускается при каждом ценовом изменении: пересчитать индикаторы, изменить существующие ордера или открыть новые, создать новые графические построения на графике. С новым тиком итерация повторяется. По итогу формируется отчет (statement, стейтмент) с результатами робота: сколько сделок завершилось в прибыль и убыток, итоговый финансовый результат, максимальная просадка депозита, коэффициент Шарпа и т.д. Циклический метод используется во встроенном тестере MT4 – это самый простой и настраиваемый вариант, как для новичков, так и профессиональных трейдеров.

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

2. Событийно-ориентированные. Процесс тестирования не является линейным (статичным). Здесь можно провести аналогии с мирами компьютерных игр, в которых одновременно происходит множество событий: открываются и закрываются торговые сессии, появляются новые сделки и ценовые тики, выходят фундаментальные данные. В итоге работа советника идет как на «реальном» рынке. Создать такие объемные финансовые модели можно только с использованием машинного обучения, нейронных сетей и прочих видов искусственного интеллекта, по затратам доступно только инвестиционным банкам и хедж-фондам.

Результаты тестирования советников
Результаты тестирования советников

Получить бесплатно ТОП 5 лучших торговых роботов можно здесь!

Переходим к типовым ошибкам, которые совершают трейдеры, независимо от метода тестирования созданного автоматического алгоритма и мощности оборудования:

  • использование только In-Sample данных. Самая частая ошибка – оптимизация параметров для максимальной прибыли только для торгового исторического периода. После подобного «создания» радуемся результату, но вы уверены, что при смене периода или установке на текущий рынок ничего не изменится в худшую сторону?
  • не учитываются цикличность. Любой рынок или торговый актив периодически переходит от фазы накопления (флет) к распределению (тренд), поэтому тестирование долгосрочных стратегий достаточно сложных процесс. При увеличении периода тестирования робота, имеем достаточно надежные сигналы, но сильное усреднение результатов. Когда цикл быстро переходит к другой фазе, возникает сбой алгоритма и нужно правильно найти соотношение период тестирование/прибыль.
  • комиссии брокера. В рекламе платного робота часто встречаются результаты, на которых сразу виден нулевой спред. В реальности такого не бывает, иначе брокер ничего не заработает. Вместо спреда берется комиссия за открытие. При создании часто забывают о свопах, которые могут забрать хорошую часть прибыли на «длинных» дистанциях.
  • недостаточная ликвидность торгового актива. В тестере, особенно на большом кредитном плече, можно сразу открыть много позиций объем в 10-15 лотов и потом, глядя на отчет радоваться сверхприбыли. Но реальные рыночные объемы всегда конечны и неравномерны в течение дня, не говоря уже о такой экзотике как мексиканский песо или индийская рупия, где торгует наверно от силы 200-300 человек на весь Форекс. Даже на основных парах в ночное время или моменты окончания сессий, когда большинство фиксирует прибыль или убытки, 200-300 лотов от маркетмейкера может создать резкие ценовые импульсы.
  • полнота исторических данных. У всех брокеров можно скачать базу прошлых котировок, но нужно убедиться в отсутствии пропусков, особенно на таймфреймах М1-М5. Подумайте об этом, прежде чем начать писать робота!
  • низкая робастность (устойчивость) стратегии. При изменении входных котировок стратегия должна сохранять средний уровень прибыли. Например, тестирование начиналось с начала месяца, а когда старт перенесли на 5 число через 30 дней одни просадки или убытки советника. Или, когда период скользящей средней (Moving Average) изменили на 1 период тоже больше стало ложных сигналов? Это и есть низкая устойчивость, может нужно внести изменения в алгоритм или создать заново.

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

Подведем итог. Когда при написании советника правильно составлено ТЗ и результаты тестирования на реальном (лучше центовом счете) показали стабильную прибыль, может наступить естественная психологическая реакция – потеря концентрации. В психологии это называется «перенос ответственности» в нашем случае на робота пусть он там сам разбирается и зарабатывает. И здесь как в реальной жизни можно получить ответный удар в виде полной потери депозита. Так что не расслабляться, смотреть за рынком и если ситуация изменилась делать перерыв на осмысление и новые настройки!