Как выбрать ордер по magic? - страница 2

 

А что непроавильно в таком варианте? Условие если есть бай и если есть селл , вроде корректно пропсиано:

for(int k=OrdersTotal()-1;k>=0;k--)
     {
      RefreshRates();
      if((OrderSelect(k,SELECT_BY_POS,MODE_TRADES)==true && OrderType()==OP_BUY) &&
         (OrderSelect(k,SELECT_BY_POS,MODE_TRADES)==true && OrderType()==OP_SELL))
        {
         int tip=OrderType();
           {
            if(tip==OP_BUY)
              {
               bool check=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),0,0,clrNONE);
              }
            if(tip==OP_SELL)
              {
               bool check=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),0,0,clrNONE);
              }
           }
        }
     }

причем, если убрать, из условия одно из выражений например OrderSelect(k,SELECT_BY_POS,MODE_TRADES)==true && OrderType()==OP_BUY) , то при открытии продажи TP убирается.

 

Спасибо за подсказки, нашел у KimIV функцию  NumberOfPositions , которую удалось применить в моем случае, фрагмент рабочего кода ниже:

if(NumberOfPositions()==2)
     {
      for(int k=OrdersTotal()-1;k>=0;k--)
        {
         RefreshRates();
         if(OrderSelect(k,SELECT_BY_POS,MODE_TRADES)==true && OrderType()==OP_SELL)
           {
            bool check=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),0,0,clrNONE);
           }
         if(OrderSelect(k,SELECT_BY_POS,MODE_TRADES)==true && OrderType()==OP_BUY)
           {
            bool check=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),0,0,clrNONE);
           }
        }
     }

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

Благодарю за быстрые ответы.

Причина обращения: