How to check Market Open/Closed in MT5 ? - page 2

 
Petr Nosek:

And therefore the most reliable way I know is using the all functions I mentioned in my first answer.

In MT5 yes, in MT4 no.

 
Alain Verleyen:

In MT5 yes, in MT4 no.

Do you try to be a little bit mysterious? Could you, please, share your opinion about the most reliable way in MT4?

UPDATE: Except catching errors by sending an order.

 
Petr Nosek:
Do you try to be a little bit mysterious? Could you, please, share your opinion about the most reliable way in MT4?

Not at all.

Why do you want to know when market is closed ? On Forex the open/close hours are well known, you can just check broker time, session time (I mean asian, europa, us sessions) and you will know if the market is open/close.

For metals or CFDS, you have sometimes a market close for 15 minutes or 1 hour, to know that the most reliable way is MarketInfo(symbol,MODE_TRADEALLOWED) (MT4).

For MT5 you can always use SymbolInfoSessionTrade().

Using last tick time is not really useful, as you can't make the difference between a closed market and a "slow" market.

I am working with a lot of customers and a lot of brokers, so I am talking in general, but of course I didn't check all brokers. Also it's probably always possible to find a broker who will provide data that contradicts the above.

 
Alain Verleyen:

Not at all.

Why do you want to know when market is closed ? On Forex the open/close hours are well known, you can just check broker time, session time (I mean asian, europa, us sessions) and you will know if the market is open/close.

For metals or CFDS, you have sometimes a market close for 15 minutes or 1 hour, to know that the most reliable way is MarketInfo(symbol,MODE_TRADEALLOWED) (MT4).

For MT5 you can always use SymbolInfoSessionTrade().

Using last tick time is not really useful, as you can't make the difference between a closed market and a "slow" market.

I am working with a lot of customers and a lot of brokers, so I am talking in general, but of course I didn't check all brokers. Also it's probably always possible to find a broker who will provide data that contradicts the above.

I agree with you partially. But there could be a problem at weekends. Usually the broker time (CurrentTime()) stops one second before friday's session end. It causes in my opinion that the MarketInfo() isn't reliable at weekends. I don't know how MarketInfo() works exactly but I think it compares CurrentTime() with the session start/end. In this case you can't recognize a weekend by MarketInfo(). You should find out if the broker time is still running (with checking connection) if isn't running then a weekend is (and you should stop working).

You are right I can't recognize by the last tick time if the market is closed or slow. But for some CFDs at holidays isn't also reliable SymbolSessionTrade() and I don't know (I haven't tried it and I can try it at the next holiday) if the MarketInfo() provides true info. And the clue (not evidence) could be the last tick time.

 
Petr Nosek:

I agree with you partially. But there could be a problem at weekends. Usually the broker time (CurrentTime()) stops one second before friday's session end. It causes in my opinion that the MarketInfo() isn't reliable at weekends. I don't know how MarketInfo() works exactly but I think it compares CurrentTime() with the session start/end. In this case you can't recognize a weekend by MarketInfo(). You should find out if the broker time is still running (with checking connection) if isn't running then a weekend is (and you should stop working).

What market info ? TRADE_ALLOWED? Yes it works at the week-end, if it works in general.

2018.03.11 19:36:21.388    SymbolInfoSessionTrade ...,M5: EURUSD: Trading session 0 start 00:00 to 23:00  TRADEALLOWED: 0

On this broker/symbol, it's correct. And SymbolInfoSessionTrade() is not. As this broker server stopped at 23:59:58

You are right I can't recognize by the last tick time if the market is closed or slow. But for some CFDs at holidays isn't also reliable SymbolSessionTrade() and I don't know (I haven't tried it and I can try it at the next holiday) if the MarketInfo() provides true info. And the clue (not evidence) could be the last tick time.

The only conclusion for everyone is try it yourself according to your needs, there is no universal solution by using a single function call.

 
Alain Verleyen:

What market info ? TRADE_ALLOWED? Yes it works at the week-end, if it works in general.

2018.03.11 19:36:21.388    SymbolInfoSessionTrade ...,M5: EURUSD: Trading session 0 start 00:00 to 23:00  TRADEALLOWED: 0

On this broker/symbol, it's correct. And SymbolInfoSessionTrade() is not. As this broker server stopped at 23:59:58

The only conclusion for everyone is try it yourself according to your needs, there is no universal solution by using a single function call.

Thank you Alain for your example. As far as your example is concerned I suppose that there isn't a session Nr. 1 (23:00-00:00)

I absolutely agree with your conclusion and thank you for nice chatting.

 
Petr Nosek:

Thank you Alain for your example. As far as your example is concerned I suppose that there isn't a session Nr. 1 (23:00-00:00)

I absolutely agree with your conclusion and thank you for nice chatting.

You are welcome. Code used was published in the below topic.

How to find the Friday's market closing time?
How to find the Friday's market closing time?
  • 2016.12.22
  • www.mql5.com
Hello, I want to find at what hour the market closes on Friday. I'm trying with the following script but it returns 0...
 
Comments that do not relate to this topic, have been moved to "Need Help How to make the EA to filter Maximum allowed pair to trade based on Equity draw down".
 

Hy guys,

I'm also trying to check if the market is opened to trade stocks, I already tryed SymbolInfoSessionQuote() and SymbolInfoSessionTrade() but my broker doesn't supply realiable information about the open and close time.


* these information are incorrect, the market opens at 10:00h and closes at 17:00h.


So, is there another way?

 
Gustavo Hennemann:

Hy guys,

I'm also trying to check if the market is opened to trade stocks, I already tryed SymbolInfoSessionQuote() and SymbolInfoSessionTrade() but my broker doesn't supply realiable information about the open and close time.


* these information are incorrect, the market opens at 10:00h and closes at 17:00h.


So, is there another way?

Only way is to ask your broker to provide reliable data I am afraid.