so, for example, you do not want to trade at 13, right? Well, this code will. Because 13 is greater or equal to 10. With all those ORs something is more likely to true.
if((Hour()<=7 || Hour()>=10) || (Hour()<=14 || Hour()>=18))return(0); //Prefer Trading Hours
You might want to code it like this, perhaps:
if((Hour()>=7 && Hour()<=10) || (Hour()>=14 && Hour()<=18))return(0); //Prefer Trading Hours
sn
Or like this . . .
bool AllowTradesByTime() { Current_Time = TimeHour(TimeCurrent()); if (Start_Time == 0) Start_Time = 24; if (Finish_Time == 0) Finish_Time = 24; if (Current_Time == 0) Current_Time = 24; if ( Start_Time < Finish_Time ) if ( (Current_Time < Start_Time) || (Current_Time >= Finish_Time) ) return(false); if ( Start_Time > Finish_Time ) if ( (Current_Time < Start_Time) && (Current_Time >= Finish_Time) ) return(false); return(true); }
so, for example, you do not want to trade at 13, right? Well, this code will. Because 13 is greater or equal to 10. With all those ORs something is more likely to true.
if((Hour()<=7 || Hour()>=10) || (Hour()<=14 || Hour()>=18))return(0); //Prefer Trading Hours
You might want to code it like this, perhaps:
if((Hour()>=7 && Hour()<=10) || (Hour()>=14 && Hour()<=18))return(0); //Prefer Trading Hours
sn
Thank you, but I did try the code with && and the EA was actually trading outside the selected time.
Or like this . . .
Thank you,
I can handle simple coading, but need some help with this one. I don't see how it would apply both range of time. Where I would apply both ranges?
Thank you,
I can handle simple coading, but need some help with this one. I don't see how it would apply both range of time. Where I would apply both ranges?
To use my code add it after the end of your existing code . . . then you call it, maybe like this . . .
if (!AllowTradesByTime()) return(0);
Do you mean Start_Time and Finish_Time ? they are globally defined variables up at the start of the code . . .
extern int Start_Time = 1; // Time to allow trading to start ( hours of 24 hr clock ) 0 for both disables extern int Finish_Time = 23; // Time to stop trading ( hours of 24 hr clock ) 0 for both disables
To use my code add it after the end of your existing code . . . then you call it, maybe like this . . .
Do you mean Start_Time and Finish_Time ? they are globally defined variables up at the start of the code . . .
Thank you.
Well... this is similar to what I have working now.
Global setting
extern int StartTime = 6; // Time to allow trading to start
extern int EndTime = 16; // Time to stop trading
Apply before it looks for an open order
if((Hour()<=StartTime || Hour()>EndTime))return(0); //Preferd Trading Hours
I was looking to set two seperate time ranges, for example 6-10 & 13-16.
Thank you.
Well... this is similar to what I have working now.
Global setting
extern int StartTime = 6; // Time to allow trading to start
extern int EndTime = 16; // Time to stop trading
Apply before it looks for an open order
if((Hour()<=StartTime || Hour()>EndTime))return(0); //Preferd Trading Hours
I was looking to set two seperate time ranges, for example 6-10 & 13-16.
What if you move to Australia and want to start trading at 15:00 and end at 07:00 the following day ?
Well first thing frist, I would need to change the type of beer I drink.
The time is taken from the MetaTrader Market watch and I don't trade the AUD much. But if I needed to, it will take me back to what I am looking for. i am trying to trade two time ranges and if looking to tade the AUD i would need to trade 0-7 & 15-23.
Well first thing frist, I would need to change the type of beer I drink.
The time is taken from the MetaTrader Market watch and I don't trade the AUD much. But if I needed to, it will take me back to what I am looking for. i am trying to trade two time ranges and if looking to tade the AUD i would need to trade 0-7 & 15-23.
This is currently working as expected. If is outside this time range the EA does not trade.
if((Hour()<=StartTime || Hour()>EndTime))return(0); //Preferd Trading Hours
From an older EA, which I believed tested successfully but is not working.
if((Hour()<=7 || Hour()>=10) || (Hour()<=14 || Hour()>=18))return(0); //Prefer Trading Hours
Any Ideas why the second option is not working?
I am assuming I can configure & test the following, but was looking for a cleaner solution.
if(Hour()==7 || Hour()==8 || Hour()==9 || Hour()==10 || Hour()==14 || Hour()==15 || Hour()==16 || Hour()==17 || Hour()==18)return(0); //Prefer Trading Hours
Thank you.
Your second option is not working because the hours are overlapping, all times are >10 or <14. You need to breakup the ranges. I would suggest:
if( !( (Hour()>=7 && Hour()<=10) || (Hour()>=14 && Hour()<=18) ) )return(0) /Preferred Trading Hours
![MQL5 - Language of trade strategies built-in the MetaTrader 5 client terminal](https://c.mql5.com/i/registerlandings/logo-2.png)
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
This is currently working as expected. If is outside this time range the EA does not trade.
if((Hour()<=StartTime || Hour()>EndTime))return(0); //Preferd Trading Hours
From an older EA, which I believed tested successfully but is not working.
if((Hour()<=7 || Hour()>=10) || (Hour()<=14 || Hour()>=18))return(0); //Prefer Trading Hours
Any Ideas why the second option is not working?
I am assuming I can configure & test the following, but was looking for a cleaner solution.
if(Hour()==7 || Hour()==8 || Hour()==9 || Hour()==10 || Hour()==14 || Hour()==15 || Hour()==16 || Hour()==17 || Hour()==18)return(0); //Prefer Trading Hours
Thank you.