Как превратить любой индикатор со стрелками в советник за 5 минут (пример на Fractals)
У многих трейдеров есть индикатор, который рисует стрелки BUY и SELL, и хочется, чтобы по этим стрелкам торговал советник. Прежде чем любой советник сможет это делать, нужно ответить на четыре вопроса — а ответы на графике не видны. Разберём их на Fractals — индикаторе, который есть в каждом терминале MetaTrader 5, — чтобы вы могли повторить каждый шаг сами.
Как индикатор со стрелками общается с советником
Советник не видит стрелки, которые видите вы. Он читает числа из буферов индикатора — массивов с одним значением на каждый бар — через iCustom() и CopyBuffer(). Для стрелочного индикатора это значит:
- Какой буфер BUY, а какой SELL. У индикатора может быть несколько буферов; их порядок задаёт автор, а не цвет стрелки.
- Как выглядит «нет сигнала». На барах без стрелки в буфере лежит пустое значение. Обычно это EMPTY_VALUE (DBL_MAX), но некоторые индикаторы используют 0 или константу вроде −1. Если советник сравнивает не с тем значением, он видит сигнал на каждом баре.
- На каком баре появляется новая стрелка. Бар 0 — ещё формирующийся, бар 1 — последний закрытый. Многие индикаторы подтверждают сигнал только через несколько баров и рисуют его в прошлом. Советник, читающий бар 1 у такого индикатора, не увидит ни одной стрелки.
- Остаются ли стрелки на месте. Если индикатор сдвигает или удаляет стрелки на закрытых барах («перерисовывает»), история на графике выглядит лучше, чем то, что советник мог бы торговать в реальном времени.
Зная эти четыре факта, прочитать сигнал можно в несколько строк MQL5:
// один раз в OnInit() int h = iCustom(_Symbol, _Period, "Examples\\Fractals"); // один раз на новом баре double up[1], dn[1]; int shift = 3; // бар, на котором появляются новые стрелки if(CopyBuffer(h, 0, shift, 1, up) == 1 && CopyBuffer(h, 1, shift, 1, dn) == 1) { bool sell = (up[0] != EMPTY_VALUE && up[0] != 0.0); // буфер 0: верхний фрактал bool buy = (dn[0] != EMPTY_VALUE && dn[0] != 0.0); // буфер 1: нижний фрактал }
Сложность не в коде, а в том, чтобы найти правильные числа для индикатора, который писали не вы, — часто он есть у вас только в виде файла EX5. Ниже мы их измеряем, а не угадываем.
Шаг 1. Находим буферы
Откройте график EURUSD H1, добавьте из Навигатора Examples\Fractals, затем на тот же график — бесплатный Signal Buffer Inspector (Target selection: Auto). Он читает каждый буфер индикатора и определяет его тип.

Для Fractals таблица показывает:
- буфер 0 — ARROW SELL, уверенность в направлении 100 %;
- буфер 1 — ARROW BUY, уверенность в направлении 100 %;
- пустое значение — EMPTY_VALUE в обоих буферах;
- сдвиг — 3: новые фракталы появляются на баре 3 и никогда на баре 1, потому что фракталу нужны бары справа, прежде чем его можно нарисовать.
Сдвиг измеряется на новых барах, а не берётся из истории. На живом графике инспектору нужно дождаться нескольких новых баров; быстрее запустить его в визуальном режиме тестера стратегий, где сотни баров проходят за несколько минут.
Шаг 2. Проверяем перерисовку
Пока приходят новые бары, инспектор запоминает значения закрытых баров и потом сравнивает их. Fractals проверку прошёл: за 1 500 новых баров на закрытых барах не изменилось ни одно значение (статус STABLE).
Для сравнения — Examples\ZigZag на том же графике:

