Page 1 of 1

Tick bursts and the cross your OnTick logic never saw

Posted: Thu Oct 15, 2026 8:48 pm
by Fairman
Tick bursts and the cross your OnTick logic never saw

Here's a subtle one. Your EA checks for a condition on each tick, say price crossing above a level or a fast MA crossing a slow one. In fast markets, ticks can arrive in bursts, and the platform may not run OnTick for every single one. If the EA is still busy processing the last tick, new ticks can be skipped, and the EA only sees the latest price when it's free again.

So if your logic looks for the exact moment of a cross, by comparing the current value with the previous one it saw, it can miss it. Price went from below to above and back to below between two calls. On the chart the cross is there. The EA never saw it.

A few ways around it. Check the condition on closed bars instead of ticks, if the strategy allows. Use state, so the EA knows it was below and is now above, rather than needing to catch the exact tick. Or in MT5, look at the tick history between calls with CopyTicks if you really need every tick.

Also keep OnTick light. Heavy calculations or slow logging in there make skipped ticks more likely.

Test it. A cross that shows on the chart and didn't trigger is often this.

Re: Tick bursts and the cross your OnTick logic never saw

Posted: Fri Oct 16, 2026 8:52 am
by Fairman
The strategy tester can hide this problem. In 'every tick' mode the tester calls OnTick for each generated tick and waits for it to finish, so nothing gets skipped. Live, the platform doesn't wait. That's one reason an EA can catch every signal in testing and miss some live. If live results show fewer trades than the backtest over the same period, comparing the signal times is a good first step. Usually you'll find the missed trades cluster around busy moments, like the London open or news, which fits the burst explanation. If they're spread evenly, look somewhere else, like a filter that behaves differently live.

Re: Tick bursts and the cross your OnTick logic never saw

Posted: Fri Oct 16, 2026 9:59 am
by Fairman
One more source of this is running many EAs or charts in the same terminal. They share resources, and a busy terminal processes ticks more slowly for everyone. If you have a lot open on a small VPS, the chance of missed ticks goes up during exactly the busy moments when signals tend to appear. Splitting EAs across terminals or trimming what's running can help more than tweaking the code. A simple test is to log a timestamp at the start of each OnTick call and see how big the gaps get during the London open. If you're seeing long gaps on a quiet VPS, the code itself is probably doing too much.