Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
//то есть если ордер БЫЛ ОТКРЫТ, то 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) ?"