Все буферы помечены REPAINTS — в буфере 0 81 изменение, вплоть до 16 баров назад. ZigZag полезен, чтобы видеть структуру рынка, но его последняя точка двигается, пока колебание не подтвердится. Советник, торгующий его стрелки, в реальном времени видит не ту картину, что вы видите на истории. Инспектор увеличивает рекомендуемый сдвиг и выводит предупреждение, а не скрывает это.
Шаг 3. Экспортируем настройки
Нажмите Export .set. Инспектор запишет результат в общую папку терминала Files\SignalBufferInspector\SBT_Fractals_EURUSD_H1.set:
; Target: Examples\Fractals on EURUSD H1 ; BUY buffer 1 (STABLE (210 new, 0 changed)), SELL buffer 0 (STABLE (201 new, 0 changed)), shift 3, 1500 new bars observed InpSignalSource=1 InpSignalShift=3 InpInd1Path=Examples\Fractals InpInd1Params= InpInd1BuyBuffer=1 InpInd1SellBuffer=0
Это обычный файл настроек MetaTrader: в комментариях записано, что было измерено, а значения можно загрузить в советник.
Шаг 4. Загружаем в советник
Файл сделан для Signal Buffer Trader — советника, который торгует сигналы буферов со стоп-лоссом в каждом ордере. На графике нажмите Edit settings → Import from Inspector, проверьте значения и нажмите Apply. В тестере стратегий нажмите Загрузить на вкладке входных параметров и выберите тот же файл.

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

Шаг 5. Запускаем в тестере стратегий
Выберите советник, EURUSD H1, несколько месяцев истории и визуальный режим. Панель показывает, что советник видит на каждом баре: источник сигнала, сдвиг, фильтры, риск, стопы и решение по последнему бару.

Шаг 6. Читаем журнал решений
Самое полезное в первом тесте — не баланс, а проверка того, что советник читает сигнал так, как вы ожидаете. В журнале «Эксперты» по одной строке на бар:
SBT 2025.01.02 00:00 | sig=SELL(buf0=1.03646) | -> OPEN SELL 0.43 @ 1.03516 SL 1.03748 TP 1.03051 risk 99.76 USD, ticket 2 SBT 2025.01.02 01:00 | sig=none | -> no trade (no signal) SBT 2025.01.02 06:00 | sig=BUY(buf1=1.03442) | close #2 on opposite signal: done | -> OPEN BUY 0.48 @ 1.03719 SL 1.03516 TP 1.04125 risk 97.44 USD, ticket 4
В каждой строке видно, какой буфер и какое значение дали сигнал, что произошло с открытой позицией, ордер со стопом и целью и сумма под риском. Сравните несколько строк со стрелками на визуальном графике: если номера буферов или сдвиг были бы неверны, вы увидели бы это здесь в первые минуты, а не через несколько недель.
Прежде чем доверять результату
- Прогон выше — функциональная проверка, а не стратегия. Fractals сами по себе не являются торговой системой, и в этом тексте нет никаких утверждений о том, как такая настройка будет работать.
- Проверьте свой индикатор и настройки в тестере стратегий на нескольких инструментах и периодах, затем на демо-счёте и только потом на реальных деньгах.
- Если инспектор показывает REPAINTS, относитесь к стрелкам на истории с подозрением и оценивайте индикатор только по тестеру и демо.
- В каждой сделке используйте стоп-лосс и риск, который вы готовы потерять.
Итог
Автоматизация стрелочного индикатора сводится к четырём фактам: буфер BUY, буфер SELL, пустое значение и сдвиг — плюс знание того, перерисовывает ли индикатор стрелки. Их можно найти вручную через iCustom() и CopyBuffer(), как показано выше, или измерить с помощью Signal Buffer Inspector (бесплатно) и передать в Signal Buffer Trader одним файлом. В любом случае сначала проверьте журнал, а уже потом смотрите на баланс.
Раскрытие: я разработчик Signal Buffer Inspector и Signal Buffer Trader. Всё описанное выше можно сделать вручную с помощью кода из первого раздела.


