1 minute OHLC versus real ticks: comparing September 2026 test totals
Disclosure: I build and sell gold EAs on the MQL5 Market. The test below uses none of my products.
Why does the same EA show different results on "1 minute OHLC" and on "Every tick based on real ticks"? The two modes can hand it different price events, different spreads and different execution prices.
Real-tick testing uses the ticks the broker accumulated, with minute bars used to verify and correct that tick history. In every-tick mode, minutes that have bar history but no ticks get generated tick data. Ticks with no matching minute bar are ignored, because the minute data is treated as more reliable.
I ran this comparison myself. I compiled a short teaching EA, ran it eight times in my Strategy Tester on XAUUSD for September 2026, and checked every total below against my own strategy reports. I am not selling this EA. It is a demonstration of how the two modes disagree.

The table below reproduces the totals from the reports.
The setup
- XAUUSD, M15 chart, 2026.09.01 through 2026.10.01 with the end date excluded (MetaTrader testing boundaries are midnight, and the start is included).
- USD 5,000 deposit, leverage 1:500, fixed 0.10 lot.
- Two stop settings: take profit 50 points with stop loss 50 points, and take profit 30 points with stop loss 300 points. These are symbol points, so their cash value depends on the contract specification.
- Each setting is run as buys and as sells, on both models. Eight runs in total.
- Models: "1 minute OHLC" and "Every tick based on real ticks". All figures are MT5 Strategy Tester simulations.
The M15 choice does not limit the OHLC model to M15 events. That mode emits the open, high, low and close of each minute bar regardless of the chart timeframe, and a low tick-volume bar can produce fewer than four events. That is why it processes about 120,000 ticks per run where real ticks give about 16 million.
Results
All eight runs lost money. Net profit, from my strategy reports:
| Setting | 1 minute OHLC | Real ticks |
|---|---|---|
| Buy, TP 50 / SL 50 | -$2,662.70 (2,011 trades) | -$3,297.50 (2,004) |
| Sell, TP 50 / SL 50 | -$2,292.70 (2,011) | -$3,045.80 (2,000) |
| Buy, TP 30 / SL 300 | -$3,726.00 (2,010) | -$3,582.40 (2,000) |
| Sell, TP 30 / SL 300 | -$3,745.72 (2,011) | -$2,592.62 (2,007) |
Between the two models, on the same settings and the same month:
| Setting | Real ticks minus OHLC | Trades |
|---|---|---|
| Buy, TP 50 / SL 50 | -$634.80 | -7 |
| Sell, TP 50 / SL 50 | -$753.10 | -11 |
| Buy, TP 30 / SL 300 | +$143.60 | -10 |
| Sell, TP 30 / SL 300 | +$1,153.10 | -4 |
The two runs with the tight symmetric stops lost more on real ticks. The two runs with the wide stop lost less. On the sell side with the wide stop, the gap was about USD 1,150 over a month at 0.10 lot.
What this tells a trader
These eight simulations lost money in this sample. Losing simulations do not establish that a strategy has no edge in general.
A setup that wins in the Strategy Tester on 1 minute OHLC can lose in the tester on real ticks, and the reverse can happen too. When someone shows you a backtest, ask which model produced it.
Documentation confirms several possible sources of difference: on real ticks the spread can change inside a minute, while generated ticks use the spread recorded for that minute bar; the models deliver price events on different schedules; and OHLC modes execute pending orders, stop loss and take profit at the requested prices, while accurate tick modes use market-price execution rules. These records do not show which mechanism produced these particular gaps, and the totals alone cannot tell you which trade changed outcome.
The wide-stop simulations also had substantial drawdowns. A smaller final loss does not tell you how deep the account fell during the test.
Before you buy
- Ask the seller for a report on real ticks covering the same period and settings as the OHLC one they show you. If they only have OHLC or Open prices only, you are looking at a faster, simplified model.
- Check the modelling line in the report header and the history quality figure. History quality describes the correctness and gaps of minute data, so 100% does not by itself prove full tick coverage.
- Check the holding times. Holding time runs from opening until a complete close. Partial closing and reversal are not complete closing events, so average and minimum holding time are not enough on their own for a scalper.
- Repeat the seller's window on both models yourself with the free demo, keeping every other setting identical.
Repeat it yourself
The program is in the code box below. It is a teaching demo, so copy it into a new Expert Advisor in MetaEditor and compile it. Then in Strategy Tester pick XAUUSD, M15, 2026.09.01 to 2026.10.01, USD 5,000, 1:500, and set the lot input to 0.10. Run InpDirection 0 and 1, each with TP/SL 50/50 and 30/300, on both models.
//+------------------------------------------------------------------+ //| OhlcPathDemoRecovery.mq5 | //| Teaching EA with no edge. While flat, it checks whether the | //| signal bar changed. If it did, it marks that bar as processed and | //| sends at most one fixed-direction market request with a fixed TP | //| and SL. Entries can therefore happen after the bar opens, and a | //| request can be rejected. Exit levels are requested on the order; | //| this code adds no other exit. Run it on "1 minute OHLC" and on | //| "Every tick based on real ticks" and compare the two reports. | //+------------------------------------------------------------------+ #property version "1.00" #property description "Fixed TP/SL demo for comparing Strategy Tester modelling modes." #include <Trade/Trade.mqh> input int InpDirection = 0; // 0 = always buy, 1 = always sell input int InpTPPoints = 50; // take profit, points input int InpSLPoints = 50; // stop loss, points input double InpLot = 0.01; // fixed lot input ENUM_TIMEFRAMES InpSignalTF = PERIOD_M15; // entry gate: at most one attempt per bar of this timeframe input long InpMagic = 990101; // magic number CTrade trade; datetime g_lastBar = 0; //+------------------------------------------------------------------+ int OnInit() { trade.SetExpertMagicNumber(InpMagic); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ bool HasPosition() { for(int i=PositionsTotal()-1; i>=0; i--) { if(PositionGetTicket(i)==0) continue; if(PositionGetString(POSITION_SYMBOL)==_Symbol && PositionGetInteger(POSITION_MAGIC)==InpMagic) return(true); } return(false); } //+------------------------------------------------------------------+ void OnTick() { datetime bar=iTime(_Symbol,InpSignalTF,0); if(bar==g_lastBar || HasPosition()) return; g_lastBar=bar; //--- stops are placed relative to the fill side of the quote if(InpDirection==0) { double ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK); trade.Buy(InpLot,_Symbol,ask, NormalizeDouble(ask-InpSLPoints*_Point,_Digits), NormalizeDouble(ask+InpTPPoints*_Point,_Digits)); } else { double bid=SymbolInfoDouble(_Symbol,SYMBOL_BID); trade.Sell(InpLot,_Symbol,bid, NormalizeDouble(bid+InpSLPoints*_Point,_Digits), NormalizeDouble(bid-InpTPPoints*_Point,_Digits)); } } //+------------------------------------------------------------------+
The EA works like this: while it holds no position it watches the current bar time. When that time changes it marks the bar as handled and sends one market order, with the stop loss and take profit attached. An entry attempt can happen later in the bar after a position closes. Some bars are skipped while a trade remains open, and a rejected order is not retried during the same bar. Use those mechanics when you read the trade counts. All eight landed near 2,000 closed positions, which is close to the number of M15 bars in the month.
Keep the broker and server name, terminal build, symbol specification and execution delay on record. Instrument specifications, margin settings and commissions can be edited in the tester, so the same symbol name does not mean identical conditions.
My results used my broker's data for September 2026. Your broker's tick history and symbol specification may differ, so your numbers may differ.
The EA is a demonstration and I do not sell it. One of my listed products is Gold Pantheon Sovereign. Search for "Gold Pantheon Sovereign" in the Market tab of your terminal. If a free demo is offered for it, that demo can be selected in Market in Navigator for Strategy Tester use and cannot trade on online charts. Its results would be a separate test from the September runs above (MT5 Strategy Tester simulation, real ticks).


