Форекс стратегии, торговые роботы, индикаторы

Закрывает рыночные ордера (позиции) в порядке убывания или возрастания лота

Функция закрывает позиции в порядке возрастания или убывания лота.


void ClosePosLotsSort(
                      string sy="",               // имя символа ("" - все символы)
                      int ty=-1,                  // тип ордера (-1 - все типы ордеров)
                      int mg=-1,                  // магическое число ордеров (-1 - все магики)
                      int direction=MODE_DESCEND) // направление сортировки
  {
   double lo_ti[][2];
   int i,num=0;
   for( i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==sy || sy=="")
           {
            if(mg<0 || OrderMagicNumber()==mg)
              {
              if(ty<0 || OrderType()==ty)
                 {
                 if(OrderType()<2)
                    {
                    num++;
                    ArrayResize(lo_ti,num);
                    lo_ti[num-1][0]=OrderLots();
                    lo_ti[num-1][1]=OrderTicket();
                    }
                 }
              }
           }
        }
     }
   if(num>0)
     {
      ArraySort(lo_ti,WHOLE_ARRAY,0,direction);
      for( i=0; i<num; i++)
        {
         if(OrderSelect((int)lo_ti[i][1],SELECT_BY_TICKET))
           {
            if(OrderCloseTime()==0)
               ClosePosBySelect();
           }
        }
     }
  }

Параметры

  • sy - символьное имя торгового инструмента позиций. При пустом значении, функция будет проверять все позиции, со всех доступных символов;
  • ty - тип ордера:
    • 0 - Buy;
    • 1 - Sell;
    При значении -1, учитываться будут все ордера на счете;
  • mg - магическое число ордеров, при значении -1 будут учитываться ордера не зависимо от magic.
  • direction - направление сортировки лота. Возможные варианты:
    • MODE_ASCEND - закрытие позиций происходит в порядке возрастания;
    • MODE_DESCEND - закрытие позиций происходит в порядке убывания.

Закрытие позиций осуществляется при помощи функции закрытия позиций ClosePosBySelect().

Смотреть так же:


Комментарии ()