Запара с OrdersHistoryTotal()

 

Существует такая конструкция:

if(tf_15)
  { 
    int last_close_order_15=0;
    if(TotalTradeFrame(MagicNumber_15)==0) 
      {
        if(OrdersHistoryTotal()!=0)
          {
            for(k=OrdersHistoryTotal()-1;k<=OrdersHistoryTotal();k--)
                {
                  if(OrderMagicNumber() !=MagicNumber_15) continue; 
                  if(OrderMagicNumber()==MagicNumber_15)
                    { 
                      OrderSelect(k, SELECT_BY_POS,MODE_HISTORY);
                      last_close_order_15=OrderTicket();
                      break;
                     } 
                 }
           }  
        OrderSelect(last_close_order_15,SELECT_BY_TICKET,MODE_HISTORY); 

       -  -  -  -  -  -  -  -  -  

Эта конструкция полностью работоспособна. Но только в случае, если на поле нету дргих игроков (т.е. если нет рыночных ордеров с другим  MagicNumber )

Если же таковые имеються - тестер полностью останавливаеться. При этом : ордера с MagicNumber не равным MagicNumber_15 отбрасываются и GetLastError()=0.

Мне же нужно найти последний ордер в истории по каждому  MagicNumber. Остатки мозгов сплавились в одну непонятную массу. Подскажите как это можно решить.

 
это совершенно не работоспособный код. Во первых цикл составлен не верно. Чтобы выявлять последний ордер с разными магиками нужно знать время последнего посчитанного ордера.
 
no_namer:

- - - - - - - - -

Эта конструкция полностью работоспособна. Но только в случае, если на поле нету дргих игроков (т.е. если нет рыночных ордеров с другим MagicNumber )

Если же таковые имеються - тестер полностью останавливаеться. При этом : ордера с MagicNumber не равным MagicNumber_15 отбрасываются и GetLastError()=0.

Мне же нужно найти последний ордер в истории по каждому MagicNumber. Остатки мозгов сплавились в одну непонятную массу. Подскажите как это можно решить.

Как минимум, цикл с ошибкой:

for(k=OrdersHistoryTotal()-1;k<=OrdersHistoryTotal();k--)

а надо:

for(k=OrdersHistoryTotal()-1;k>=0;k--)
 
PapaYozh:

Как минимум, цикл с ошибкой:

а надо:



 Дело сдвинулось. Поиграемся дальше.

Спасибо большое! 

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