Магическое число (Magic Number) — это идентификатор, который можно назначить ордеру с помощью MQL4.
Когда вы работаете со скриптами, индикаторами или советниками, вам может понадобится одновременно управлять множеством ордеров. Когда вы открываете новый ордер в MetaTrader4, вы можете связать его с определенным идентификационным номером. Одно и тот же магическое число можно использовать для многих ордеров.
Чем может быть полезно магическое число (Magic number)?
В начале вашего торгового пути вы, вероятно, имеете дело только с одним или несколькими ордерами одновременно. Став более опытным трейдеров, вы можете увеличить количество открытых ордеров или стратегий, которые вы одновременно используете.
Когда вы автоматизируете свою торговлю через MQL4 с помощью Magic Number, необходимо выбрать, с какими ордерами она будет работать.
Магическое число можно использовать для:
- Разделения ордеров, которые открываются по разным торговым стратегиям.
- Размещения ордеров для одного и того же инструмента на разных таймфреймах.
- Для ордеров, которые открываются разными экспертами.
Чтобы привести пример, предположим, что у вас есть два советника, которые вы хотите запустить на EURUSD.
Один советник — скальпер, которые работает на 15-минутном графике, а другой будет работать на 1-часовом графике. Вы сможете назначить различные магические числа для ордеров, открываемых этими двумя советниками. Это позволит советникам работать только со своими ордерами.
Metatrader не позволяет работать с Magic Numbers в своем графическом интерфейсе. Вы можете работать с Magic Numbers только с помощью MQL4.
Как использовать магические числа?
В MQL4 есть встроенные функции для назначения и чтения магических чисел.
При открытии ордера с помощью функции OrderSend() одним из необязательных параметров является магическое число. Таким образом, с помощью этой функции вы связываете магическое число с ордером, который вы открываете. Когда вы выбираете ордер с помощью функции OrderSelect(), вы можете получить магическое число для выбранного заказа, используя функцию OrderMagicNumber().
В приведенном ниже примере показан код, который позволит вам использовать магическое число:
extern int MagicNumber=11223344; //Магическое число для ваших ордеров. //Когда вы отправляете ордера, вы указываете магическое число. OrderSend(Symbol(),Command,PositionSize,OpenPrice,Slip,SLPrice,TPPrice,"",MagicNumber,0,Green) //При сканировании открытых ордеров вы можете выбрать выполнение определенного действия только для ордеров, соответствующих вашему магическому числу. for(int i = 0; i<OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) { Print("Ошибка - ",GetLastError()); break; } //Если магическое число ордера соответствует магическому номеру, введенному в начале if(OrderMagicNumber()==MagicNumber){ //Выполнение определенного действия. } }