OrderCloseTime - страница 2

 
if(NOrd==0) //это МОЯ переменная образуется при открытии ордера
//то есть если ордер БЫЛ ОТКРЫТ, то NOrd!=0 (не равен нулю)
{
//если номер ордера==0 считаем, что ордера не было
}
else
{
//пытаюсь определить наличие ордера
OrderSelect(NOrd,SELECT_BY_TICKET);
//здесь проверять бессмыслено, потому что ОРДЕР-ТАКИ БЫЛ ОТКРЫТ
//и он либо ВСЁ ЕЩЁ ОТКРЫТ, либо ЗАКРЫТ каким-либо способом
orderclose=OrderCloseTime();
Print("Время закрытия ордера "+DoubleToStr(NOrd,0)+" по символу "+Symbol()+" = "+TimeToStr (orderclose,TIME_DATE));
if(orderclose>0) //ТАК ВОТ ЭТО УСЛОВИЕ ИСПОЛНЯЕТСЯ ВСЕГДА!!!!
//это значит, что произошёл либо StopLoss либо TakeProfit либо ордер был закрыт вручную
Print("Ордер " + DoubleToStr(NOrd,0)+" по символу "+Symbol()+" закрыт");
}
 
     if(NOrd==0)  //это МОЯ переменная образуется при открытии ордера         <- а чему равна эта переменная?
                         //то есть если ордер БЫЛ ОТКРЫТ, то NOrd!=0 (не равен нулю)
         {
         //если номер ордера==0 считаем, что ордера не было
         }
     else
       {
         //пытаюсь определить наличие ордера
         OrderSelect(NOrd,SELECT_BY_TICKET);
         //здесь проверять бессмыслено, потому что ОРДЕР-ТАКИ БЫЛ ОТКРЫТ <- а у тебя всегда есть ордер в рынке? в любом случае даже если NOrd=0 могут быть ордера с таким номером потому что их индексация начинается с 0 и проверка вовсе не бессмыслена (каждый может ошибаться, а проверка подтвердит, а если считаешь лишним , то ее никогда не поздно удалить , после обкатки кода и 100% уверенности в том что здесь эта проверка лишняя)
         //и он либо ВСЁ ЕЩЁ ОТКРЫТ, либо ЗАКРЫТ каким-либо способом
         orderclose=OrderCloseTime();
         Print("Время закрытия ордера "+DoubleToStr(NOrd,0)+" по символу "+Symbol()+" = "+TimeToStr         (orderclose,TIME_DATE));
          if(orderclose>0)  //ТАК ВОТ ЭТО УСЛОВИЕ ИСПОЛНЯЕТСЯ ВСЕГДА!!!! <- в твоем коде при наличии 1 закрытого ордера оно и будет исполняться всегда, т.к. даже если NOrd=0 то будет возвращаться время закрытия 1 ордера
           //это значит, что произошёл либо StopLoss либо TakeProfit либо ордер был закрыт вручную
            Print("Ордер " + DoubleToStr(NOrd,0)+" по символу "+Symbol()+" закрыт");
       } 


в общем я выложил код воспользуйся им "Как узнать время последнего закрытого ордера из истории (в эксперте для META TRADER 4) ?"

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