Add this with your other global variables (ORB_High, ORB_Low, etc.) so the EA only calculates the Asia trend once per day, rather than on every single tick.
Add this function at the bottom of your EA. It calculates the total range and the net displacement of the Asian session to determine if it was directional.
Because the Asian session is fully closed by the time the ORB forms, we should evaluate the Asia filter exactly once—at the exact moment the ORB finishes forming.
Update step 4 in your existing OnTick() function to calculate this:
// 4. Mark ORB as formed once the end time passes and evaluate Asia
if(TimeCurrent() > endTime && !ORB_Formed && ORB_High > 0)
{
ORB_Formed = true;
datetime asiaStart = StringToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + AsiaStart_Time);
datetime asiaEnd = StringToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + AsiaEnd_Time);
// Calculate once for the day
AsiaWasTrend = IsAsiaTrendDay(asiaStart, asiaEnd);
}
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
By placing the check inside the ORB completion block, your EA cleanly handles the math once per day. If Asia prints a 40-pip slow grind with a strong close at the highs, AsiaWasTrend becomes true, and the EA will ignore all M5 fakeouts for the rest of the day, leaving you flat while the true breakout trend (likely) continues.
Preserve your own money. Scale with the market's money. Exponential growth is the ultimate key.
Four to five M5 bars is about where my own acceptance line sits, so we're close there. I'd shave it for EURUSD on a quiet calendar: three bars outside with no follow-through and I start treating it as a stall rather than a break.
Tick volume I lean on less than you do. On my feed the reclaim candle often shows a heavier tick count simply because quotes update faster while the spread is jumping about, which isn't the same thing as real participation. I only count it as supporting evidence when the spread on that bar is normal.
What I'd add on structure is the range midpoint. If the failed break gets back inside but can't clear the ORB midpoint within the next few bars, the target drops to the midpoint and anything beyond is a bonus. Aiming for the far side of the range on a fade is where I used to hand back most of the edge.