Пт. Апр 26th, 2024

Функция для проверки:

//Считаем объем
double getAllVolume()
  {
   int itotal=PositionsTotal();
   ulong uticket=-1;
   double dVolume=0;

   for(int i=itotal-1; i>=0; i--)
     {
      if(!(uticket=PositionGetTicket(i)))
         continue;

      if(PositionGetString(POSITION_SYMBOL)==_Symbol)
         dVolume+=PositionGetDouble(POSITION_VOLUME);
     }

   itotal=OrdersTotal();

   for(int i=itotal-1; i>=0; i--)
     {
      if(!(uticket=OrderGetTicket(i)))
         continue;

      if(OrderGetString(ORDER_SYMBOL)==_Symbol)
         dVolume+=OrderGetDouble(ORDER_VOLUME_CURRENT);
     }

   return dVolume;
  }

перед открытием сделки:

double max_volume=SymbolInfoDouble(m_name,SYMBOL_VOLUME_LIMIT);

      double current_lots=getAllVolume();

      if(max_volume>0 && max_volume-current_lots - открываемый сейчас лот <=0)
        {
         return 0; //Не открываем сделку
        }

Поделись с друзьями:

от drivermql

Один комментарий к “Исправляем ошибку Volume limit reached — превышение максимального объема открытых сделок (mql5)”

Добавить комментарий для Андрей Отменить ответ

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.