You only want the year month and day to match not the time in seconds.
for(int i=0;i<OrdersHistoryTotal();i++) { OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) ; if ( (TimeYear(OrderCloseTime())==Year() ) && (TimeMonth(OrderCloseTime())==Month()) && (TimeDay(OrderCloseTime())==Day()) ) { //Found Closed Order for today } else { //None closed yet } }//end for loop
After thought - putting a loop like this in for every tick woul be unnecessarily time consuming, it would be wise to think of another way of doing it.
int TotalOrder = OrdersHistoryTotal(); if(OrderSelect(TotalOrder-1, SELECT_BY_POS, MODE_HISTORY)==true)
This selects the last closed order, not the last close on this pair by this EAfor(int i=0;i<OrdersHistoryTotal();i++) { OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) ;
This also doesn't check pair or EA and fails of the orderSelect does. Always test return codes.
- putting a loop like this in for every tick woul be unnecessarily time consuminwhile scanning isn't that intensive, it isn't necessary
static datetime tradingAllowed; int newCount = HistoryTotal(); static int prevCount; if (newCount != prevCount){ prevCount = newCount; datetime lastClose; for(int pos=newCount-1; pos >= 0; pos--) if ( OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY) // Only orders w/ && OrderCloseTime() > lastClose // not yet processed, && OrderMagicNumber() == magic.number // my magic number && OrderSymbol() == Symbol() // and my pair. && OrderType() <= OP_SELL){ // Avoid cr/bal https://www.mql5.com/en/forum/126192 lastClose = OrderCloseTime(); } datetime lastClosePlus24Hrs = lastClose + 24 * 3600; datetime lastCloseNextDay = lastClose % 86400 + 86400 tradingAllowed = lastcloseNextDay; } if (TimeCurrent() => tradingAllowed){ ... }
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
Hi everybody,
I'm currently working on an EA that use bollinger Bands and would like this EA to only take one trade per day.
In other words, If a position is close on a day T1, I do not want the EA to open a new position (Short or Long).
I tried using the following "function":
Using FreeOfLastTrade in my Long and Short condition, the EA doesn't take any position at all.
Could you guys please help me with that ?
Thanks a lot,
Crak