Backtest realism
Quanorix’s engine aims to be deterministic and close to MetaTrader, but it is not a tick-for-tick Strategy Tester emulator. Understanding the model avoids surprises when exporting.Causal signal
- The signal is evaluated on the close of bar
t. - Market fills are modeled on the open of
t+1(except pending/edge rules documented on the strategy). - No look-ahead: generator and backtest share that semantics.
Costs
bps (basis points)
bps (basis points) measures a cost relative to price:- 1 bps = 0.01% of price (not a fixed pip).
- In Quanorix, spread can be points (MT Market Watch style) or bps; slippage is in bps.
- Example: on EURUSD, 1 bps ≈ 1.1 pips (approx.), because it depends on the price level.
Set them in Generator, strategy detail, or Settings defaults.
SL / TP and M1
- On the entry bar the engine may evaluate SL/TP per engine rules (including intrabar resolution on M1 when applicable).
- Fills report time to the minute (M1) when data exists.
- No re-entry on the same exit bar (avoids unrealistic recycling).
Lots and instrument
- Size is normalized to instrument lots (min/max/step).
- If risk asks below/above a bound, you get a lot clamped warning.
- USD PnL/sizing may need a conversion pair; if missing, there is a fallback with a warning.
Entry trigger: level vs edge
- Level: may retry while the signal stays true.
- Edge: a pulse on false→true (better MT parity on sticky signals, especially HTF).
What does not guarantee perfect MT4 parity
- Different history (GMT vs broker +2/+3) → Sessions and TZ.
- Approximate or unsupported blocks on export.
- Terminal spread/commission different from the backtest.
- Pending / BE / trailing behavior if broker/tester differs.