Can't backtest EA on Futures

 

Hi all,

I run into a strange situation when trying to backtest my EA on demo account (RoboForex ECN). While I can normally backtest forex pairs (EURUSD, GBPUSD...) it looks like that can not be done on Nasdaq (NQU25 expires sept. 2025) it just does not process any tick even though I can see them when going to Symbols->Bars or Ticks. The only warning I see as relevant is in the Stretegy Tester Journal saying "start time changed ... to provide data at beginning". I know features have start and expiration date, but I'm testing inside valid period. Any idea what is going on and how could I fix this. Thanks.




 

I tested it myself on the same broker and account type, and had the same issue when I used the "Daily" chart. But If I change to "Hourly", it worked correctly.

Initially I suspected it might be because of the daily session time which opens at 01h00, making it fail for all time-frames above "H1". However, XAUUSR also opens at 01h00, yet it happily tests higher time-frames.

So, now I suspect that maybe the futures contract does not allow trading on higher time-frames. I don't have much experience with Futures, especially on this broker, so I have no idea why it works like this in the tester.

Here is the log output for a back test on the Hourly time-frame ...

NH      0       14:24:03.705    Tester  NQU25: ticks data begins from 2025.06.23 00:00
QS      0       14:24:03.705    Core 1  connecting to 127.0.0.1:3000
ED      0       14:24:03.712    Core 1  connected
OE      0       14:24:03.715    Core 1  authorized (agent build 5200)
EM      0       14:24:03.720    Tester  NQU25,H1 (RoboForex-ECN): testing of Experts\FMIC\TickTrack\TickTrack_v4.ex5 from 2025.06.25 00:00 to 2025.06.30 00:00
OO      0       14:24:03.728    Core 1  common synchronization completed
RD      0       14:24:03.731    Core 1  NQU25: ticks synchronized already [41 bytes]
FM      0       14:24:04.030    Core 1  test Experts\FMIC\TickTrack\TickTrack_v4.ex5 on NQU25,Daily thread finished
HP      0       14:24:04.030    Core 1  prepare for shutdown
RH      0       14:24:04.030    Core 1  shutdown finished
QD      0       14:24:04.030    Core 1  login (build 5200)
LO      0       14:24:04.030    Core 1  account info found with currency USD
FD      0       14:24:04.030    Core 1  1478 bytes of tester parameters loaded
KP      0       14:24:04.030    Core 1  21700 bytes of input parameters loaded
FJ      0       14:24:04.030    Core 1  initial deposit 1000.00 USD, leverage 1:500
CS      0       14:24:04.030    Core 1  successfully initialized
GI      0       14:24:04.030    Core 1  1704 bytes of total initialization data received
IR      0       14:24:04.030    Core 1  Intel Core i7-4790T  @ 2.70GHz, 16274 MB
GI      0       14:24:04.030    Core 1  NQU25: symbol to be synchronized
LS      0       14:24:04.030    Core 1  NQU25: symbol synchronized already, 16 bytes received
DG      0       14:24:04.030    Core 1  NQU25: load 25 bytes of history data to synchronize in 0:00:00.000
OK      0       14:24:04.030    Core 1  NQU25: history synchronized from 2025.06.20 to 2025.08.01
PM      0       14:24:04.030    Core 1  NQU25: ticks synchronization started
CJ      0       14:24:04.030    Core 1  NQU25: load 32 bytes of tick data to synchronize in 0:00:00.000
RQ      0       14:24:04.030    Core 1  NQU25: history ticks synchronized from 2025.06.23 to 2025.08.01
HO      3       14:24:04.030    Core 1  NQU25: start time changed to 2025.06.27 00:00 to provide data at beginning
CH      0       14:24:04.030    Core 1  NQU25,H1: history cache allocated for 153 bars and contains 101 bars from 2025.06.20 15:00 to 2025.06.26 23:00
ON      0       14:24:04.030    Core 1  NQU25,H1: history begins from 2025.06.20 15:00
DI      0       14:24:04.030    Core 1  NQU25,H1 (RoboForex-ECN): generating based on real ticks
MN      0       14:24:04.030    Core 1  NQU25,H1: testing of Experts\FMIC\TickTrack\TickTrack_v4.ex5 from 2025.06.25 00:00 to 2025.06.30 00:00 started with inputs:

