Алгоритмическая торговля — первые шаги для розничного трейдера

Последняя проверка: · Долгосрочный вечнозелёный контент
Предупреждение о рисках · YMYL Эта статья носит исключительно образовательный характер и не является инвестиционной рекомендацией. Торговля на рынке Форекс сопряжена с высоким риском потери капитала — по данным ESMA, 74–89% розничных счетов теряют деньги.

Розничная алгоритмическая торговля — это простая смена ролей: трейдер задаёт правило, компьютер его исполняет. «Если быстрая скользящая средняя пересекает медленную снизу вверх, а ATR последних двадцати баров растёт, открыть длинную позицию размером 1 процент капитала и поставить стоп на 1,5 ATR ниже». В сущности, это и есть всё определение. Всё прочее — провайдеры VPS, языки, фреймворки — лишь строительные леса. Беда большинства розничных алго-проектов не в коде, а в допущении, что автоматизация способна компенсировать преимущество (edge), которого у трейдера на самом деле нет. Не способна. Она лишь будет терять деньги быстрее и дешевле, чем это делал человек.

Чем алготрейдинг является и чем точно не является

Алгоритм — это две вещи в одной: точно определённая стратегия и механизм, который её запускает без эмоциональных вздрагиваний. Трейдер, способный записать полный набор условий входа, выхода, расчёта размера позиции и управления убытком на однозначном языке, сделал половину работы; остальное — перевод этого документа в MQL5, Python или обычный алерт. Трейдер, которому такой дисциплины не хватает, начинает с изучения синтаксиса и лишь позже обнаруживает, что кодировать-то нечего. Любая разумная книга по системной торговле повторяет один и тот же совет — сначала операционализируй стратегию вручную, автоматизируй её во вторую очередь, — и любой выходной курс, продающий «бота за сто девяносто девять долларов», его игнорирует. Алго — это также не волшебный источник пассивного дохода: стратегия, которая работает сегодня, работает потому, что определённая рыночная закономерность всё ещё держится, и в тот момент, когда она исчезает, бот теряет деньги столь же эффективно, как и дискреционный трейдер, только без эмоционального предупреждения о том, что что-то идёт не так.

Лестница от алертов к полной автоматизации

Естественный путь проходит через четыре ступени. Первая — алерты платформы в TradingView или MetaTrader, которые издают звук или присылают письмо, когда выполнено условие входа. Трейдер по-прежнему сам нажимает на ордер, но вынужден перевести стратегию в правило, достаточно точное, чтобы платформа смогла его выразить. Многие розничные трейдеры так и не уходят с этой ступени — и им это не нужно: алертов плюс дисциплины достаточно, когда сигналов в день немного. Вторая ступень — простой советник (Expert Advisor) на MQL5 для MetaTrader, обычно пересечение скользящих средних с трейлинг-стопом или пробой по ATR. Такой советник занимает от двухсот до четырёхсот строк и собирается за несколько недель; язык мы разбираем в материале основы советников MQL5. Третья ступень — Python-бэктестер на pandas, NumPy и backtrader; здесь трейдер перебирает десятки вариантов стратегии за один вечер — это разобрано в бэктестинг Forex на Python. Четвёртая и опциональная ступень — прямое подключение к брокеру через REST или FIX с Interactive Brokers или OANDA, выводя MetaTrader из роли промежуточного слоя.

Навыки и выбор языка

Список короткий. Важнее всего статистическое мышление — понимание разницы между процентом прибыльных сделок (win rate), профит-фактором и матожиданием (expectancy), а также знание того, что кривая капитала из пятидесяти сделок пока ничего не доказывает. Без этого даже чистый код приводит к выводам вида «стратегия работает, потому что последние шесть сделок были прибыльными», а это нулевая гипотеза, а не анализ. Вторым идёт терпение для цикла валидации: идея, кодирование, бэктест, walk-forward, три-шесть месяцев на демо, и только потом реальный капитал. Третье — основы программирования: переменные, циклы, функции, pandas DataFrame. Вам не нужно быть инженером-программистом; достаточно уметь прочитать чужой советник и поменять параметр, не сломав остального. Выбор языка упирается в одно: остаётся ли трейдер внутри MetaTrader или уходит из него? MQL5 — родной язык MT5, задержка исполнения измеряется единицами миллисекунд, а Strategy Tester «из коробки» даёт достойный бэктест. Python — это весь мир за пределами MetaTrader: pandas и NumPy для обработки данных, backtrader или vectorbt для бэктестов, REST-клиенты для Interactive Brokers и OANDA. Компромиссы разбираются в материале торговый бот — MQL5 против Python.

Наглядный пример — первая стратегия от идеи до бэктеста

