Категория
Платформа
Уровень
Начальный
Где применяется
Работа в MT5Оценка советникаРазработка стратегии

Советник

Автоматизированная торговая программа, написанная на MQL5, которая работает внутри MetaTrader 5 и открывает, изменяет и закрывает ордера по запрограммированным правилам без ручного вмешательства.

также: EA, Expert Advisor, торговый робот, торговый бот

Обновлено

Простыми словами

Программа, которая торгует за вас внутри MetaTrader. У неё нет ни суждения, ни памяти сверх того, что вы ей дали: она просыпается, когда её вызывает платформа, смотрит на те немногие вещи, ради которых была написана, и действует.

Почему это важно

Бэктесты, цифры просадки, magic number, время работы VPS — всё это существует потому, что ордера отправляет программа, а не человек. Понимание того, что платформа передаёт советнику и что от него скрывает, — это разница между правильным чтением результата и неприятной неожиданностью.

  • Он исполняет без колебаний, и в этом вся его ценность и весь его риск. Тот же набор правил, который никогда не пропускает верный сигнал, никогда и не замечает, что сегодня всё иначе.
  • Он видит узкий срез: цены своего инструмента, значения запрошенных индикаторов, собственные позиции и баланс счёта. Новости, котировки других брокеров и ваши остальные счета остаются за пределами этого окна, пока код сам их не запросит.
  • Он распространяется скомпилированным. Файл .ex5 работает, но не читается, поэтому уверенность покупателя должна опираться на опубликованные результаты тестов, а не на исходный код.
  • Он работает, только пока работает терминал. Советник на спящем ноутбуке — это советник, который не торгует, и в этом весь довод в пользу VPS.

В MetaTrader 5

Где это в MT5

  • Навигатор → Советники — скомпилированные советники, которые видит терминал
  • Файл → Открыть каталог данных → MQL5/Experts — там должен лежать файл .ex5, чтобы он появился в списке
  • Панель инструментов → Алготорговля — главный выключатель; советник с грустным лицом на графике заблокирован именно этой кнопкой
  • График → свойства советника (F7) → Входные параметры / Общие — параметры и разрешения для каждого советника
  • Вид → Тестер стратегий (Ctrl+R) — тот же советник, прогоняемый по историческим данным

Как это используют советники

  • Терминал вызывает OnInit() один раз при подключении, OnTick() на каждой входящей котировке по символу графика и OnDeinit() при удалении.
  • Работа обычно идёт по закрытым барам, а не по каждому тику: советник сравнивает время открытия текущего бара с сохранённым и сразу выходит, если нового бара не появилось.
  • Ордера уходят как заполненная структура MqlTradeRequest либо через обёртку CTrade, которая заполняет большую её часть за вас.
  • Каждый экземпляр помечает свои ордера magic number, чтобы управлять только собственными позициями: без этого два советника дерутся за одни и те же тикеты.

Типичные настройки

Параметр Обычное значение Примечание
Алготорговля (терминал) включено После установки выключено. Пока не включите, ничего не торгуется.
Разрешить алготорговлю (для советника, F7 → Общие) включено Это отдельное разрешение, не совпадающее с общим выключателем терминала.
Разрешить WebRequest для указанного URL выключено, если советнику это не нужно Нужно только советникам, которые тянут внешние данные; выдавайте по каждому URL, никогда огульно.
Таймфрейм графика таймфрейм, под который написан советник Стратегия M15 на графике H1 — это другая стратегия: OnTick срабатывает на каждом тике, но логика баров читает период графика.
MagicNumber уникальный для каждого запущенного экземпляра Не на продукт: два графика с одним и тем же советником требуют двух значений.

Частые эксплуатационные проблемы

  • Терминал закрыт, спит или перезапускается для обновления — советник просто не работает, и никакой ошибки при этом не записывается.
  • Расхождение имени символа между брокером и настройками (EURUSD против EURUSD.m) оставляет советник подключённым и безмолвным.
  • Недостаточно свободной маржи: OrderSend падает на каждой попытке, а советник продолжает пытаться, поэтому журнал заполняется, пока на счёте ничего не происходит.
  • Торговый контекст занят, когда несколько советников отправляют ордера одновременно, — перемежающиеся и трудновоспроизводимые сбои.
  • Советник тестировался у брокера с другой моделью исполнения или другим размером контракта и на реальном счёте ведёт себя иначе без единого изменения в коде.

Связанные функции MT5

OnInit() / OnDeinit()
Вызываются один раз при подключении и один раз при удалении — там проверяются входные параметры и создаются хендлы.
OnTick()
Вызывается на каждой входящей котировке по символу графика; основная точка входа.
OnTimer()
Вызывается через фиксированный интервал, заданный EventSetTimer(), — для работы, которая не должна зависеть от прихода тиков.
OrderSend(request, result)
Единственный вызов, отправляющий любую торговую операцию; её тип определяет структура запроса.
CTrade (Trade/Trade.mqh)
Обёртка стандартной библиотеки, которую большинство советников использует вместо ручного заполнения MqlTradeRequest.

