Магическое число (Magic Number): как его использовать в MQL4?

Магическое число (Magic Number) — это идентификатор, который можно назначить ордеру с помощью MQL4.

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

Чем может быть полезно магическое число (Magic number)?

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

Когда вы автоматизируете свою торговлю через MQL4 с помощью Magic Number, необходимо выбрать, с какими ордерами она будет работать.

магическое число - 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){
      //Выполнение определенного действия.
   }
}