MetaTrader 5 Strategy Tester: bug, errori, suggerimenti per il miglioramento - pagina 64

 

Sembra che quando si avvia il test (cioè cliccando su "Start" in Strategy Tester), l'agente Tester non copi i file necessari (inclusa la DLL) nella sua cartella interna MQL{Libraries. Ho identificato due eventi:

Se ho un file "Test.dll" nel mio EA, allora

1) Strategy Tester si lamenta che il file Test.dll.ex5 non viene trovato

2) Il Test agent non copia Test.dll nella sua cartella interna e quindi, lo Strategy Tester si lamenta che Test.dll non può essere trovato

Appdata% \ Roaming \ MetaQuotes \ Tester \ <MT5 ID> \ Agent-127.0.0.1-3000 \ MQL5 \ Librerie \

 
Rashid Umarov:

Non c'era nessun divieto

C'era un grave blocco dell'IP - il server non era disponibile. Era impossibile accedere attraverso un anonymizer, perché la password doveva essere sbagliata.

In generale, protezione automatica standard da utenti senza scrupoli.

 
Luis:

Sembra che quando si avvia il test (cioè cliccando su "Start" in Strategy Tester), l'agente Tester non copi i file necessari (inclusa la DLL) nella sua cartella interna MQL{Libraries. Ho identificato due eventi:

Se ho un file "Test.dll" nel mio EA, allora

1) Strategy Tester si lamenta che il file Test.dll.ex5 non viene trovato

2) Il Test agent non copia Test.dll nella sua cartella interna e quindi, lo Strategy Tester si lamenta che Test.dll non può essere trovato

Appdata% \ Roaming \ MetaQuotes \ Tester \ <MT5 ID> \ Agent-127.0.0.1-3000 \ MQL5 \ Librerie \

Ho lo stesso errore in Strategy Tester!

2020.02.25 02:03:35.725 Tester file ***.dll.ex5 open error [2]