Пример

Почти любой советник, сведённый к порядку, в котором его вызывает платформа. Ничто из этого не является стратегией — это рамка, внутри которой стратегия находится.

1. OnInit()
один раз, при подключении
Проверить входные параметры, создать хендлы индикаторов, задать magic number.
2. OnTick()
на каждой котировке
Сразу выйти, пока не сформировался новый бар, и только затем проверять правила.
3. OrderSend()
когда сработало правило
Одна заполненная MqlTradeRequest на операцию — открыть, изменить или закрыть.
4. OnDeinit()
один раз, при удалении
Освободить хендлы. Открытые позиции этим не закрываются — они остаются.

Удаление советника с графика не закрывает то, что он открыл. Позиции остаются, и управлять ими уже некому.

Расчёт if (iTime(_Symbol, PERIOD_CURRENT, 0) == lastBarTime) return;

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

Как это используется

Оценка чужого советника — это вопрос доказательств: скомпилированный файл не говорит ничего. Ниже — что именно нужно запрашивать.

  • Спросите, какие данные использовал бэктест и как он был смоделирован. Реальные тики и цифра качества моделирования что-то значат; неподписанная кривая капитала — нет.
  • Спросите количество сделок и период. Медианный опубликованный здесь советник закрыл 362 сделок за несколько лет; сорок сделок за четыре месяца — это анекдот.
  • Проверьте, держит ли стратегия убыточные позиции открытыми. Усреднение и сеточное восстановление рисуют прекрасные кривые до той самой корзины, которая не восстановится, и ни один коэффициент по закрытым сделкам об этом не предупредит.
  • Прогоните его на демо у своего брокера, прежде чем вкладывать деньги. Модель исполнения, спред, размер контракта и наименования символов различаются — и всё это меняет результат.
  • Дайте каждому экземпляру собственный magic number и запишите, какой из них какой, ещё до того как их станет больше двух.

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

Частые ошибки

Считать советник трейдером со способностью рассуждать

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

Считать, что результат бэктеста перенесётся на ваш счёт

Спред, комиссия, модель исполнения, размер контракта и набор символов — часть результата. Тест у одного брокера — доказательство про этого брокера; прогон на демо у вашего собственного — самый дешёвый способ увидеть, сколько из этого переносится.

Удалить советник, чтобы его остановить, и думать, что сделки тоже остановились

Отключение советника оставляет его открытые позиции там же, где они были. После этого их никто не сопровождает и не закрывает; они висят, пока не дойдут до стопа, цели или Stop Out.

Запускать несколько советников на одном счёте, не разделив их

Без разных magic number каждый советник считает любую позицию своей и они закрывают сделки друг друга. Сбой происходит молча: ни одной ошибки, просто результат, не соответствующий ни одной отдельной стратегии.

Подробнее

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

Определение описывает механизм, а запись описывает опыт. Четырнадцать опубликованных здесь советников публикуют полный список закрытых сделок — 9 702 сделок с 2019 года.

По 14 опубликованным советникамЗначение
Закрытых сделок9 702
Сделок на советник (медиана)362, от 108 до 4 725
Профит-фактор (медиана)1,39, от 1,27 до 1,52
Худшая серия убытков (медиана)6 сделок, худшая 14
Самый долгий период без нового максимума капитала (медиана)423 дней, худший 775
Проверенных запусков на реальном счёте0

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

Часто задаваемые вопросы

Что такое советник (Expert Advisor) в MetaTrader 5?
Программа, написанная на MQL5 и скомпилированная в файл .ex5, которая работает внутри терминала и торгует по своим правилам. Платформа вызывает её на каждой входящей котировке того графика, к которому она подключена, и она открывает, изменяет и закрывает ордера без человека за клавиатурой.
Нужно ли держать компьютер включённым, чтобы советник работал?
Да — советник работает внутри терминала, поэтому торгует только пока терминал запущен и подключён. Именно поэтому советники без присмотра обычно живут на VPS, а не на компьютере, который засыпает или перезагружается.
Можно ли прочитать стратегию внутри купленного советника?
Из файла .ex5 — нет. Скомпилированные советники работают, не раскрывая свою логику, и именно поэтому продавцы поставляют их в таком виде. Стратегия должна быть честно описана в карточке товара и подкреплена опубликованными результатами тестов.
Можно ли запускать несколько советников на одном счёте?
Да, и это обычная практика. Каждому экземпляру нужен свой magic number, чтобы он управлял только теми позициями, которые открыл сам, а счёту нужна свободная маржа сразу под все — стратегии ничего не знают друг о друге.