...

PI      0       14:24:04.030    Core 1  NQU25,M15: history cache allocated for 608 bars and contains 402 bars from 2025.06.20 15:30 to 2025.06.26 23:45
PK      0       14:24:04.030    Core 1  NQU25,M15: history begins from 2025.06.20 15:30
RO      0       14:24:04.030    Core 1  2025.06.27 00:00:00   Minimum reward to risk ratio: 1.0101010101010102
DR      0       14:24:04.030    Core 1  NQU25 : real ticks begin from 2025.06.23 00:00:00
QK      0       14:24:04.030    Core 1  2025.06.27 01:03:50   market sell 0.1 NQU25 (22690.50 / 22690.50)
QF      0       14:24:04.030    Core 1  2025.06.27 01:03:50   deal #2 sell 0.1 NQU25 at 22690.50 done (based on order #2)
QN      0       14:24:04.030    Core 1  2025.06.27 01:03:50   deal performed [#2 sell 0.1 NQU25 at 22690.50]
MO      0       14:24:04.030    Core 1  2025.06.27 01:03:50   order performed sell 0.1 at 22690.50 [#2 sell 0.1 NQU25 at 22690.50]
NO      0       14:24:04.030    Core 1  2025.06.27 01:03:50   position modified [#2 sell 0.1 NQU25 22690.50 sl: 22868.98]
CH      0       14:24:04.030    Core 1  2025.06.27 01:15:00   position modified [#2 sell 0.1 NQU25 22690.50 sl: 22868.88]
OJ      0       14:24:04.030    Core 1  2025.06.27 02:15:02   position modified [#2 sell 0.1 NQU25 22690.50 sl: 22868.72]
GG      0       14:24:04.030    Core 1  2025.06.27 02:30:00   position modified [#2 sell 0.1 NQU25 22690.50 sl: 22868.11]
HQ      0       14:24:04.030    Core 1  2025.06.27 02:45:00   position modified [#2 sell 0.1 NQU25 22690.50 sl: 22867.62]
PR      0       14:24:04.030    Core 1  2025.06.27 03:30:00   position modified [#2 sell 0.1 NQU25 22690.50 sl: 22867.52]
LL      0       14:24:04.030    Core 1  2025.06.27 03:45:00   position modified [#2 sell 0.1 NQU25 22690.50 sl: 22866.80]
PI      0       14:24:04.030    Core 1  2025.06.27 04:15:00   position modified [#2 sell 0.1 NQU25 22690.50 sl: 22866.35]
IK      0       14:24:04.030    Core 1  2025.06.27 04:30:00   position modified [#2 sell 0.1 NQU25 22690.50 sl: 22865.67]
PE      0       14:24:04.030    Core 1  2025.06.27 23:58:59   position closed due end of test at 22739.50 [#2 sell 0.1 NQU25 22690.50 sl: 22865.67]
JK      0       14:24:04.030    Core 1  2025.06.27 23:58:59   deal #3 buy 0.1 NQU25 at 22739.50 done (based on order #3)
CG      0       14:24:04.030    Core 1  2025.06.27 23:58:59   deal performed [#3 buy 0.1 NQU25 at 22739.50]
OQ      0       14:24:04.030    Core 1  2025.06.27 23:58:59   order performed buy 0.1 at 22739.50 [#3 buy 0.1 NQU25 at 22739.50]
MN      0       14:24:04.030    Core 1  final balance 901.10 USD
PH      0       14:24:04.030    Core 1  OnTester result 0.0002370885791717826
JM      0       14:24:04.030    Core 1  NQU25,H1: 401861 ticks, 23 bars generated. Test passed in 0:00:00.301 (including ticks preprocessing 0:00:00.047).
JS      0       14:24:04.030    Core 1  118 Mb memory used including 0.94 Mb of history data, 64 Mb of tick data
EH      0       14:24:04.030    Core 1  log file "C:\Trading\MetaQuotes\MetaTrader 5\Tester\Agent-127.0.0.1-3000\logs\20250820.log" written
JG      0       14:24:04.070    Core 1  connection closed
 

I have experience with real futures in MT5.

To clarify, the OP is trading CFD's named after real futures.

I've never traded CFD's because they're banned in my home country. Having said that, I'm surprised that a CFD would have more trading restrictions than real futures. As I understand, the general idea behind CFD's is to avoid the complexity of a centralized exchange.

To expand on Fernando Carreiro's suspicion, what is the daily bar close time in MT5 with that broker-dealer?

 
Fernando Carreiro #:

I tested it myself on the same broker and account type, and had the same issue when I used the "Daily" chart. But If I change to "Hourly", it worked correctly.

Initially I suspected it might be because of the daily session time which opens at 01h00, making it fail for all time-frames above "H1". However, XAUUSR also opens at 01h00, yet it happily tests higher time-frames.

So, now I suspect that maybe the futures contract does not allow trading on higher time-frames. I don't have much experience with Futures, especially on this broker, so I have no idea why it works like this in the tester.

Here is the log output for a back test on the Hourly time-frame ...

Thanks for your input. I confirm, switching to lower time frame (H4, H1...) works normal. 

Currently don't know what to do, my strat is based on daily time frame.

Your statement about session open-close times makes me think. Looking at specification of NQ I see quotes indeed start at 01:00, so this may cause confusion to the tester. Have tried XAUUSD, it has same problem as NQ, don't know how you made it work on D1 time frame.

 
arcull #:  Currently don't know what to do, my strat is based on daily time frame.

Just use H1, and modify your new bar detection code, and your access to series data, or Indicator code to use PERIOD_D1 instead of PERIOD_CURRENT. You can even set it as input parameter.

arcull #Have tried XAUUSD, it has same problem as NQ, don't know how you made it work on D1 time frame.
Are you sure it is the same issue, or is it perhaps a "Market closed" issue?
 
Ryan L Johnson #To clarify, the OP is trading CFD's named after real futures.

Confirmed, they are CFDs.

@Ryan L Johnson #To expand on Fernando Carreiro's suspicion, what is the daily bar close time in MT5 with that broker-dealer?

Trade hours / Session time (UTC+3), and tick data confirms the session times:


 
Fernando Carreiro #:

Just use H1, and modify your new bar detection code, and your access to series data, or Indicator code to use PERIOD_D1 instead of PERIOD_CURRENT. You can even set it as input parameter.

Are you sure it is the same issue, or is it perhaps a "Market closed" issue?

Yes you're right I can change the new bar detection in my EA.

Will check running XAUUSD on D1 once again.

Thanks for help.

 
If someone can send me the credentials to a demo account on this broker I will check.
 
@Alain Verleyen #If someone can send me the credentials to a demo account on this broker I will check.

What is it you want to check?

I have already confirmed the user's issue, but I will send you my demo account credentials via PM anyway.

 
Fernando Carreiro #:
Trade hours / Session time (UTC+3), and tick data confirms the session times...

That 01:00 daily open time strikes me as a bit strange.

Of course, this is apples to oranges but here are my real E-Micro Gold Futures times:

MGC

As you can see, the daily break is intraday which does not move the daily open away from 00:00. How there are both a 00:00 and 24:00 times... Who knows, but I don't have daily timeframe issues.

Just to reconfirm, what open time do you see when you roll your mouse cursor over a daily candle/bar? (I'm not aware that MT5 can start a daily bar on a chart beyond 00:00).

 
Fernando Carreiro #:

What is it you want to check?

I have already confirmed the user's issue, but I will send you my demo account credentials via PM anyway.

There is clearly an issue there, it's not normal. So I want to check it myself before reporting it to MQ.