Возьмём стратегию пересечения на EUR/USD на H1: открывать длинную позицию, когда EMA 21 пересекает SMA 55 снизу вверх, при условии, что ATR последних четырнадцати баров выше своего пятидесятипериодного среднего. Стоп на 1,5 ATR ниже входа, тейк-профит на 2,5 ATR выше, размер позиции 1 процент капитала. Шаг первый: трейдер исполняет сорок входов вручную в MT5 на данных последних шести месяцев, считает процент прибыльных сделок и средние прибыльную и убыточную сделку. Допустим, результат — 38 процентов прибыльных сделок при профит-факторе 1,4. Шаг второй: написать советник на MQL5 и прогнать его через Strategy Tester на пятилетней истории. Результат должен сойтись с ручными цифрами или отличаться систематически — в последнем случае трейдер знает, что либо правило было записано неверно, либо какая-то часть ручного исполнения трактовалась интуитивно. Шаг третий: тот же советник тестируется в Python на backtrader на данных Dukascopy, с реалистичными spread и проскальзыванием. Шаг четвёртый: walk-forward, если цифры стабильны. Все числа иллюстративны — они показывают последовательность, а не обещание.

“Главный враг алгоритмического трейдера — это смещение из-за подглядывания в данные (data-snooping bias). Модели, которые отлично выглядят в бэктесте, часто проваливаются в реальной торговле не потому, что стратегия неверна, а потому, что трейдер оптимизировал её на тех же данных, на которых её и оценивал.” — Ernest P. Chan, Algorithmic Trading: Winning Strategies and Their Rationale, Wiley, 2013

Почему большинство розничных алго-проектов проваливаются

Причин две, и ни одна не имеет отношения к навыку программирования. Первая — отсутствие рыночного преимущества (edge), которое стоило бы автоматизировать: трейдер пишет бэктестер, подгоняет параметры под последние пять лет данных и получает кривую капитала красивее, чем реальность вообще могла бы выдать. Он выходит на реальный счёт, теряет деньги, делает вывод, что нужна «стратегия получше», и повторяет цикл. Как выделить и проверить преимущество ещё до того, как написана первая строка кода, разбирается в материале поиск торгового преимущества. Вторая причина — нежелание принять ответ «у вашей стратегии нет преимущества, возвращайтесь к чертёжной доске». Большинство трейдеров предпочитают переоптимизировать параметры, лишь бы этого не слышать — алгоритм не смягчит сообщение, лишь повторит его быстрее. Со стороны инфраструктуры реальность прозаична: VPS у Vultr или Hetzner стоит от пяти до двадцати евро в месяц, MetaTrader и Python бесплатны, данные Dukascopy бесплатны. Порог входа — десятки евро в месяц, а не тысячи. Узкое место — это время и статистическое мышление, а не деньги. Практический спутник по запуску советника на VPS лежит в разделе платформы и инструменты на ForexMechanics.

Что делать завтра

  1. Заведите журнал и в течение недели записывайте каждый свой вход как однозначное правило вида «если X и Y, то открыть Z» — изгоняя слова вроде «обычно», «как правило» или «мне кажется». Если к концу недели вы не можете переписать ни одно решение в виде такого правила, у вас пока нет стратегии для автоматизации — лишь набор реакций.
  2. Скачайте бесплатный MetaTrader 5 у своего брокера, откройте демо-счёт и настройте три алерта в TradingView или в штатной системе алертов MT5 для простейшей версии вашего правила — две недели наблюдайте, срабатывают ли алерты в те же моменты, что вы выбрали бы вручную.
  3. На третьей неделе зарегистрируйтесь на mql5.com, откройте MetaEditor, идущий в комплекте с MT5, и напишите простейший возможный советник (Expert Advisor) — пересечение EMA 21 и SMA 55 с трейлинг-стопом 1,5 ATR — опираясь на документацию MQL5 Reference; цель — первый работающий советник за сорок-восемьдесят часов усилий, а не прибыльный.
  4. Через два месяца установите Python 3.11 или новее, добавьте pandas, NumPy и backtrader через pip install, проработайте Backtrader Quickstart Guide и перепишите советник с MQL5 как стратегию для backtrader. Сравните результаты бэктеста на тех же данных — расхождения выше нескольких процентов означают, что где-то зарыто скрытое допущение.
  5. Только на пятый-шестой месяц вам стоит развернуть советник на демо-счёте MetaTrader, размещённом на VPS у Vultr или Hetzner. Дайте ему три месяца. Если результаты на демо сходятся с walk-forward-бэктестом, только тогда подумайте о реальном счёте с капиталом, потеря которого не пошатнёт ваш месячный бюджет — от пятисот до двух тысяч евро на первой итерации, не больше.
Jarosław Wasiński
Об авторе

Jarosław Wasiński

Источники и библиография

  1. MetaQuotes MetaTrader 5 — Automated Trading · oficjalny opis automatycznego handlu w MetaTraderze, ścieżek pozyskania robota i miejsca strategy testera w warsztacie www.metatrader5.com ↗
  2. MetaQuotes MQL5 Reference — programming language for algorithmic trading · dokumentacja referencyjna języka MQL5 i pięciu typów aplikacji (EA, indykatory, skrypty, serwisy, biblioteki) www.mql5.com ↗
  3. Backtrader Backtrader Quickstart Guide · podręcznik startowy frameworka backtrader w Pythonie — strategie, indykatory, optymalizacja parametrów www.backtrader.com ↗
  4. BIS BIS Quarterly Review, December 2019 — FX trading rises to $6.6 trillion per day · omówienie elektronicznej egzekucji i roli niebankowych principal trading firms w obrocie walutowym — kontekst dla retail algo www.bis.org ↗

