В автоматизированной торговле на платформах MetaTrader 4/5 каждый советник (эксперт) использует магический номер – уникальный идентификатор, позволяющий отличать ордера, открытые этим советником, от ордеров, размещённых вручную или другими советниками. Правильное использование Magic Number — залог стабильной работы стратегии и удобного управления позициями.
Самое главное помнить, что
магический номер должен быть уникальным в пределах одного торгового счета. Если два советника используют одинаковый номер, они «переговорятся» за одни и те же ордера, что приводит к дублированию сделок, ошибочным закрытиям и потере контроля.
Что такое Magic Number?
Magic Number – это целое число (обычно 5‑10 цифр), которое записывается в поле magic структуры OrderSend. Платформа сохраняет его вместе с каждой сделкой, а советник читает его при проверке открытых ордеров.
Зачем нужен магический номер?
- Разделение ордеров – отделяет позиции советника от ручных сделок.
- Фильтрация – позволяет советнику обрабатывать только свои ордера.
- Отчётность – упрощает статистику и вывод журналов.
- Безопасность – исключает конфликт с другими советниками, работающими на том же счёте.
Как правильно задать Magic Number
- Выберите диапазон цифр, не используемый другими советниками. Часто берут 6‑значные числа, например
123456. - Добавьте параметр в
input‑секцию советника, чтобы менять его без перекомпиляции:
Затем при открытии ордера указывайте:
int ticket = OrderSend(Symbol, OP_BUY, lot, Ask, slippage, stopLoss, takeProfit, "MyEA", MagicNumber, 0, clrGreen);Как определить Magic Number уже работающего советника
Если советник уже запущен, его магический номер можно увидеть:
- В Терминале → Список ордеров – столбец «Magic» показывает номер для каждой позиции.
- С помощью скрипта‑утилиты, который пробегает по всем активным ордерам и выводит максимальный найденный номер:
int GetMaxMagic
{
int maxMagic = 0;
for(int i=OrdersTotal-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderMagicNumber > maxMagic)
maxMagic = OrderMagicNumber;
}
}
return maxMagic;
}
Частые ошибки при работе с Magic Number
- Дублирование номеров – несколько советников используют одно и то же значение.
- Слишком малое значение – может конфликтовать с системными (0) или пользовательскими небольшими номерами.
- Изменение в процессе работы – изменение Magic Number в уже открытых ордерах недоступно, необходимо закрыть позицию и открыть новую.
Рекомендации и лучшие практики
- Заводите центральный реестр номеров в виде таблицы (Google Sheets, Excel) и фиксируйте каждый новый советник.
- Используйте префикс + дата для генерации номера:
20260301(год‑месяц‑день) + случайные 2‑3 цифры. - Для тестирования в стратегии‑тестере задавайте отдельный номер, чтобы не смешивать с реальными сделками.
- В журнале советника всегда выводите
Print("Order opened, Magic=", MagicNumber);– это упрощает отладку.
Контакты для обращений
Если у вас возникли вопросы или проблемы, связанные с настройкой Magic Number, используйте нижеперечисленные каналы связи. Очень важно указать в письме/сообщении номер вашего счёта и используемый в советнике Magic Number – без этой информации мы не сможем быстро помочь.
- Техническая поддержка платформы MetaTrader: support@metaquotes.com – вопросы по API и ошибкам компиляции.
- Форум MQL5: https://www.mql5.com/ru/forum – сообщество разработчиков, готовых поделиться готовыми скриптами.
- Коммерческий отдел вашего брокера: телефон +7 (495) -23‑45‑67 – запросы по ограничениям на магические номера в рамках вашего аккаунта.
- Электронная почта проекта «MagicHelper»: info@magichandler.ru – индивидуальные консультации и настройка советников под ваш стиль торговли.
Магический номер – это простой, но критически важный элемент любой автоматизированной стратегии. Самое главное помнить, что его уникальность и корректное применение позволяют советникам работать без конфликтов, а трейдеру – держать чистый и понятный журнал сделок.
Следуя рекомендациям, приведённым в статье, вы избежите типичных проблем и сможете полностью контролировать работу своих советников.