модифицировать ордер

 

как только отложенный ордер OP_BUYLIMIT с маг номенором 333 станет OP_BUY , мне нужно модифицировать другой OP_BUY ордер магом 444

int ch;
for(cnt=OrdersTotal()-1;cnt>=0;cnt--)   {
        if (OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))    {
           if (OrderSymbol()!=Symbol()) continue; 
           if (OrderType()==OP_BUY) {
               if (OrderMagicNumber()==333)
                     { 
                        ВОТ ЗДЕСЬ как сделать OrderSelect() с маг номером 444
                        int ticket=OrderTicket();
                        OrderModify(ticket, OrderOpenPrice(), OrderOpenPrice()-SL, OrderOpenPrice()+TP, 0, Red);
                                             
                      }  
               }
          }
        }
 
sultan:

как только отложенный ордер OP_BUYLIMIT с маг номенором 333 станет OP_BUY , мне нужно модифицировать другой OP_BUY ордер магом 444

int ch;
for(cnt=OrdersTotal()-1;cnt>=0;cnt--)   {
        if (OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))    {
           if (OrderSymbol()!=Symbol()) continue; 
           if (OrderType()==OP_BUY) {
               if (OrderMagicNumber()==333)
                     { 
                        ВОТ ЗДЕСЬ как сделать OrderSelect() с маг номером 444
                        int ticket=OrderTicket();
                        OrderModify(ticket, OrderOpenPrice(), OrderOpenPrice()-SL, OrderOpenPrice()+TP, 0, Red);
                                             
                      }  
               }
          }
        }

Можно делать через пользовательскую функцию, а магик передавать как параметр. Конечно предварительно проверив изменение статуса ордера.
 
sultan писал (а):
как только отложенный ордер OP_BUYLIMIT с маг номенором 333 станет OP_BUY , мне нужно модифицировать другой OP_BUY ордер магом 444

Предлагаю сначала алгоритмизировать:

Если существует OP_BUY с магиком 333, то модифицировать OP_BUY с магиком 444.

С модификацией, надеюсь, сами справитесь. А вот для "существует" подарю свою функцию:

//+----------------------------------------------------------------------------+
//|  Возвращает флаг существования позиций                                     |
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" - текущий символ)                   |
//|    op - операция                   (-1 - любая позиция)                    |
//|    mn - MagicNumber                (-1 - любой магик)                      |
//+----------------------------------------------------------------------------+
bool ExistPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal();
 
  if (sy=="") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) return(True);
          }
        }
      }
    }
  }
  return(False);
}

Как применить? Напишите свою функцию для модификации позиций и комбинируйте с моей:

if (ExistPositions("", OP_BUY, 333)) ModifyOrder("", OP_BUY, 444);
Ну как Вам простота решения? :-)
 
спасибо KimIV .