Se rinominate la libreria (aggiungete l'estensione .ex5), genera un altro errore:

2020.02.25 02:09:32.567 2020.02.18 00:00:00 Impossibile chiamare 'Receive_Information', '***.dll' non è caricato

2020.02.25 02:09:32.568 2020.02.18 00:00:00 unresolved import function call



 
Slava:

Riprodotto esattamente con il pulsante di arresto premuto.

Se avete bisogno di fare un'ottimizzazione responsabile, è probabilmente meglio farlo dopo aver riavviato il Terminale, senza premere il pulsante Stop.

 
fxsaber:

Se avete bisogno di fare un'ottimizzazione responsabile, è probabilmente meglio farlo dopo aver riavviato il Terminale, senza premere il pulsante Stop.

Possibilmente. Ma non dovremmo dipendere da questo.

Questo comportamento (con la pressione del pulsante di arresto) è stato corretto, e la correzione è inclusa nell'ultima versione

 
Slava:

Possibilmente. Ma non dobbiamo dipendere da questo.

Questo comportamento (con il pulsante di arresto) è stato corretto, e la correzione è inclusa nell'ultima versione

Allora dovete cercare di nuovo il motivo per cui il passaggio di ottimizzazione non è lo stesso del passaggio singolo.

 
fxsaber:

Allora dobbiamo cercare di nuovo il motivo per cui il passaggio di ottimizzazione non è lo stesso del passaggio singolo.

L'esperto di test che conta i millisecondi di ticchettio dà delle discrepanze?

Questo è quello con cui abbiamo trovato il problema, e poi abbiamo controllato con lo stesso Expert Advisor

 
Slava:

Il test EA che conta i millisecondi di tick dà delle discrepanze?

Ha catturato il problema su di esso, poi controllato dallo stesso esperto

Questo EA nel 2340 non ha mostrato più discrepanze.


Il mismatch di passaggio si è verificato nel live EA. Userò il metodo che si è dimostrato valido l'ultima volta.

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

MetaTrader 5 Strategy Tester: bug, errori, suggerimenti per il miglioramento

fxsaber, 2020.02.20 08:57

Ho confrontato le statistiche temporali ottenute durante l'ottimizzazione GA. E lo stait del passaggio singolo.


Nel frame-state l'esecuzione va per tick che non sono nella storia: ho notato subito che ci sono un sacco di affari/ordini, che vengono eseguiti esattamente per un secondo.

Per esempio, un singolo passaggio nella storia ha una voce al 2019.06.04 02:00:00.206, e un passaggio di frame al 2019.06.04 02:00:00.000(la storia dei tick non ha tick in quel momento).


Ci vuole molto tempo per farlo...

 
Ambiente dell'esperimento:

MT5 build 2342 beta
un EA senza ordine di mercato (solo ordine pendente)
16487771 zecche dati simbolo personalizzato
4 agenti di prova locali
4 core fisici della CPU, 32g ram, Windows 7 x64


Metodo sperimentale:

Impostare una corrispondente operazione di tranding virtuale per ogni operazione di trading reale.

Usare le funzioni FrameAdd () e FrameNext () per produrre alcune informazioni dal processo di ottimizzazione e registrarle in un file di testo locale (Excel A to T).


Risultato dell'esperimento:

C'è meno del 20% di possibilità che il compito di ottimizzazione sia completato perfettamente, con gli stessi risultati corretti di un singolo test.

Ma nella stragrande maggioranza dei casi, tutti i risultati restituiti dal compito di ottimizzazione sono sbagliati.



Durante un singolo test e un test di ottimizzazione riuscito, tutti i risultati delle operazioni di trading reali e virtuali sono identici.

Durante il test di ottimizzazione fallito, solo il trading virtuale può restituire il risultato corretto della transazione, mentre tutti i dati restituiti dalle operazioni di trading reali, come il numero di transazioni e l'importo del profitto, sono tutti sbagliati.

(In circostanze normali, una vera operazione di trading chiamerebbe correttamente la funzione OrderSend () e restituirebbe le informazioni sullo stato della transazione in OnTradeTransaction () e OnTrade ().

B: numero del pass d'ordine
D: quantità di zecche trattate
F: somma di tutti i prezzi di domanda
H: somma di tutti i prezzi delle offerte
J: quantità di ordini pendenti virtuali
L: quantità di scambi virtuali
N: profitto netto del commercio virtuale

P: quantità di ordini pendenti reali
R: quantità di scambi reali
T: profitto netto del commercio reale


Tutti i valori dalla colonna D a N sono corretti (casella verde) significa che l'elaborazione dei dati di spunta nel compito di ottimizzazione funziona sempre correttamente.


Valori errati nella casella rossa:

1. su P:
P dovrebbe essere esattamente lo stesso di J, perché sia il virtuale che il reale dovrebbero contare il numero di ordini pendenti sotto le stesse precondizioni.
Le precondizioni sono soddisfatte, inserire il blocco di codice per pending, P ++ immediatamente. Dopo di che, inserite OrderSend ().
I risultati P estremamente anormali significano che le istruzioni successive a volte saltano correttamente (J) e a volte non saltano correttamente quando il programma viene eseguito nelle stesse condizioni.

2. circa R:
R viene contato in OnTradeTransaction ().
L'ordine in P, se attivato, dovrebbe essere contato in R.
Tutti gli zeri R significano che le attività di trading reali nell'esecuzione EA non sono mai entrate in OnTradeTransaction ().
Forse perché gli attuali risultati P sono solo errori casuali, non pendenze significative?

3. circa T:
Il profitto o la perdita in T dovrebbe provenire dalla posizione in R.
Se il contatore delle posizioni in R è tutto zero, da dove viene il calcolo dei profitti e delle perdite in T?


4. Una nota finale:
Il valore di P è molto vicino al valore "Total Trades" restituito dal tester della strategia, ma non esattamente lo stesso.
Sulla base delle mie prove multiple, sembra che il valore di "Total Trades" sia sempre nella stessa sequenza aritmetica del parametro di ottimizzazione in ingresso dell'EA, e abbia lo stesso valore di passo.
È normale che i parametri di input siano sequenze aritmetiche, ma il valore di una variabile il cui significato è completamente irrilevante è anche una sequenza aritmetica simile?

 

Perché un moderatore non viene qui di corsa a cancellare il post e a lasciarlo al suo posto?

<DELETED>

Questo è un forum in lingua inglese

Posta in inglese

? Due pesi e due misure?