MT4-Tester VS MT5-Tester - pagina 2

 
fxsaber:

Overkill (100.000 dollari all'inizio)

Lei ha una strana nozione di descrizione delle condizioni di prova.

Questo approccio ai dettagli getta una grande ombra su tutte le vostre conclusioni successive.

 
fxsaber:

Questo non funziona ora in MT4.

Ora funziona in MT4.

Dimostrare e spiegare tecnicamente come si ottiene questo risultato.


Non ho l'obiettivo di denigrare MT5. Sto solo facendo un confronto riproducibile. Certamente il tester MT5 è irraggiungibile per alcuni aspetti, ma il tuning MT4 è anche in grado di dare cose che MT5 non ha, ma che sono davvero richieste. Abbiamo visto che un test accurato su tick reali personalizzati su MT4 è vero al 100%. Bene, e la regolazione di tutti i tipi di impostazioni (commissioni, rientri, regole di attivazione degli ordini pendenti, ecc. In generale, ci sono cose che non sono ancora implementate in MT5.

C'è o c'è la prova precisa che le regole di slittamento e di attivazione sono esattamente come funzionano come dichiarato?

Puoi dimostrare e spiegare tecnicamente come un programma esterno può cambiare le condizioni di attivazione degli ordini nel motore del tester MT4? Non per iniezione profonda in questo motore?

 
Renat Fatkhullin:

Lei ha una strana nozione di descrizione delle condizioni di prova.

Un tale approccio ai dettagli getta una grande ombra su tutte le vostre conclusioni successive.

Se non vi ho detto qualcosa, non l'ho fatto apposta. Credo di avervi dato tutti i dati prima. Ma lo ripeterò ancora una volta.

  • Un'esagerazione completa.
  • Si inizia con 100 000 dollari.
  • Le gamme sono sugli screenshot.
  • Non sono state fissate condizioni per l'interruzione forzata del passaggio.
  • Ticks reali EURUSD M1 2017.04.10 - 2017.04.16 (settimana).
  • Solo un agente locale (1 core) è abilitato.

 
C'è un modo per misurare effettivamente quante percentuali sono attribuite in un dato test MT5:
Criptare i parametri di prova (risultati) => Inviare al loopback => Decriptare i parametri di prova (risultati)

Se prendiamo 50 ms dal soffitto, otteniamo 260 * 2 * 50 / 1000 = 26 sec.
Che non è troppo poco.
Sarebbe interessante conoscere le cifre reali.
 

Renat Fatkhullin:
Докажите и объясните технически, как это достигается.

Come si ottiene tecnicamente - non lo so. Provalo - non sono pronto subito (lo farò dopo aver dormito).

C'è o c'è la prova precisa che le regole di slittamento e di attivazione sono esattamente quelle dichiarate?

Puoi dimostrare e spiegare tecnicamente come un programma esterno possa cambiare le condizioni di attivazione degli ordini nel motore del tester MT4? Non per iniezione profonda in questo motore?

Il semplice fatto che lo spread non è stato fissato per anni suggerisce che l'iniezione è profonda. Questa funzione di MT4 è molto popolare su molti forum. L'unica cosa che lo scoraggia è che non è gratis. Ma la prova è completa, quindi tutti possono provarla. In realtà ho installato la prova stessa qualche ora fa per creare questo thread.

Costruttivo può sostenere solo dopo un po' di riposo. In realtà, tutti possono controllare le dichiarazioni già ora, se lo desiderano.

 
Primi 20/260 passaggi
QR      0       03:29:37.031    Tester  0 : passed in 0:37:27.366
HK      0       03:30:36.307    Tester  1 : passed in 0:00:58.406
MM      0       03:30:40.510    Tester  2 : passed in 0:00:04.196
OF      0       03:30:41.731    Tester  3 : passed in 0:00:01.217
IH      0       03:30:42.538    Tester  4 : passed in 0:00:00.811
MQ      0       03:30:44.880    Tester  5 : passed in 0:00:00.764
LK      0       03:30:45.577    Tester  6 : passed in 0:00:00.687
PL      0       03:30:46.255    Tester  7 : passed in 0:00:00.671
MF      0       03:30:46.929    Tester  8 : passed in 0:00:00.671
GO      0       03:30:47.602    Tester  9 : passed in 0:00:00.671
CO      0       04:15:27.776    Tester  10 : passed in 0:44:40.160
ND      0       04:17:28.477    Tester  11 : passed in 0:01:59.450
HM      0       04:17:34.594    Tester  12 : passed in 0:00:06.099
CK      0       04:17:36.172    Tester  13 : passed in 0:00:01.575
QP      0       04:17:37.080    Tester  14 : passed in 0:00:00.905
LN      0       04:17:37.840    Tester  15 : passed in 0:00:00.765
NG      0       04:17:38.555    Tester  16 : passed in 0:00:00.702
ML      0       04:17:39.244    Tester  17 : passed in 0:00:00.687
RJ      0       04:17:39.925    Tester  18 : passed in 0:00:00.670
CS      0       04:17:40.603    Tester  19 : passed in 0:00:00.671

Parametri di ingresso

Potete vedere che ci sono freni selvaggi quando Shift = 1. Per esempio, ecco come MT4 gestisce il passaggio zero

2017.05.08 04:47:13.779 EURUSD,M1: 1865415 tick events (7292 bars, 1865515 bar states) processed in 0:00:33.541 (total time 0:00:34.289)

Cioè più di 60 volte più veloce.


SZ

Forum sul trading, sistemi di trading automatico e test di strategia

Bug, bug, domande

fxsaber, 2017.04.26 15:08

Si prega di mostrare la gamma e il passo dei parametri ottimizzati nei log dell'ottimizzatore.

E anche nei log dell'agente tali linee

NS      0       14:11:00.853    Tester  756 : passed in 0:00:04.789
MJ      0       14:11:03.447    Tester  757 : passed in 0:00:02.574
RM      0       14:11:05.860    Tester  758 : passed in 0:00:02.340

Accompagnare con informazioni sulla corsa in questione - il nome dell'EA e i suoi parametri di input.

 
fxsaber:

Si può vedere che il selvaggio frena quando Shift = 1. Per esempio, ecco come MT4 affronta uno zero pass

Era diventato inutile aspettare che l'ottimizzazione finisse, così mi sono fermato.

L'esecuzione di un singolo passaggio zero ha mostrato (senza aspettare il completamento) che le prestazioni del tester calavano molto durante l'esecuzione del passaggio.

Le funzioni della storia non sono coinvolte.

 
fxsaber:

Se non l'ho detto bene, non lo pensavo davvero. Credo di avervi dato tutti i dettagli prima. Ma lo dirò di nuovo.

  • Un'esagerazione totale.
  • Si parte da 100 000 USD.
  • Le gamme sono sugli screenshot.
  • Non sono state fissate condizioni per l'interruzione forzata del passaggio.
  • Ticks reali EURUSD M1 2017.04.10 - 2017.04.16 (settimana).
  • Solo un agente locale (1 core) abilitato.

Ok, ecco i miei risultati sullo stesso (solo server Alpari-MT5-Demo):

  • Windows 10 Pro, Intel Xeon E5-2690 @ 2.60GHz

  • 1 nucleo: 27 minuti e 55 secondi
    2017.05.08 05:13:09.636 Tester          optimization finished, total passes 260
    2017.05.08 05:13:09.647 Statistics      optimization done in 27 minutes 55 seconds
    2017.05.08 05:13:09.647 Statistics      local 260 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    

  • 8 core: 6 minuti e 11 secondi
    2017.05.08 04:38:18.663 Tester          optimization finished, total passes 260
    2017.05.08 04:38:18.674 Statistics      optimization done in 6 minutes 11 seconds
    2017.05.08 04:38:18.674 Statistics      local 260 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    
  • 24 core: 3 minuti e 33 secondi
    2017.05.08 05:17:40.990 Tester          optimization finished, total passes 260
    2017.05.08 05:17:41.000 Statistics      optimization done in 3 minutes 33 seconds
    2017.05.08 05:17:41.000 Statistics      local 260 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    

Chiaramente non ha senso ottimizzare in un solo core in MT5 e anche su 8 core tutto va molto veloce. Sono sicuro che i tuoi 14 minuti in MT4 sono fatti su una CPU vicina in potenza per core, quindi i tempi possono essere confrontati. Ho anche una frequenza per core di soli 2,6 Ghz.

Perché non c'è una riduzione lineare del tempo? Perché i compiti sono disomogenei a causa del numero di mestieri. Alcuni passaggi hanno 100 scambi (il calcolo richiede un secondo), e alcuni hanno 230.000 scambi (fino a 50 secondi). Poiché la velocità di calcolo è completamente determinata da chi e come sono distribuiti i passaggi più lunghi, il percorso critico nei pacchetti non è molto ridotto.


I vostri ritardi sono puramente dovuti all'inefficiente scansione della cronologia delle transazioni nella versione di rilascio. I casi di rallentamento sono passaggi con 200.000 o più scambi.

L'intero esempio dell'Expert Advisor è scritto in modo che faccia solo una cosa - scansiona l'intera storia dei trade su ogni tick in un modo terribilmente inefficiente. Si tratta di 1,8 milioni di scansioni complete dell'intera storia per un solo passaggio. E per di più, il codice delle selezioni MT5 non è nativo, ma una stampella sotto forma di wrapper stile MT4, che dà ancora più spese.


Come ho mostrato prima, abbiamo riscritto drasticamente il funzionamento e il campionamento delle grandi storie commerciali e ora non c'è differenza nella profondità della storia.

Ho allegato l'ultima build 1598 per controllare, dove tutto gira veloce. Basta sostituire i file nella directory di MetaTrader 5.

Ecco il registro dei passaggi:

OK      0       04:45:17.505    History EURUSD,M1: history cache allocated for 484457 bars and contains 473528 bars from 2016.01.04 00:00 to 2017.04.07 23:59
IR      0       04:45:17.540    History EURUSD,M1: history begins from 2016.01.04 00:00
RF      0       04:45:24.469    Tester  0 : passed in 0:00:07.188
KO      0       04:45:26.727    Tester  1 : passed in 0:00:02.188
CQ      0       04:45:27.857    Tester  2 : passed in 0:00:01.109
QJ      0       04:45:28.758    Tester  3 : passed in 0:00:00.890
NL      0       04:45:29.525    Tester  4 : passed in 0:00:00.750
ME      0       04:45:30.237    Tester  5 : passed in 0:00:00.688
LO      0       04:45:30.923    Tester  6 : passed in 0:00:00.671
RP      0       04:45:31.612    Tester  7 : passed in 0:00:00.672
NJ      0       04:45:32.363    Tester  8 : passed in 0:00:00.734
RS      0       04:45:33.065    Tester  9 : passed in 0:00:00.687
MK      0       04:45:42.777    Tester  10 : passed in 0:00:09.703
HP      0       04:45:45.928    Tester  11 : passed in 0:00:03.094
EN      0       04:45:47.354    Tester  12 : passed in 0:00:01.406
HG      0       04:45:48.313    Tester  13 : passed in 0:00:00.953
LL      0       04:45:49.110    Tester  14 : passed in 0:00:00.781
QJ      0       04:45:49.828    Tester  15 : passed in 0:00:00.703
NS      0       04:45:50.523    Tester  16 : passed in 0:00:00.688
MH      0       04:45:51.215    Tester  17 : passed in 0:00:00.672
DF      0       04:45:51.901    Tester  18 : passed in 0:00:00.672
FO      0       04:45:52.646    Tester  19 : passed in 0:00:00.735
NE      0       04:46:04.884    Tester  20 : passed in 0:00:12.219

Un passaggio zero con 216k trade (parametri Shift=1, Limit=5) ha funzionato in 7 secondi.

File:
MetaTester64.zip  7571 kb
terminal64.zip  14201 kb
 
Renat Fatkhullin:

L'intero esempio di Expert Advisor è scritto in modo tale da fare solo una cosa: scansiona in modo spaventosamente inefficiente l'intera storia delle transazioni ad ogni tick. Questo è 1,8 milioni di scansioni complete dell'intera storia degli scambi per un solo passaggio. E il codice MT5 non è nativo, ma una stampella sotto forma di wrapper stile MT4, che dà ancora più spese.

Forum sul trading, sistemi di trading automatico e test di strategia

MT4-Tester VS MT5-Tester

fxsaber, 2017.05.08 04:03

Le funzioni della storia non sono coinvolte.

Prova
bool Func1( datetime, datetime ){ return false; };
bool Func2( long ){ return false; };

#define HistorySelect Func1
#define HistorySelectByPosition Func2

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

Forum sul trading, sistemi di trading automatico e test di strategie di trading

MT4-Tester VS MT5-Tester

fxsaber, 2017.05.08 01:11

Se c'è qualche dubbio che il rallentamento di MT5 sia causato dall'uso di una libreria di terze parti, chi vuole può riscrivere la semplice logica MT4 di questo EA in MQL5 a modo suo e testare l'ipotesi.
 
Renat Fatkhullin:

Come ho mostrato prima, abbiamo riscritto drasticamente il funzionamento e il campionamento delle grandi storie commerciali e ora non c'è differenza nella profondità della storia.

Ho allegato l'ultima build 1598 per i test, dove tutto funziona rapidamente. Basta cambiare i file nella directory di MetaTrader 5.

Il 1598 funziona molto più velocemente del 1596. E funziona anche in luoghi in cui le funzioni di Storia non sono utilizzate affatto. Apparentemente, il terminale ha causato quelle funzioni lente nelle sue viscere durante la corsa.


Ottimizzare MT4

2017.05.08 02:35:33.074 Lucky: optimization started
2017.05.08 02:49:51.431 Lucky: optimization finished in 0:14:18
2017.05.08 02:49:51.436 There were 260 passes done during optimization


Ottimizzazione della MT5

2017.05.08 07:40:38.429 Tester  Experts\MT4Orders\Lucky.ex5 on EURUSD,M1 from 2017.04.10 00:00 to 2017.04.16 00:00
2017.05.08 07:40:38.597 Tester  EURUSD: preliminary downloading of history ticks started, it may take quite a long time
2017.05.08 07:40:39.600 Tester  EURUSD: preliminary downloading of history ticks completed, 100.38 Kb in 0:01.170 (85.80 Kb/sec)
2017.05.08 07:40:39.600 Tester  EURUSD: ticks data begins from 2016.11.01 00:00
2017.05.08 07:40:39.600 Tester  complete optimization started
2017.05.08 07:40:39.600 Tester  size of initial task batch is 260
2017.05.08 07:40:39.612 Core 1  agent process started
2017.05.08 07:40:39.612 Core 1  connecting to 127.0.0.1:3000
2017.05.08 07:40:41.620 Core 1  connected
2017.05.08 07:40:41.622 Core 1  authorized (agent build 1598)
2017.05.08 07:40:42.771 Core 1  common synchronization completed
2017.05.08 07:40:42.797 Core 1  EURUSD: ticks synchronized already [43 bytes]
2017.05.08 08:04:54.332 Tester  optimization finished, total passes 260
2017.05.08 08:04:54.342 Statistics      optimization done in 24 minutes 16 seconds
2017.05.08 08:04:54.342 Statistics      local 260 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2017.05.08 08:04:54.342 Core 1  connection closed


Ora MT5 è 1,7 volte più lento di MT4.


ZS Non tutte le corse combaciavano perfettamente. Quindi uno dei tre sta sicuramente mentendo (MT4+TDS, MT5, MT4Orders). Noi cercheremo.

Motivazione: