Logging real slippage on market orders (MT5 + a dumb Python script)
Posted: Sat Sep 05, 2026 9:05 am
Broker comparison threads love screenshots of "0.0 spread." Cool. Show me your **slippage distribution** on market orders during London open and I'll care.
I got tired of vibes, so I log every scalp fill:
- Requested price (tick at send)
- Fill price
- Symbol, side, size
- Server time + local VPS time
- Spread at send
- Comment tag (session: london_open / overlap / news)
MT5 deal history gives you most of this if you pull it via Python (`MetaTrader5` package) after the session. I dump CSV, then a 30-line pandas script: mean/median/p95 slippage in points, split by hour.
**Ugly truths from doing this:**
- Average slippage can look fine while p95 ruins your expectancy on the days that matter.
- Some brokers are saints at 10:00 and monsters at 08:05.
- "Raw account" does not automatically mean honest fills when liquidity is thin.
I'm not naming-and-shaming in the OP on purpose — numbers first, brand wars second. If you've got a clean method (or better fields I should log), pile on.
What slippage stats do you actually track — average only, or percentiles?
Anyone logging slippage live via deal listener instead of end-of-day export?
Does your broker look different on EURUSD vs XAUUSD under the same logging?
I got tired of vibes, so I log every scalp fill:
- Requested price (tick at send)
- Fill price
- Symbol, side, size
- Server time + local VPS time
- Spread at send
- Comment tag (session: london_open / overlap / news)
MT5 deal history gives you most of this if you pull it via Python (`MetaTrader5` package) after the session. I dump CSV, then a 30-line pandas script: mean/median/p95 slippage in points, split by hour.
**Ugly truths from doing this:**
- Average slippage can look fine while p95 ruins your expectancy on the days that matter.
- Some brokers are saints at 10:00 and monsters at 08:05.
- "Raw account" does not automatically mean honest fills when liquidity is thin.
I'm not naming-and-shaming in the OP on purpose — numbers first, brand wars second. If you've got a clean method (or better fields I should log), pile on.
What slippage stats do you actually track — average only, or percentiles?
Anyone logging slippage live via deal listener instead of end-of-day export?
Does your broker look different on EURUSD vs XAUUSD under the same logging?