Market closed - страница 2 123456789...14 Новый комментарий prostotrader 2017.01.13 23:17 #11 Дeмаю, что нужно поменять проверку торгового времени так:bool CheckExchTime(){ MqlTick cur_tick[1]; MqlDateTime cur_time; if(CopyTicks(Symbol(), cur_tick, COPY_TICKS_INFO, 0, 1)==1) { TimeToStruct(cur_tick[0].time, cur_time); ulong trade_time = cur_time.hour * 3600 + cur_time.min * 60 + cur_time.sec; if(((trade_time >= time_st_mon) && (trade_time < 50370)) || ((trade_time >= time_st_day) && (trade_time < 67470)) || ((trade_time >= time_st_evn) && (trade_time < 85770))) { return(true); } } return(false);} Синхронизация локального времени Windows Проверка доступности рынка Ошибки, баги, вопросы Sergey Chalyshev 2017.01.14 02:24 #12 prostotrader: Серёж!Прочти справку по TimeCurrent - там написано, что это время СЕРВЕРА Возвращает последнее известное время сервера, время прихода последней котировки по одному из выбранных в "Обзоре рынка" символов.Если нет тиков, в выходные или не торговое время, TimeCurrent не меняется.А TimeTradeServer не работает, показывает локальное время компьютера.Легко проверить запустив советника://+------------------------------------------------------------------+int OnInit() {//--- create timer EventSetTimer(1); return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+void OnDeinit(const int reason) {//--- destroy timer EventKillTimer(); }//+------------------------------------------------------------------+void OnTimer() { Comment( "\n TimeCurrent: ",TimeCurrent(), "\n TimeTradeServer: ",TimeTradeServer(), "\n TimeLocal: ",TimeLocal(), ""); }//+------------------------------------------------------------------+При изменении времени на компьютере TimeTradeServer тоже меняется и показывает компьютерное время TimeLocal. Ошибки, баги, вопросы TimeCurrent() - забавный глюк Как установить временную зону prostotrader 2017.01.14 10:05 #13 Sergey Chalyshev: Если нет тиков, в выходные или не торговое время, TimeCurrent не меняется.А TimeTradeServer не работает, показывает локальное время компьютера.Легко проверить запустив советника://+------------------------------------------------------------------+int OnInit() {//--- create timer EventSetTimer(1); return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+void OnDeinit(const int reason) {//--- destroy timer EventKillTimer(); }//+------------------------------------------------------------------+void OnTimer() { Comment( "\n TimeCurrent: ",TimeCurrent(), "\n TimeTradeServer: ",TimeTradeServer(), "\n TimeLocal: ",TimeLocal(), ""); }//+------------------------------------------------------------------+При изменении времени на компьютере TimeTradeServer тоже меняется и показывает компьютерное время TimeLocal.А что мешает сначала проверить торговое время через TimeTradeServer, а затем (если время торговое) для более точной проверки использоватьфункцияю, которую я написал выше? ДобавленоХотя, конечно, это не выход, потому что котировок по данному символу может и не быть :( Как кодировать? Полторы минуты разницы между Особенности языка mql5, тонкости Sergey Gritsay 2017.01.16 07:27 #14 Немного поломал голову и написал такой вариант, кто что думает о данной реализации . //+------------------------------------------------------------------+//| test03.mq5 |//| Sergey Gritsay |//| https://www.mql5.com/ru/users/sergey1294 |//+------------------------------------------------------------------+#property copyright "Sergey Gritsay"#property link "https://www.mql5.com/ru/users/sergey1294"#property version "1.00"//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+void OnStart() {//--- if(CheckExchTime())Print("Торговля разрешена"); else Print("Торговля запрещена"); }//+------------------------------------------------------------------+bool CheckExchTime() { MqlTick last_tick; MqlDateTime last_time; MqlDateTime start_time; MqlDateTime end_time; datetime trade_time_start=0; datetime trade_time_end=0; datetime start=0; datetime end=0; ResetLastError(); if(SymbolInfoTick(_Symbol,last_tick)) { TimeToStruct(last_tick.time,last_time); Print(last_tick.time,": Bid = ",last_tick.bid," Ask = ",last_tick.ask," Last = ",last_tick.last," Volume = ",last_tick.volume); if(SymbolInfoSessionTrade(_Symbol,(ENUM_DAY_OF_WEEK)last_time.day_of_week,0,trade_time_start,trade_time_end)) { TimeToStruct(trade_time_start,start_time); TimeToStruct(trade_time_end,end_time); start=__DATE__+(start_time.hour*60+start_time.min)*60; end=__DATE__+(end_time.hour*60+end_time.min)*60; Print("trade_time_start = ",trade_time_start," trade_time_end = ",trade_time_end); Print(start," - ",end); if(start==end)return(true); if(last_tick.time>start && last_tick.time<end)return(true); } else Print("SymbolInfoSessionTrade(0) failed, error = ",GetLastError()); if(SymbolInfoSessionTrade(_Symbol,(ENUM_DAY_OF_WEEK)last_time.day_of_week,1,trade_time_start,trade_time_end)) { TimeToStruct(trade_time_start,start_time); TimeToStruct(trade_time_end,end_time); start=__DATE__+(start_time.hour*60+start_time.min)*60; end=__DATE__+(end_time.hour*60+end_time.min)*60; Print("trade_time_start = ",trade_time_start," trade_time_end = ",trade_time_end); Print(start," - ",end); if(start==end)return(true); if(last_tick.time>start && last_tick.time<end)return(true); } else Print("SymbolInfoSessionTrade(1) failed, error = ",GetLastError()); } else Print("SymbolInfoTick() failed, error = ",GetLastError()); return(false); }//+------------------------------------------------------------------+ ... Проверка доступности рынка Любые вопросы новичков по Ошибки, баги, вопросы Denis Kirichenko 2017.01.16 08:38 #15 prostotrader: Ребята разработчики!Ну когда же Вы синхронизируете время терминала с временем Биржи?Микалас, это вопрос точно не к разрабам. Этим занимаются админы брокера. В них нужно целиться :-)) Sergey Gritsay 2017.01.16 09:20 #16 Еще немного поколдовав над кодом, получилось вот что. //+------------------------------------------------------------------+//| test06.mq5 |//| Sergey Gritsay |//| https://www.mql5.com/ru/users/sergey1294 |//+------------------------------------------------------------------+#property copyright "Sergey Gritsay"#property link "https://www.mql5.com/ru/users/sergey1294"#property version "1.00"//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit() {//--- create timer EventSetMillisecondTimer(1);//--- return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+void OnDeinit(const int reason) {//--- destroy timer EventKillTimer(); }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+void OnTick() {//--- }//+------------------------------------------------------------------+//| Timer function |//+------------------------------------------------------------------+void OnTimer() {//--- string text=NULL; int symbol_total=SymbolsTotal(true); for(int i=0; i<symbol_total; i++) { string symbol=SymbolName(i,true); if(CheckExchTime(symbol,TimeCurrent()))text+="\n"+symbol+": Торговля разрешена"; else text+="\n"+symbol+": Торговля запрещена"; } Comment(text); }//+------------------------------------------------------------------+bool CheckExchTime(string symbol,datetime times) { MqlDateTime last_time; MqlDateTime start_time; MqlDateTime end_time; datetime trade_time_start=0; datetime trade_time_end=0; datetime start=0; datetime end=0; ResetLastError(); datetime expiration=(datetime)SymbolInfoInteger(symbol,SYMBOL_EXPIRATION_TIME); if(expiration!=0 && times>=expiration)return(false); TimeToStruct(times,last_time); if(SymbolInfoSessionTrade(symbol,(ENUM_DAY_OF_WEEK)last_time.day_of_week,0,trade_time_start,trade_time_end)) { TimeToStruct(trade_time_start,start_time); TimeToStruct(trade_time_end,end_time); start=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)start_time.hour+":"+(string)start_time.min+":00"); end=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)end_time.hour+":"+(string)end_time.min+":00"); if(start==end)return(true); if(times>start && times<end)return(true); }//else Print("SymbolInfoSessionTrade(0) failed, error = ",GetLastError()); if(SymbolInfoSessionTrade(symbol,(ENUM_DAY_OF_WEEK)last_time.day_of_week,1,trade_time_start,trade_time_end)) { TimeToStruct(trade_time_start,start_time); TimeToStruct(trade_time_end,end_time); start=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)start_time.hour+":"+(string)start_time.min+":00"); end=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)end_time.hour+":"+(string)end_time.min+":00"); if(start==end)return(true); if(times>start && times<end)return(true); }//else Print("SymbolInfoSessionTrade(1) failed, error = ",GetLastError()); return(false); }//+------------------------------------------------------------------+ резултат Проверка доступности рынка Любой вопрос новичка, чтоб Любые вопросы новичков по prostotrader 2017.01.16 13:34 #17 Sergey Gritsay: Еще немного поколдовав над кодом, получилось вот что.Вы вообще понимаете о чём идёт речь? Sergey Gritsay 2017.01.16 13:53 #18 prostotrader: Вы вообще понимаете о чём идёт речь?Может и не совсем понял, я понял как, нужно решение что бы не попадать на закрытие рынка вне торговое время биржи. prostotrader 2017.01.16 13:58 #19 Sergey Gritsay: Может и не совсем понял, я понял как, нужно решение что бы не попадать на закрытие рынка вне торговое время биржи.Решения не от программеров, а от разработчиков (или брокера, если от него, Брокера, это зависит)Код, который Вы привели, не проверяет ТЕКУЩЕЕ время БИРЖИ prostotrader 2017.01.16 14:42 #20 Пока, остановился на этом решенииbool CheckTradingTime(MqlDateTime &tick_time){ datetime lk_time = TimeTradeServer(tick_time); if ( ( tick_time.day_of_week == int(FirstDay)) || ( tick_time.day_of_week == int(SecondDay)))//выходные { return(false); }#ifdef DEBUG if ((tick_time.hour >= 0) && (tick_time.hour < 6)) // DEBUG 6-00 { return(false); }#else if ((tick_time.hour >= 0) && (tick_time.hour < 10)) { return(false); }#endif// 13 * 3600 + 59 * 60 + 30 = 50370 - 13:59:30// 14 * 3600 = 50400 - 14:00:00// 14 * 3600 + 30 = 50430 - 14:00:30// 14 * 3600 + 60 = 50460 - 14:01:00// 18 * 3600 + 44 * 60 + 30 = 67470 - 18:44:30// 18 * 3600 + 45 * 60 = 67500 - 18:45:00// 18 * 3600 + 45 * 60 + 30 = 67530 - 18:45:30// 18 * 3600 + 46 * 60 = 67560 - 18:46:00// 19 * 3600 = 68400 - 19:00:00// 19 * 3600 + 60 = 68460 - 19:01:00 // 23 * 3600 + 49 * 60 + 30 = 85770 - 23:49:30// 23 * 3600 + 50 * 60 = 85800 - 23:50:00// 23 * 3600 + 50 * 60 + 30 = 85830 - 23:50:30// 23 * 3600 + 51 * 60 = 85860 - 23:51:00//--- lk_time = TimeCurrent(tick_time); ulong trade_time = tick_time.hour * 3600 + tick_time.min * 60 + tick_time.sec; //--- //10:00:02 if(((trade_time >= time_st_mon) && (trade_time < 50370)) || ((trade_time >= time_st_day) && (trade_time < 67470)) || ((trade_time >= time_st_evn) && (trade_time < 85770))) { return(true); }return(false); } Сначала беру TimeTradeServer - получаю текущее "грязное" времяПроверяю на выходные и время (торговое), которое "перекрывает" все сессии,а затем использую TimeCurrentтекущее время сервера, для проверки времени внутри сессий. ДобавленоНо у этой проверки есть один существенный недостаток.Если локальное время компьютера больше времени сервера, то будет всё нормально, авот если локальное внемя меньше, то появляется большая проблема - мы будемпропускать начало торгов на разницу между временем торгового сервера и локального времени :( Поэтому нужно, чтобы TimeCurrentвсегда возврашала время сервера, а не только время последней известной котировки. ДобавленоЕщё один недостатокВ клиринг не приходят котировки, поэтому использование TimeCurrent в клиринг(например для снятия отложенных ордеров) бессмыслено :( Синхронизация локального времени Windows Как правильно выяснить, что Система ASCTrend 123456789...14 Новый комментарий
Дeмаю, что нужно поменять проверку торгового времени так:
{
MqlTick cur_tick[1];
MqlDateTime cur_time;
if(CopyTicks(Symbol(), cur_tick, COPY_TICKS_INFO, 0, 1)==1)
{
TimeToStruct(cur_tick[0].time, cur_time);
ulong trade_time = cur_time.hour * 3600 + cur_time.min * 60 + cur_time.sec;
if(((trade_time >= time_st_mon) && (trade_time < 50370)) ||
((trade_time >= time_st_day) && (trade_time < 67470)) ||
((trade_time >= time_st_evn) && (trade_time < 85770)))
{
return(true);
}
}
return(false);
}
Серёж!
Прочти справку по TimeCurrent - там написано, что это время СЕРВЕРА
Если нет тиков, в выходные или не торговое время, TimeCurrent не меняется.
А TimeTradeServer не работает, показывает локальное время компьютера.
Легко проверить запустив советника:
int OnInit()
{
//--- create timer
EventSetTimer(1);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
}
//+------------------------------------------------------------------+
void OnTimer()
{
Comment(
"\n TimeCurrent: ",TimeCurrent(),
"\n TimeTradeServer: ",TimeTradeServer(),
"\n TimeLocal: ",TimeLocal(),
"");
}
//+------------------------------------------------------------------+
При изменении времени на компьютере TimeTradeServer тоже меняется и показывает компьютерное время TimeLocal.
Если нет тиков, в выходные или не торговое время, TimeCurrent не меняется.
А TimeTradeServer не работает, показывает локальное время компьютера.
Легко проверить запустив советника:
int OnInit()
{
//--- create timer
EventSetTimer(1);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
}
//+------------------------------------------------------------------+
void OnTimer()
{
Comment(
"\n TimeCurrent: ",TimeCurrent(),
"\n TimeTradeServer: ",TimeTradeServer(),
"\n TimeLocal: ",TimeLocal(),
"");
}
//+------------------------------------------------------------------+
При изменении времени на компьютере TimeTradeServer тоже меняется и показывает компьютерное время TimeLocal.
А что мешает сначала проверить торговое время через TimeTradeServer, а затем (если время торговое) для более точной проверки использовать
функцияю, которую я написал выше?
Добавлено
Хотя, конечно, это не выход, потому что котировок по данному символу может и не быть :(
Немного поломал голову и написал такой вариант, кто что думает о данной реализации .
//| test03.mq5 |
//| Sergey Gritsay |
//| https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link "https://www.mql5.com/ru/users/sergey1294"
#property version "1.00"
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
if(CheckExchTime())Print("Торговля разрешена");
else Print("Торговля запрещена");
}
//+------------------------------------------------------------------+
bool CheckExchTime()
{
MqlTick last_tick;
MqlDateTime last_time;
MqlDateTime start_time;
MqlDateTime end_time;
datetime trade_time_start=0;
datetime trade_time_end=0;
datetime start=0;
datetime end=0;
ResetLastError();
if(SymbolInfoTick(_Symbol,last_tick))
{
TimeToStruct(last_tick.time,last_time);
Print(last_tick.time,": Bid = ",last_tick.bid," Ask = ",last_tick.ask," Last = ",last_tick.last," Volume = ",last_tick.volume);
if(SymbolInfoSessionTrade(_Symbol,(ENUM_DAY_OF_WEEK)last_time.day_of_week,0,trade_time_start,trade_time_end))
{
TimeToStruct(trade_time_start,start_time);
TimeToStruct(trade_time_end,end_time);
start=__DATE__+(start_time.hour*60+start_time.min)*60;
end=__DATE__+(end_time.hour*60+end_time.min)*60;
Print("trade_time_start = ",trade_time_start," trade_time_end = ",trade_time_end);
Print(start," - ",end);
if(start==end)return(true);
if(last_tick.time>start && last_tick.time<end)return(true);
}
else Print("SymbolInfoSessionTrade(0) failed, error = ",GetLastError());
if(SymbolInfoSessionTrade(_Symbol,(ENUM_DAY_OF_WEEK)last_time.day_of_week,1,trade_time_start,trade_time_end))
{
TimeToStruct(trade_time_start,start_time);
TimeToStruct(trade_time_end,end_time);
start=__DATE__+(start_time.hour*60+start_time.min)*60;
end=__DATE__+(end_time.hour*60+end_time.min)*60;
Print("trade_time_start = ",trade_time_start," trade_time_end = ",trade_time_end);
Print(start," - ",end);
if(start==end)return(true);
if(last_tick.time>start && last_tick.time<end)return(true);
}
else Print("SymbolInfoSessionTrade(1) failed, error = ",GetLastError());
}
else Print("SymbolInfoTick() failed, error = ",GetLastError());
return(false);
}
//+------------------------------------------------------------------+
...
Ребята разработчики!
Ну когда же Вы синхронизируете время терминала с временем Биржи?
Еще немного поколдовав над кодом, получилось вот что.
//| test06.mq5 |
//| Sergey Gritsay |
//| https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link "https://www.mql5.com/ru/users/sergey1294"
#property version "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer
EventSetMillisecondTimer(1);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
string text=NULL;
int symbol_total=SymbolsTotal(true);
for(int i=0; i<symbol_total; i++)
{
string symbol=SymbolName(i,true);
if(CheckExchTime(symbol,TimeCurrent()))text+="\n"+symbol+": Торговля разрешена";
else text+="\n"+symbol+": Торговля запрещена";
}
Comment(text);
}
//+------------------------------------------------------------------+
bool CheckExchTime(string symbol,datetime times)
{
MqlDateTime last_time;
MqlDateTime start_time;
MqlDateTime end_time;
datetime trade_time_start=0;
datetime trade_time_end=0;
datetime start=0;
datetime end=0;
ResetLastError();
datetime expiration=(datetime)SymbolInfoInteger(symbol,SYMBOL_EXPIRATION_TIME);
if(expiration!=0 && times>=expiration)return(false);
TimeToStruct(times,last_time);
if(SymbolInfoSessionTrade(symbol,(ENUM_DAY_OF_WEEK)last_time.day_of_week,0,trade_time_start,trade_time_end))
{
TimeToStruct(trade_time_start,start_time);
TimeToStruct(trade_time_end,end_time);
start=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)start_time.hour+":"+(string)start_time.min+":00");
end=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)end_time.hour+":"+(string)end_time.min+":00");
if(start==end)return(true);
if(times>start && times<end)return(true);
}
//else Print("SymbolInfoSessionTrade(0) failed, error = ",GetLastError());
if(SymbolInfoSessionTrade(symbol,(ENUM_DAY_OF_WEEK)last_time.day_of_week,1,trade_time_start,trade_time_end))
{
TimeToStruct(trade_time_start,start_time);
TimeToStruct(trade_time_end,end_time);
start=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)start_time.hour+":"+(string)start_time.min+":00");
end=StringToTime((string)last_time.year+"."+(string)last_time.mon+"."+(string)last_time.day+" "+(string)end_time.hour+":"+(string)end_time.min+":00");
if(start==end)return(true);
if(times>start && times<end)return(true);
}
//else Print("SymbolInfoSessionTrade(1) failed, error = ",GetLastError());
return(false);
}
//+------------------------------------------------------------------+
резултат
Еще немного поколдовав над кодом, получилось вот что.
Вы вообще понимаете о чём идёт речь?
Может и не совсем понял, я понял как, нужно решение что бы не попадать на закрытие рынка вне торговое время биржи.
Решения не от программеров, а от разработчиков (или брокера, если от него, Брокера, это зависит)
Код, который Вы привели, не проверяет ТЕКУЩЕЕ время БИРЖИ
Пока, остановился на этом решении
{
datetime lk_time = TimeTradeServer(tick_time);
if ( ( tick_time.day_of_week == int(FirstDay)) ||
( tick_time.day_of_week == int(SecondDay)))//выходные
{
return(false);
}
#ifdef DEBUG
if ((tick_time.hour >= 0) && (tick_time.hour < 6)) // DEBUG 6-00
{
return(false);
}
#else
if ((tick_time.hour >= 0) && (tick_time.hour < 10))
{
return(false);
}
#endif
// 13 * 3600 + 59 * 60 + 30 = 50370 - 13:59:30
// 14 * 3600 = 50400 - 14:00:00
// 14 * 3600 + 30 = 50430 - 14:00:30
// 14 * 3600 + 60 = 50460 - 14:01:00
// 18 * 3600 + 44 * 60 + 30 = 67470 - 18:44:30
// 18 * 3600 + 45 * 60 = 67500 - 18:45:00
// 18 * 3600 + 45 * 60 + 30 = 67530 - 18:45:30
// 18 * 3600 + 46 * 60 = 67560 - 18:46:00
// 19 * 3600 = 68400 - 19:00:00
// 19 * 3600 + 60 = 68460 - 19:01:00
// 23 * 3600 + 49 * 60 + 30 = 85770 - 23:49:30
// 23 * 3600 + 50 * 60 = 85800 - 23:50:00
// 23 * 3600 + 50 * 60 + 30 = 85830 - 23:50:30
// 23 * 3600 + 51 * 60 = 85860 - 23:51:00
//---
lk_time = TimeCurrent(tick_time);
ulong trade_time = tick_time.hour * 3600 + tick_time.min * 60 + tick_time.sec;
//--- //10:00:02
if(((trade_time >= time_st_mon) && (trade_time < 50370)) ||
((trade_time >= time_st_day) && (trade_time < 67470)) ||
((trade_time >= time_st_evn) && (trade_time < 85770)))
{
return(true);
}
return(false);
}
Сначала беру TimeTradeServer - получаю текущее "грязное" время
Проверяю на выходные и время (торговое), которое "перекрывает" все сессии,
а затем использую TimeCurrent
текущее время сервера, для проверки времени внутри сессий.
Добавлено
Но у этой проверки есть один существенный недостаток.
Если локальное время компьютера больше времени сервера, то будет всё нормально, а
вот если локальное внемя меньше, то появляется большая проблема - мы будем
пропускать начало торгов на разницу между временем торгового сервера и локального времени :(
Поэтому нужно, чтобы TimeCurrent
всегда возврашала время сервера, а не только время последней известной котировки.
Добавлено
Ещё один недостаток
В клиринг не приходят котировки, поэтому использование TimeCurrent в клиринг(например для снятия отложенных ордеров) бессмыслено :(