OrderCloseTime

 
0 соответствует 00:00:00 1 января 1970 года (точка отсчета времени в МТ), для того чтобы получить время закрытия конкретного ордера , нужно его предварительно ордер селект,
Если время закрытого ордера не 0, тогда выбранный ордер был закрыт и найден в истории счета.
, а раз он равен нулю , т.е. 00:00:00 1 января 1970 года, то такой ордер не найден.
 
0 соответствует 00:00:00 1 января 1970 года (точка отсчета времени в МТ), для того чтобы получить время закрытия конкретного ордера , нужно его предварительно ордер селект,
Если время закрытого ордера не 0, тогда выбранный ордер был закрыт и найден в истории счета.
, а раз он равен нулю , т.е. 00:00:00 1 января 1970 года, то такой ордер не найден.


то есть в примере ошибка?
 
не ошибка. счёт времени ведётся в секундах, начиная с 0 часов 1 января 1970 года. это - так называемое "юниксовое время". однако, в нашей системе существует специальное значение времени 0. открытый ордер не может иметь времени закрытия - его ещё никто не закрывал. 0 как раз и сигнализирует об отсутствии времени закрытия.
 
не ошибка. счёт времени ведётся в секундах, начиная с 0 часов 1 января 1970 года. это - так называемое "юниксовое время". однако, в нашей системе существует специальное значение времени 0. открытый ордер не может иметь времени закрытия - его ещё никто не закрывал. 0 как раз и сигнализирует об отсутствии времени закрытия.


так с нулём не сравнивается...!
 
не ошибка. счёт времени ведётся в секундах, начиная с 0 часов 1 января 1970 года. это - так называемое "юниксовое время". однако, в нашей системе существует специальное значение времени 0. открытый ордер не может иметь времени закрытия - его ещё никто не закрывал. 0 как раз и сигнализирует об отсутствии времени закрытия.


так с нулём не сравнивается...! то есть if(OrderCloseTime()>0) не работает
 
в своем посте я говорил что нужно из истории (закрытые ордера) сначала выбрать ордер (функция ордер селект), а затем у него спрашивать время его закрытия, Слава уточнил твою позицию т.к. она еще не закрыта даже если ты у нее спросишь время закрытия она ответит что еще не закрыта. 0 возвращается если у выбранного ордера (ордер селект) еще его нет , т.е. он еще не закрыт, ну и если ты смотришь историю то это означает что такого ордера нет, иначе возвратилось бы время закрытия.
  if(OrderSelect(10,SELECT_BY_POS,MODE_HISTORY)==true)  <--- проверка "есть ли выбранный ордер в истории?"
    {
     datetime ctm=OrderCloseTime();    <--- здесь переменной ctm присваивается значения времени закрытия выбранного ордера 
     if(ctm>0)                         <--- это проверка найден ли был ордер 
       Print("close time for the order 10 ", ctm);
    }


пример в словаре конечно содержит опечатку вместо if(ctm>0) стоит if(datetime>0), ну и с логикой тоже перемудрили дважды проверяют сначала при выборе и затем при извлечении времени из выбранного ордера (а он взят в истории значит закрыт или удален), но во-первых перевод делал такой же пользователь как и мы, во-вторых help дорабатывается, исправляется :) наверное так понятнее?

 
выбор ордера я намеренно опустил как само собой разумеющееся (хоть и неудобно - можно было бы задавать номер в OrderCloseTime())

логику я тоже усвоил, только

datetime ctm=OrderCloseTime();
if(ctm>0) <---- условие ВСЕГДА выполняется если ордер БЫЛ
Print("close time for the order 10 ", ctm);
 
if(ctm>0) <---- условие ВСЕГДА выполняется если ордер БЫЛ

кроме того он должен быть "текущим выбранным" (курент селектед), если на нем не спозиционироваться, то возвратит 0.
 
это как?
OrderSelect недостаточно для выбора ордера?
 
да именно ордер селект