Часто спрашивают

Что на самом деле представляет собой розничный алготрейдинг — и чем он не является?

Розничная алгоритмическая торговля означает передачу слоя исполнения компьютеру: трейдер задаёт правило как однозначное условие («если 21-периодная скользящая средняя пересекает 55-периодную снизу вверх, а ATR последних двадцати баров растёт, открыть длинную позицию размером 1 процент капитала с трейлинг-стопом 1,5 ATR»), а программа распознаёт это условие и отправляет ордер без колебаний, не заглядывая в Telegram и не вздрагивая от недавней убыточной сделки. Чем алгоритм решительно не является — так это волшебным генератором пассивного дохода сразу по трём измерениям. Он не создаёт преимущества (edge), которого не было: если трейдер теряет деньги вручную, бот теряет их быстрее и дешевле. Он не защищает от смены режима рынка: если история, на которой он строился, была трендовой, а рынок теперь во флэте, кривая капитала тает столь же эффективно, как и у дискреционного трейдера. И он не исправляет логических изъянов самой стратегии — он лишь кодирует их более последовательно.

Как выглядит реалистичная лестница от ручных кликов до запуска бота?

Первая ступень — алерты платформы в TradingView или MT5, которые издают звук или присылают письмо, когда выполнено условие входа. Трейдер по-прежнему сам нажимает на ордер, но вынужден перевести стратегию в однозначные правила. Вторая ступень — простой советник (Expert Advisor) на MQL5 для MetaTrader, обычно пересечение скользящих средних или пробой консолидации с трейлинг-стопом; об этом мы рассказываем в материале основы советников MQL5. Третья ступень — Python-бэктестер на pandas, NumPy и backtrader, который за доли секунды считает кривые капитала и метрики риска — это разобрано в статье бэктестинг Forex на Python. Четвёртая и опциональная ступень — прямое подключение к брокеру через REST или FIX с Interactive Brokers или OANDA, оставляя MetaTrader позади. Выбор между MQL5 и Python разбирается в материале торговый бот — MQL5 против Python. Реалистичный срок — от двенадцати до двадцати четырёх месяцев вечеров, а не выходной курс на Udemy.

Какие навыки мне действительно нужны — и чем это отличается от мифа «выучи код и разбогатей»?

Важны три вещи, именно в таком порядке. Первое — статистическое мышление: понимание разницы между процентом прибыльных сделок (win rate), профит-фактором и матожиданием (expectancy), а также осознание того, почему кривая капитала из пятидесяти сделок ничего не доказывает. Второе — терпение для цикла валидации: идея, кодирование, бэктест, walk-forward, три-шесть месяцев на демо, и только потом небольшой объём реального капитала. Этот цикл растягивается на месяцы, и большинство трейдеров отсеиваются после двух-трёх итераций. Третье — основы программирования: переменные, циклы, функции, управляющие конструкции и некоторое понимание того, что делает pandas DataFrame. Вам не нужно быть инженером-программистом — достаточно уметь прочитать чужой код советника и поменять параметр, не сломав остального. Миф «выучи Python и разбогатей» пропускает самую трудную и наименее эффектную часть: наличие рыночного преимущества (edge), которое стоит автоматизировать. Без него код — лишь более быстрый способ спалить депозит.

Почему большинство розничных алго-проектов проваливаются — и есть ли условие, повышающее шансы?

Алго-проекты проваливаются не из-за ошибок в коде, даже если поначалу их хватает. Они проваливаются потому, что автоматизировать нечего — нет преимущества (edge). Трейдер учит Python, пишет бэктестер, подгоняет параметры под последние пять лет данных и получает кривую капитала красивее, чем вообще возможно в реальной жизни — классическая подгонка под кривую (curve fit). Он выходит на реальный счёт, теряет деньги, делает вывод, что нужна «стратегия получше», и повторяет цикл. Условие, которое резко повышает шансы, — это наличие преимущества ещё до того, как написана первая строка кода: правила, достаточно простого, чтобы в дискреционной торговле или в чистой арифметике на исторических данных оно давало положительное матожидание в нескольких рыночных режимах, а не только в самом последнем. Как выделить и проверить такое преимущество, разбирается в статье поиск торгового преимущества. Второе, что отличает устойчивые проекты от разовых попыток, — готовность принять ответ «у вашей стратегии нет преимущества, возвращайтесь к чертёжной доске». Большинство трейдеров предпочитают переоптимизировать параметры, лишь бы этого не слышать. Алгоритм не смягчит это сообщение — он лишь повторит его быстрее.

Углубиться · полное руководство