Как узнать, что по выходным нет торговли? - страница 3

 
MetaDriver:
Ты уж определись, работает ли сервер в выходные.  Если не работает - пофиг, если работает - пусть отвечает за базар.
В выходные сервер работает, но рынок закрыт.
Lizar:
Интересно, почему вас не устраивает OrderCheck()? Вопрос ко всем присутствующим. Торговый сервер не расстреливается,  да и кучу нужной инфы можно поиметь включая открыт или закрыт рынок.
Почему же не устраивает, пользуем. Вот только что то не припомню чтоб с её помощью можно получить флаг закрытого/открытого рынка.
 
MqlDateTime mqldt;
void onTimer()
{
if(mqldt.day_of_week!=6&&mqldt.day_of_week!=0)
 {
 //ваш код
 }
}

разве так нельзя решить проблему?

P.S. сам не пробовал, но вроде должно работать 

 
Да, флаг бы такой не помешал. Даже чисто для информации (визуальной). Например, индикатор на информационной панели показывает закрыт рынок для торговли или открыт. Сейчас это можно узнать только сделав попытку открыть позицию. А в сервисдеск ещё никто не написал в качестве пожелания?
 
Urain:
В выходные сервер работает, но рынок закрыт.Почему же не устраивает, пользуем. Вот только что то не припомню чтоб с её помощью можно получить флаг закрытого/открытого рынка.
Первое поле структуры ответа MqlTradeCheckResult код возврата 10018  TRADE_RETCODE_MARKET_CLOSED.  Если рынок открыт, получите другой код возврата и true вернет сама функция.
 
Lazarev:

разве так нельзя решить проблему?

P.S. сам не пробовал, но вроде должно работать 

А праздничные дни?
 
tol64:
Сейчас это можно узнать только сделав попытку открыть позицию
Не нужно для этого делать попытку открыть позицию, используйте OrderCheck().
 
Urain:
В выходные сервер работает, но рынок закрыт.
Значит должон отвечать на все вопросы. Кроме торговли.
Urain:
Почему же не устраивает, пользуем. Вот только что то не припомню чтоб с её помощью можно получить флаг закрытого/открытого рынка.
Вапчета есть, как ни странно: https://www.mql5.com/ru/docs/constants/errorswarnings/enum_trade_return_codes
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера - Документация по MQL5
 
Lizar:
Первое поле структуры ответа MqlTradeCheckResult код возврата 10018  TRADE_RETCODE_MARKET_CLOSED. 

Точно, вот и ответ. А я искал в кодах GetLastError()

Тему можно закрывать. Спасибо Lizar

 

Подождите, не закрывайте тему.))) Подскажите, правильно и достаточно ли будет делать запрос вот так, чтобы узнать закрыт ли сейчас рынок:

MqlTick last_price;
MqlTradeResult myresult;
MqlTradeRequest myrequest;
MqlTradeCheckResult mycheck;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   ClearStructures();
//---
//--- setting request
   myrequest.action      =TRADE_ACTION_PENDING;
   myrequest.symbol      =_Symbol;
   myrequest.magic       =0;
   myrequest.volume      =0.1;
   myrequest.type        =ORDER_TYPE_BUY;
   myrequest.stoplimit   =0;
   myrequest.price       =SymbolInfoDouble(_Symbol,SYMBOL_ASK);
   myrequest.sl          =0;
   myrequest.tp          =0;
   myrequest.type_filling=ORDER_FILLING_FOK;
   myrequest.type_time   =0;
   myrequest.expiration  =0;
   myrequest.comment     ="";
//---
   if(!OrderCheck(myrequest,mycheck))
      {
       Print("MqlTradeCheckResult retcode: ",mycheck.retcode);
      }
   else { Print("OK!"); }
  }
//---
void ClearStructures()
  {
   ZeroMemory(myresult);
   ZeroMemory(myresult);
   ZeroMemory(mycheck);
  }

Вот в данный момент "рынок" закрыт (сервер MQ). Запрос показывает, что всё OK, но позицию открыть невозможно.

 

Как сделать правильно? 

 

 

 
tol64:

Подождите, не закрывайте тему.))) Подскажите, правильно и достаточно ли будет делать запрос вот так, чтобы узнать закрыт ли сейчас рынок:

Вот в данный момент "рынок" закрыт (сервер MQ). Запрос показывает, что всё OK, но позицию открыть невозможно.

 

Как сделать правильно?

Предпоследняя строчка - это результат работы OrderCheck() в методе PositionOpen() класса CTrade. Торговый приказ на сервер не ушел. Посмотрите как это сделано в классе.
Причина обращения: