I decided to publish this class after reading this publication. This topic looks interesting. My approach does not solve every problem as well. Therefore, suggest what can be improved.
The class usage example was made similar to this variant. That way it is easier to see the advantages and disadvantages.
The advantages:
- Possibility of standard input of date and time. See the picture. Less likelihood of mistakes.
- The possibility to optimize the time intervals in the strategy tester is preserved.
- All the settings can be quickly changed anywhere in program.
- More usage options. Details after the picture.
- Easier to use in the code. At least for me.
Options for setting the time
1. Daily session. For example, it allows the trading every day in the specified time interval. Conditions:
- The session start and end dates are equal to 1970.01.01.
- The session start time is less than the session end time.
2. Night session. For example, the trading through the night is allowed: start today, end tomorrow. And so every day. Conditions:
- The session start and end dates are equal to 1970.01.01.
- The session start time is greater than the session end time.
3. Within the range of dates. For example, the trading is allowed from the session start date up to the session end date. Conditions:
- The session start date is less than the session end date.
- Any time, but it is also considered.
4. Out of the range of dates. The session start date is greater than the session end date. Thus, the trading is allowed until the session end date and after the new session start date. Conditions:
- The session start date is greater than the session end date.
- Any time, but it is also considered.
5. Disabling/enabling the trading on a week day. It is sufficient to set “true” in the parameters for each of the week days, if you want to trade. Or “false” to disable trading.
6. All the setting can be changed anywhere in program using the Init() methods.
P.S. The class was created for the MetaTrader 5, but it also works for the MetaTrader 4. The only difference is that the MetaTrader 4 strategy tester does not support the optimization of the time intervals in the datΠ΅time format. But it is solved by replacing the datΠ΅time to long in the EA input parameters.