Чт. Ноя 21st, 2024

Функции определения последнего лота

Функция определения последнего лота в истории ордеров

Функция определяет, каким лотом был совершен последний лот в истории. Применяется, например, при увеличении следующего объема лота при предыдущем убытке.

double FindLastLots()
  {
   double oldlots;
   int oldticket;
   ticket=0;

   for(int i=OrdersHistoryTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            oldticket=OrderTicket();
            if(oldticket>ticket)
              {
               oldlots= OrderLots();
               ticket = oldticket;
              }
           }
        }
     }
   return(oldlots);
  }

Функция определения последнего лота в открытых ордерах

Функция отличается не много. Вместо OrdersHistoryTotal() — общее количество ордеров в истории, пишем OrdersTotal() — общее количество ордеров в рынке (отложенные ордера тоже считаются). Также меняем аргументы в функции OrderSelect() — вместо MODE_HISTORY пишем MODE_TRADES, т.е. выбираем ордер среди открытых и отложенных:

double FindLastLots()
  {
   double oldlots;
   int oldticket;
   ticket=0;

   for(int i=OrdersTotal()-1; i>=0; i--) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            oldticket=OrderTicket();
            if(oldticket>ticket)
              {
               oldlots= OrderLots();
               ticket = oldticket;
              }
           }
        }
     }
   return(oldlots);
  }

от drivermql

Один комментарий к “Функции определения последнего лота”

Добавить комментарий

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

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