[MQL4] Функция проверяет допустимость объёма ордера

romanzif

romanzif

Местный
Команда форума
Администратор
Монет
119,838
Если ваш советник торгует динамическим лотом, то рекомендую перед открытием ордера проверять его корректность по спецификации счета.
На самом деле это лучше всегда делать, даже когда торгуете фиксированным лотом заданным в настройках.

Так, например, если в настройках объем = 0.01 лота, а счет на которые поставили советник поддерживает минимальный 0.1, то сделка не будет открыта.

Здесь можно либо вообще не открывать ордер, либо выводить предупреждение, либо советник будет автоматически брать минимально допустимое значение - решать вам, я приведу общую функции проверки.

Так же без такой проверки ваш робот не примут на маркет mql5

Код:
//+------------------------------------------------------------------+
//|  Проверяет объем ордера на корректность                    |
//+------------------------------------------------------------------+
bool CheckVolumeValue(double volume)//,string &description)
  {
//--- минимально допустимый объем для торговых операций
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   if(volume<min_volume)
     {
  //    description=StringFormat("Объем меньше минимально допустимого SYMBOL_VOLUME_MIN=%.2f",min_volume);
      return(false);
     }

//--- максимально допустимый объем для торговых операций
   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
   if(volume>max_volume)
     {
   //   description=StringFormat("Объем больше максимально допустимого SYMBOL_VOLUME_MAX=%.2f",max_volume);
      return(false);
     }

//--- получим минимальную градацию объема
   double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);

   int ratio=(int)MathRound(volume/volume_step);
   if(MathAbs(ratio*volume_step-volume)>0.0000001)
     {
  //    description=StringFormat("Объем не является кратным минимальной градации SYMBOL_VOLUME_STEP=%.2f, ближайший корректный объем %.2f",
  //                             volume_step,ratio*volume_step);
      return(false);
     }
 //  description="Корректное значение объема";
   return(true);
  }
//+------------------------------------------------------------------+

Вызывайте эту функцию перед OrderSend() в параметрах передаём объём который надо проверить.
 
  • Лайк
Реакции: DozorFX

Проверенные Брокеры

Реклама

Заработок онлайн

Назад
Верх