MT5 backtester stuck in infinite loop

what happens with a number of strategies is that the tester just turns around and can't revoke the warrant or continue testing, and that goes on endlessly..





2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #1, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #2, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #3, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #4, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #5, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Maximum retries 5 reached. Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Deleting previous pending order
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00  Deleting pending order, ticket: 969
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #1, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #2, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #3, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #4, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #5, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Maximum retries 5 reached. Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Deleting previous pending order
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00  Deleting pending order, ticket: 969
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #1, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #2, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #3, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #4, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #5, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Maximum retries 5 reached. Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Deleting previous pending order
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00  Deleting pending order, ticket: 969
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #1, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #2, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #3, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #4, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #5, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Maximum retries 5 reached. Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Deleting previous pending order
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00  Deleting pending order, ticket: 969
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #1, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #2, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #3, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #4, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #5, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Maximum retries 5 reached. Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Deleting previous pending order
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00  Deleting pending order, ticket: 969
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #1, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #2, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #3, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #4, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Retrying #5, Error: 4756 : Trade request sending failed
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   failed cancel order #969 sell stop 0.02 EURUSD at 1.11762 sl: 1.12253 tp: 1.11305 [Market closed]
2021.12.02 20:50:04.844 Core 1 2016.10.02 20:00:00   ---VERBOSE--- 2016.10.02 20:00 Maximum retries 5 reached. Error: 4756 : Trade request sending failed

Attachments
  • Votes +7
  • Project StrategyQuant X
  • Type Bug
  • Status Fixed
  • Priority Normal

History

Rr
#1

Partizanas

02.12.2021 19:51

Task created

E
#2

Emmanuel

08.12.2021 14:11
Voted for this task.
AS
#3

ali.senobary

03.01.2022 17:34

Attachment Untitled.jpg added

Untitled.jpg
(63.74 KiB)
Hi ...

In Expert Settings, change the following option to TRUE

AS
#4

ali.senobary

03.01.2022 17:34
Voted for this task.
b
#5

bentra

14.01.2022 04:01
Voted for this task.
b
#6

bentra

14.01.2022 04:04
Me too. Retry trades is stuck in an infinite loop. The market is closed so this will never work. Need to add in some wait time and then do a retry. Better yet, test if the market is open before putting the trade.

@ ali no that didnt help me.
b
#7

bentra

14.01.2022 04:25

There are 2 of these lines in the mql5 code

               sqDeletePendingOrder(orderTicket);


change them to this


               if(!sqDeletePendingOrder(orderTicket)) Sleep(1000);

Then your EA will eventually continue and function and will not be stuck in an infinite loop


b
#8

bentra

14.01.2022 05:51

Subject changed from MT5 backtester to MT5 backtester stuck in infinite loop

g
#9

geektrader

14.01.2022 06:04
Voted for this task.
g
#10

geektrader

14.01.2022 06:07
I´ve also noticed this bug. If you change the MT5 EA setting to modify pending orders instead to replace them, the issue is gone. But this should definitely be fixed still.
l
#11

Loonly

14.01.2022 08:40
Voted for this task.
b
#12

bentra

14.01.2022 14:28
@geektrader, "modify pending orders instead to replace" this didnt help me actually...
g
#13

geektrader

14.01.2022 21:43
Interesting, here it helped. But one thing is for sure: this is a bug and needs to be fixed, getting stuck in a endless loop is always a bug.
b
#14

bentra

15.01.2022 02:25
"getting stuck in an endless loop is always a bug." -words to live by in coding and otherwise
DC
#15

anuffi

10.02.2022 04:18
Voted for this task.
TB
#16

Tomas Brynda

25.02.2022 15:24

Status changed from New to Fixed

Attachment SQ.mqh added

SQ.mqh
(171.87 KiB)
Hi all,

thank you for reporting this issue.

I have made a fix that returns 0 if the order can't be deleted, it will skip opening a new order in this case.


Unfortunately checking if market is open is not that easy in MQL5. I have tried various ways, but neither of them was working 100% under all circumstances.


If you want to use a quick fix, please replace an original file internal\extend\Code\MetaTrader5\SQ.mqh with the one attached.


Best regards,

Tomas

b
#17

bentra

25.02.2022 20:27
Thanks for the quick fix.

Are sure that won't cause trades to be skipped in MT5 that weren't skipped in SQX? Why not just let sleep for a few seconds and try again? 


if(!sqDeletePendingOrder(orderTicket)) Sleep(1000);


EDIT:
I tried it on a D1 strategy and it is missing 2% of the trades when using the new SQ.mqh file vs my suggested fix.

TB
#18

Tomas Brynda

07.03.2022 11:29

Attachment SQ.mqh added

SQ.mqh
(171.87 KiB)
Hi Bentra,

actually the sleeping between retries are implemented in our MQL code, but it is suspended during backtests.

For MQL4 it was stated that Sleep function does not take effect during testing. For MQL5 I struggle to find some relevant info.


Nevertheless, please try the last attached SQ.mqh, it should call Sleep function between retries even during testing.

Please let me know if it helped.


Best regards,

Tomas

b
#19

bentra

07.03.2022 15:35
MQL5 sleep does work during backtest. My only change to code was to add sleep and this stopped the infinite loop during the backtest. Increasing the sleep time reduced the number of errors and makes the test faster but then it starts missing some trades (unsurprisingly.)

To be clear, in your new mqh file it is less likely to miss trades, correct? The problem with the last one was that it was missing a few trades in the higher timeframe strategies.
TB
#20

Tomas Brynda

08.03.2022 08:22
Yes, the last version uses sleeps between order delete retries, that should eliminate missing trades.

Thank you for your feedback

b
#21

bentra

12.03.2022 01:16
So far so good. I looked at the code and looks like you did a great job and covered a lot of bases. This new SQ.mqh file caused my strategy to find a couple of new trades I didn't even know I was missing =)
TB
#22

Tomas Brynda

14.03.2022 07:49
Sounds good :)

Thanks a lot Bentra

Cc
#23

Cyber

07.05.2022 14:16
Voted for this task.

Votes: +7

Drop files to upload

or

choose files

Max size: 5MB

Not allowed: exe, msi, application, reg, php, js, htaccess, htpasswd, gitignore

...
Wait please