Risultati completamente diversi dallo stesso esperto

 

Sono molto, molto perplesso con i risultati che sto ottenendo dal backtester di Metatrader. Spero che qualcun altro abbia avuto esperienze simili e possa avere un'idea di cosa possa causare la mia.

Un esperto che ho sviluppato ha ottenuto risultati eccellenti nei backtest e attraverso una vasta gamma di variazioni nell'ottimizzazione e nell'ottimizzazione walkforward. Poi improvvisamente, senza che io abbia fatto consapevolmente grandi cambiamenti, i risultati sono diventati mediocri/marginali. Poi oggi di nuovo i risultati sono diventati improvvisamente superbi.

Ora ho rapporti di backtesting con lo stesso esatto esperto, le stesse date, lo stesso esatto file di impostazioni e risultati completamente diversi. Ho fatto del mio meglio per assicurarmi che i dati siano gli stessi (ricostruendoli dai dati storici scaricati ieri, ho comunque ottenuto risultati molto diversi oggi rispetto ad allora).

L'unica cosa che ho trovato che potrebbe essere diversa è la diffusione. Per quanto posso capire, MT4 presume che lo spread durante un intero periodo di backtesting sia stato lo stesso di quello attuale. Una "caratteristica" piuttosto strana del sistema, ma non la spiegazione delle mie osservazioni, poiché con spread stretti oggi, i risultati sono stati mediocri, mentre con spread leggermente più ampi ieri, i risultati sono stati incredibilmente buoni.

Dopo queste esperienze, mi trovo in una posizione in cui non sono sicuro di poter fare affidamento sulle informazioni che ricevo dal software, e ho un disperato bisogno di una spiegazione che posso usare per evitare di essere ingannato (in un modo o nell'altro) in futuro.

Ecco i grafici dei risultati mediocri e dei risultati incredibilmente buoni per i backtest con lo stesso esperto, lo stesso periodo (dal 2011/1/1 al 2011/7/26) e le stesse impostazioni. I trade sono tipicamente aperti per ore o più e non utilizzano take profit o stop loss (tutte le entrate e le uscite sono basate solo sugli stati degli indicatori). Il numero di trade nelle due serie sono 211 e 173. Ci sono perdite nel secondo grafico, ma il fattore di profitto è molto alto.


 
Elroch:


Ora ho rapporti di backtesting con lo stesso esatto esperto, le stesse date, lo stesso esatto file di impostazioni e risultati completamente diversi. Ho fatto del mio meglio per assicurarmi che i dati siano gli stessi (ricostruendoli dai dati storici scaricati ieri, ho ancora ottenuto risultati molto diversi oggi rispetto ad allora).


Scarica di nuovo i tuoi dati, disconnetti il tuo terminale (io lo faccio accedendo con un numero di conto non valido), cancella la tua cronologia e i dati già memorizzati nel terminale, importa i tuoi dati, M1 presumo? fai gli altri periodi che ti servono usando il convertitore di periodi e importali. . . controlla di avere i dati che ti servono per il periodo di date che vuoi eseguire. . . lancia il tuo EA.
 
Grazie, ma ho più di una volta costruito i dati da 10 anni di dati scaricati a 1 minuto nel modo che suggerisci, riavviato il software molte volte, memorizzato l'esatto EA e le impostazioni e ancora ottenuto risultati completamente diversi in una corsa successiva. Sono ancora perplesso.
 

Elroch:

Un esperto che ho sviluppato ha ottenuto risultati eccellenti nei backtest e in un'ampia gamma di variazioni nelle corse di ottimizzazione e ottimizzazione walkforward.

Poi improvvisamente, senza che io abbia fatto consapevolmente grandi cambiamenti, i risultati sono diventati mediocri/marginali.

Poi oggi di nuovo i risultati sono diventati improvvisamente superbi.

Il tester usa lo spread CORRENTE. Il tuo EA è molto sensibile ai cambiamenti.
 
WHRoeder:
Il tester usa lo spread CORRENTE. Il tuo EA è molto sensibile ai cambiamenti.

Come ho detto, l'ho notato ma, dato che ho ottenuto risultati mediocri sulla corsa di oggi con uno spread di 1,2 pips, questa non è la spiegazione.
 

Se le tue entrate e uscite sono davvero basate solo sui valori dell'indicatore, stai facendo trading con lotti moderati e guadagnando una buona media in pip/trade non rimangono molte opzioni:

a) file di cronologia corrotto

b) qualcosa come la casualità inclusa

c) dipende da qualche variabile globale (che è stata cambiata tra i due test)

d) alcune impostazioni del broker potrebbero essere cambiate, (improbabile)

Perché non eseguire il test in modalità ogni tick? Questo ti mostrerà la qualità dei dati.

 

Gli psudo ticks creati da strategy tester sono identici per ogni esecuzione di test e gli indicatori utilizzati dall'EA creano valori per ogni tick dell'ultima barra come farebbero nel trading dal vivo?

 

Grazie per i tuoi punti interessanti, zzueg.

(a) sembra impossibile che un file storico corrotto possa spiegare la sequenza di risultati di backtesting con lo stesso EA: cioè risultati mediocri, risultati superbi, risultati mediocri e simili risultati superbi in un periodo che va da venerdì della settimana scorsa, durante il quale ho fatto nuove installazioni di metatrader, ricostruito tutti i dati da dati scaricati presumibilmente di alta qualità a 1 minuto, ecc.

(b) il problema con qualsiasi spiegazione dovuta a effetti casuali (compresi i cattivi dati) è che è molto difficile capire perché dovrebbe rendere i trade sempre enormemente migliori.

(c) Per un paio di giorni, ho pensato che potesse essere qualche cambiamento accidentale nel mio codice. Ma oggi, quando ho ottenuto i risultati incredibilmente buoni, ho immediatamente salvato una copia dell'esperto (sorgente ed ex4) e il file delle impostazioni. Ma lo stesso esatto esperto e le impostazioni hanno dato risultati mediocri in un'esecuzione successiva.

(d) sì, non sono sicuro che ci sia molto dal broker che sia rilevante oltre allo spread. Questi sono tutti backtest piuttosto che trading dal vivo, naturalmente, e i dati sono stati costruiti principalmente da 10 anni di dati a 1 minuto scaricati.

(e) Con l'esperto che entra ed esce dalle posizioni all'apertura della barra e non usa affatto stop o profit target (nella versione in studio, comunque), la mia comprensione è che gli unici valori che possono influenzare i risultati sono l'apertura, l'alto, il basso e la chiusura delle barre dai grafici a 5 minuti in su (in realtà succede che anche la chiusura è irrilevante: ci sono diverse varianti dello stesso indicatore utilizzate, e queste usano (H+L)/2 come punto dati, mentre l'entrata e l'uscita avvengono all'apertura della barra, quindi anche i dati di apertura e lo spread sono importanti. Se un trade viene aperto o chiuso dipende dai valori degli indicatori sulle barre precedenti, non sulla barra corrente.

...ma per amore di completezza, ho fatto una prova con "tutti i tick". I risultati sono stati praticamente identici al precedente, con una piccola differenza spiegata dal fatto che l'ultimo trade è stato chiuso all'ultima barra da 1 minuto piuttosto che all'ultima barra da 5 minuti.


SDC, non posso essere sicuro che ogni tick generato sia lo stesso, ma tieni a mente i punti che ho fatto in risposta a zzueg in (e) sopra.
 

Non intendevo dire che i risultati cambiano in ogni modalità di tick, sono interessato alla quantità di errori grafici non corrispondenti riportati.

Le lacune nella storia sono molto improbabili poiché non spiegherebbero una tale differenza con una strategia basata su indicatori.

Ho avuto problemi simili solo con dati corrotti, dal momento che il mio terminale è sempre offline non ho più sperimentato nulla del genere.

Con le variabili globali intendevo: avete qualcosa come GlobalVariableGet() nel vostro codice, queste variabili non sono limitate all'ambiente di test.

Infine solo per aver chiesto a tutti: qualche errore nel log?

@SDC, sì, gli pseudo tick sono generati in modo identico per ogni esecuzione. Dalla mia esperienza via del 90% di precisione, ma sempre gli stessi.

 

Grazie ancora per le vostre osservazioni. Ora mi trovo nell'interessante situazione di avere due installazioni di metatrader che danno due serie di risultati estremamente diversi (anche quando copio l'EA e le impostazioni direttamente da una all'altra ed eseguo strategy tester su entrambe. Questo indicherebbe i dati, ma è ancora molto difficile vedere come potrebbe spiegarlo a causa delle ragioni discusse. Mi sto chiedendo quale sia il modo migliore per vedere quali differenze potrebbero esserci.

Ho appena controllato i log delle due corse sulle installazioni separate di Metatrader e non ci sono errori in nessuna delle due.

Non c'è nulla di simile a GlobalVariableGet() nel mio codice. L'EA usa 5 copie di un singolo indicatore personalizzato su 4 diversi time frame con uno che ha un parametro diverso dagli altri.

 

Ho trovato quella che potrebbe essere una prova cruciale, ma non ne capisco bene il significato.

Sull'installazione che stava dando risultati mediocri, mi sono disconnesso dalla connessione al conto del broker con soldi veri e mi sono connesso di nuovo al conto di pratica sullo stesso broker. Dopo aver fatto questo (e nient'altro) strategy tester ha dato risultati spettacolari simili all'altra copia di metatrader (in esecuzione sullo stesso broker a/c di pratica). Per inciso il broker è Oanda.

Non sono sicuro di come il client di metatrader gestisca i dati storici quando passa da un conto all'altro, ma il fatto che tutti i vecchi dati provengano dagli stessi dati scaricati a 1 minuto piuttosto che dal broker mi rende molto difficile dare un senso a quello che sta succedendo qui (i trade all'inizio dell'anno sono molto meglio nel backtest eseguito con una connessione al conto di pratica che quando c'è una connessione al conto reale).

Motivazione: