https://docs.mql4.com/dateandtime/timelocal
I already had a look at that particular page, but it did not help me. I am missing something?
Please could you be patient with me and be more specific?
taken from the doc
btw, why using timelocal and not TimeCurrent()?
Is TimeLocal modelled correctly ? Add a Print to find out . . .
int TradeHour = TimeHour(TimeLocal()); int TradeMinutes = TimeMinute(TimeLocal()); int TradeSeconds = TimeSeconds(TimeLocal()); Print("Hours: ", TradeHour , " Mins: ", TradeMinutes," Seconds: ", TradeSeconds); // <---- Print added if (TradeHour == 15 & TradeMinutes == 0 & TradeSeconds > 0)
I am using TimeLocal since that time is fixed no matter which broker in which time zone I use.
I have put in a Print statement just after the "if" statement - that is why I know that the 'if" statement does not filter out the wrong times - it lets every thing through, iow all different times are printed out - not just the time I am asking for in the 'if' statement. That is why I started wondering if the tester actually uses time in backtesting.
You are using a bitwise AND not a logical AND . . .
if (TradeHour == 15 & TradeMinutes == 0 & TradeSeconds > 0) should be . . . . . if (TradeHour == 15 && TradeMinutes == 0 && TradeSeconds > 0)
You are using a bitwise AND not a logical AND . . .
Raptor you are absolutely right! What is wrong with me? I have not programmed for a few months and have forgotten that there should bee TWO "&" for a logical "AND".
Thanks a lot! I am embarrassed!
Thanks a lot! I am embarrassed!
ernest02:
the "if" statement is completely ignored when I do a backtest in the tester. Can anybody please help me?
int TradeHour = TimeHour(TimeLocal()); int TradeMinutes = TimeMinute(TimeLocal()); int TradeSeconds = TimeSeconds(TimeLocal());
- & vs &&
- What does your local time have to do with the time of the bar the tester is showing? NOTHING! (If will always be false until you are testing after 3pm local time.)
datetime now = TimeCurrent(); int TradeHour = TimeHour(now); int TradeMinutes = TimeMinute(now); int TradeSeconds = TimeSeconds(now);
Or if you meant 1500 local time, convert now (server time) to local then compare. if (TradeHour == 15 & TradeMinutes == 0 & TradeSeconds > 0)
Alternatively:datetime now = TimeCurrent(); #define HR150000 54000 // 15 * 3600 15:00:00 //if (TradeHour == 15 & TradeMinutes == 0 & TradeSeconds > 0) if (now > HR150000)
- Instead of local time you should be doing everything in UTC to be broker independent and adjusting server time to UTC
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
I have written an experimental EA that has to do a transaction at a certain hour. Here is an extract of the code,
the "if" statement is completely ignored when I do a backtest in the tester. Can anybody please help me?