Hi
When you use TimeToStr and StrToTime like that, you always set the date for current day so at the moment of open time it’s already past close time and that’s why EA close it immediately. You must check (when close hour is smaller than open hour) if there is a new day now.
Try something like that:
if(ticket > 0){ if( (closeTime>openTime && lastOrderCloseTime < closeTime && now >= closeTime) || // when close time > open time (closeTime<openTime && now<openTime && lastOrderCloseTime < closeTime && now >= closeTime ) ) //when close time < open time e.g. 0:30 and 23:30 { if(OrderSelect(ticket, SELECT_BY_TICKET) && OrderClose(ticket, OrderLots(), MarketInfo(Symbol(), MODE_BID), 3, clrNONE)) { lastOrderCloseTime = now; // Save the order close time Print("Order closed at ", TimeToStr(now)); ticket = -1; // Reset ticket number } else { Print("Error closing order: ", GetLastError()); } } }
Have a nice weekend
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
Hello everybody,
I have this code for "Expert Advisor", but it doeasn't work by my expectation. I want to open and close order by selected time. When the time is on the same date ex 15:00 to 16:00 it work. But when the close date is on next day it doesnt work ex. 23:50 to 0:30. The order open and closed immediate. Could you please help me to resolve this issue?