Заметил глюк: открывается 2 ордера по одной и той же цене - страница 2

 
religare:

Добрый день, профессионалам!

Заметил ситуацию, когда открывается 2 одинаковых по лоту ордера по одной цене. В принципе в моем советнике такого не должно быть по нескольким причинам (не буду вдаваться в подробности).

Хочу отследить момент, когда это происходит. А для этого нужно перебирать открытые и отложенные ордера по признаку: одна цена, одинаковый лот и одинаковый тип - выводить сообщение.

Подскажите, как сделать в коде.

Заранее благодарю!


Ну а просто в журнале посмотреть, без придумывания всяких кодов?

А признак одна цена? Вызывая OrderSend Вы в нем в обязательном порядке указываете Slippage. Сравнивание на абсолютное равенство цен открытия зыбко как-то.

 

Покумекал: такой вариант будет работать. Сам на свой вопрос ответил. Может кому пригодится.

for(i=1; i<=OrdersTotal(); i++)
   {
        if(!OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)) continue;
        if(OrderSymbol()!=SymbolMax[nnnn]) continue;
        OrderOpen=OrderOpenPrice();
        OrderType1=OrderType();
        OrderLot1=OrderLots();
        for(w=0, q=1; q<=OrdersTotal(); q++)
          {
            if(!OrderSelect(q-1,SELECT_BY_POS,MODE_TRADES)) continue;
            if(OrderSymbol()!=SymbolMax[nnnn]) continue;
            if(OrderOpen==OrderOpenPrice() && OrderType1==OrderType() && OrderLot1==OrderLots()) 
              {
                if(w==1) txt27="Ордер дублируется. Валют. пара: "+SymbolMax[nnnn]+". Тип: "+OrderType()+". Лот: "+OrderLots()+". Цена: "+OrderOpenPrice()+".";
                w=1;
                //Print("Ордер дублируется. Валют. пара: ",SymbolMax[nnnn],". Тип: ",OrderType(),". Лот: ",OrderLots(),". Цена: ",OrderOpenPrice(),".");         
              }
          }
   }
Причина обращения: