Tick bursts and the cross your OnTick logic never saw
Posted: Thu Oct 15, 2026 8:48 pm
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.
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.