Как правильно выяснить, что рынок закрыт? (mql4) - страница 4

 

А мы вот так:

MqlTick Tick;
bool IsNewTick(string symbol)
  {
   MqlTick t;
   SymbolInfoTick(symbol,t);
   if(t.time>Tick.time)
     {
      SymbolInfoTick(symbol,Tick);
      return(true);
     }
   return(false);
  }

Функция выдает, есть ли новый тик на инструменте. 

Отлично подходит для OnTime. Только для для каждого symbol, должен быть свой Tick

 
Vasyl Nosal:

Ого сколько тектса.

MarketInfo(Symbol(),MODE_TRADEALLOWED) 

Так Вы получите только состояние разрешения торгов по инструменту. Если инструмент торгуемый, то в любой день недели получите по нему true.
 
Ihor Herasko:
Так Вы получите только состояние разрешения торгов по инструменту. Если инструмент торгуемый, то в любой день недели получите по нему true.
Не правда.
 
Перед отправкой приказа выполняйте проверку, http://docs.mql4.com/check/istradeallowed
 
Ramiz Mavludov:
Перед отправкой приказа выполняйте проверку, http://docs.mql4.com/check/istradeallowed
А это относится к кнопке автоторговля.
 
Vasyl Nosal:
А это относится к кнопке автоторговля.
Не понял. Без включения авто торговли у вас советник вообще не должен не чего делать. 
 
Ramiz Mavludov:
Не понял. Без включения авто торговли у вас советник вообще не должен не чего делать. 
Не. Может и, в принципе, чаще должен делать, чем не делать. При отключенной кнопке Автоторговля, он не может лишь работать с торговыми функциями. Остальные расчёты - пожалуйста.
 
Ramiz Mavludov:
Не понял. Без включения авто торговли у вас советник вообще не должен не чего делать. 
То что написано по ссылке вообще никагого значение не имеет к вопросу закрытия рынка.
 
Vasyl Nosal:
Не правда.

Возможно, следует еще раз проверить. Последний раз этот вопрос прорабатывался мною еще до появления обновленного MQL4. Тогда такой способ указывал на возможность торговли по символу в общем, а не в конкретное время. Да и в справке сейчас такая формулировка, которая не дает однозначного ответа. Подождем до выходных и проверим. Или у кого-то есть в списке символов американские акции, рынок по которым сейчас закрыт. Тогда можно и сейчас проверить.

А вот насчет IsTradeAllowed, указанной Рамизом Мавлудовым, все, действительно, правильно. Эта функция дает возможность проверять ситуацию закрытого рынка. Причем об этом можно теперь узнавать заранее, а не ждать выходных:

   datetime curDay = D'2015.12.14 05:00';
   Print("Trade allowed for 2015.12.14 05:00: ", IsTradeAllowed(_Symbol, curDay));
   
   datetime sunday = D'2015.12.20 03:00';
   Print("Trade allowed for Sunday: ", IsTradeAllowed(_Symbol, sunday));

 Результат:

2015.12.16 13:37:23.662 TestData EURUSD,Daily: Trade allowed for Sunday: false
2015.12.16 13:37:23.662 TestData EURUSD,Daily: Trade allowed for 2015.12.14 05:00: true
 
Ihor Herasko:

Возможно, следует еще раз проверить. Последний раз этот вопрос прорабатывался мною еще до появления обновленного MQL4. Тогда такой способ указывал на возможность торговли по символу в общем, а не в конкретное время. Да и в справке сейчас такая формулировка, которая не дает однозначного ответа. Подождем до выходных и проверим. Или у кого-то есть в списке символов американские акции, рынок по которым сейчас закрыт. Тогда можно и сейчас проверить.

А вот насчет IsTradeAllowed, указанной Рамизом Мавлудовым, все, действительно, правильно. Эта функция дает возможность проверять ситуацию закрытого рынка. Причем об этом можно теперь узнавать заранее, а не ждать выходных:

 Результат:

Таки да.

Я думал он про bool  IsTradeAllowed(); говорит.