SelectOrder ----- вроде всё просто, но непонятно

 
в своём модуле я кэширую номер ордера в переменной NOrd

если номер ордера есть, а самого ордера нет (ТО ЕСТЬ Я ОБРАЩАЮСЬ К ОРДЕРУ, КОТОРЫЙ БЫЛ!!!!!, но он закрыт или отменён)
это значит, что произошёл либо StopLoss либо TakeProfit либо ордер был закрыт вручную



if(!OrderSelect(NOrd,SELECT_BY_TICKET))
{
//в этом случае OrderSelect почему-то возвращает TRUE -------------------------------------------------
//и GetLastError == 0!!!!! -------------------------------------------------

Print("Ордер " + DoubleToStr(NOrd,0)+" по символу "+Symbol()+" найден не был");
NOrd=0;
GlobalVariableDel(gvNOrdName);
Print("Переменные по символу "+Symbol()+" удалены");
}

Иными словами - ПОЧЕМУ ЕСТЬ ОРДЕР, КОТОРОГО НЕТ и КАК СДЕЛАТЬ ТАК, ЧТОБЫ ЕГО НЕ БЫЛО или КАК РАСПОЗНАТЬ, ЧТО ЭТОТ ОРДЕР УДАЛЁН?
 
когда Вы выбираете ордер по тикету, то он может быть выбран либо из списка открытых ордеров, либо из истории. закрытый ордер однозначно определяется по ненулевому OrderCloseTime
 
да. уже попробовал... просто думается, что понятнее для юзера было бы если б OrderSelect вернул не просто TRUE или FALSE а статус ордера