Ottimizzazione e test fuori campione. - pagina 3

 
Integer: Tutto tornerà utile a casa. Non ha senso confrontarlo con MQ, perché questo programma non si testa da solo, esegue solo il tester
Nessuno rifiuta il tester. Il tester è buono, non c'è dubbio. Mi riferivo all'ottimizzatore. Questi sono gli ottimizzatori che possiamo confrontare. Va bene, l'argomento è eterno, non finirà mai. ...
 
leonid553:

Penso che sarebbe un'utile aggiunta al tester di mt4. È possibile, e probabilmente sarà implementato da qualche parte da qualcun altro.


Hai ragione - è stato implementato. Guarda per esempio qui (progetto MT4NetTester). Basta non chiedere di darlo, è su misura.
 
Integer:
Mak:
Ragazzi, è da un po' che ho tutto funzionante.
Vero sotto TradeStation, e non gratuitamente ... :))
Non vedo il senso di farlo sotto MT, non siamo abituati a pagare per il lavoro.


Anch'io ho quasi finito))) E non c'è bisogno di incorporare nulla nell'Expert Advisor - il programma viene scaricato un file con una serie di parametri

Ragazzi! E chi vi impedisce di scrivere un articolo in questo thread, pubblicare il suo sviluppo con una descrizione e ottenere un compenso?

Non sto cercando un omaggio. Ho abbastanza diligenza. Non c'è abbastanza conoscenza speciale. Che differenza fa - chi ti paga?

 
leonid553:

Buon pomeriggio a tutti.

Dopo aver ottimizzato un EA, spesso dobbiamo nerdare fuori campione più di una dozzina di set di parametri suggeriti dall'ottimizzatore.

Ho un'idea per ottimizzare gli Expert Advisors al di fuori del campione. Supponiamo di aver "caricato" l'Expert Advisor con l'ottimizzazione per un certo numero di parametri. Per esempio, fissiamo una data dal 1° gennaio 2006 al 1° gennaio 2007. 2006 fino al 1° gennaio 2007.

Abbiamo ricevuto diverse migliaia di Expert Advisors. Dopo di che, salviamo la pagina con i RISULTATI DELL'OTTIMIZZAZIONE come un file separato. Poi, impostiamo il seguente periodo storico per l'ottimizzazione, cioè aggiungiamo un mese o due, o quanti ne abbiamo bisogno.

Nel nostro caso, abbiamo impostato per esempio dal 1 gennaio. 2007 al 1° giugno 2007. E di nuovo abilitiamo l'ottimizzazione. L'ottimizzatore non deve prendere i parametri in EXPERT'S PROPERTIES, ma riselezionarli uno per uno dal file che abbiamo salvato dopo la prima ottimizzazione. Dopo questa seconda ottimizzazione, ci rimangono solo le vAreA che hanno dato un profitto al di fuori del campione!

Il risultato, idealmente, è che otteniamo i "parametri ideali" con cui lavorare e testare online in seguito!

Penso che questa sarà un'utile aggiunta al tester di mt4. Probabilmente, e molto probabilmente, è già implementato da qualcuno da qualche parte. Se qualcuno lo sa, per favore condivida il link!

Io, a causa delle mie modeste conoscenze, non riesco a capire come attuare l'idea nella pratica.

Questo si chiama Walk forward optimisation (WFO) o Walk forward analysis (WFA).
È un argomento vecchio e popolare in Occidente.
 
Mathemat:
Ok, l'idea generale è chiara. Bene, allora l'ultima domanda a tutti coloro che hanno realizzato questo progetto (cioè Belford, Mak, Integer): ne vale la pena? Certo, è bello avere un "ottimizzatore" che non si limita al curve fit (come metaquote) ma cerca anche di testare la strategia su dati out-of-sample, ma merita davvero un punteggio più alto di MQ optimizer (che è anche buono, ma solo come curve fitter)?
In generale vale la pena, anche se se guardiamo il processo WFO stesso possiamo vedere che è anche un'ottimizzazione, solo più complessa.
Selezioniamo i migliori della prima serie tra i migliori della seconda e così via. - anche questa è un'ottimizzazione con il proprio raccordo.

Il mio ottimizzatore è solo una favola :)))

In primo luogo, è genetico e molto efficiente - cerca molto rapidamente.
In secondo luogo permette di utilizzare qualsiasi criterio di ottimizzazione personalizzato (questo è un grande potere).
In terzo luogo, la nuova versione implementa l'ottimizzazione in base a più criteri contemporaneamente.
 

Ho postato un esempio di implementazione del mio criterio di ottimizzazione nell'argomento'init() durante l'ottimizzazione'. E sto cercando di scrivere un articolo al riguardo. Il metodo utilizzato, credo, permette di fare molte cose, dal WFO al proprio algoritmo genetico.

 
Mathemat:
leonid553, stai andando nella direzione giusta, poiché l'attuale "ottimizzazione" senza test su dati fuori campione è un puro adattamento della curva. Ma l'algoritmo di base dovrebbe essere più complesso, come nei programmi di reti neurali. Tutte le "ottimizzazioni" dovrebbero andare simultaneamente su tutti i set di dati (questo è il desiderio degli sviluppatori). Si può, naturalmente, lavorare con solo due set di dati, ma è meglio prevederne tre - allenamento (A), convalida (B) e test (C). Beh, nelle condizioni attuali, dovrete lavorare più o meno come suggerite voi.


Mi sembra che i test (allenamento, convalida, esecuzione, ecc.) al di fuori del campione riducano l'insieme A="Set di parametri redditizi nel campione" all'insieme B="Set di parametri redditizi nel campione, così come al di fuori del campione". L'ottimizzazione sul campionamento + fuori campione dà l'insieme C="Insiemi di parametri redditizi nel campionamento + fuori campione".

L'insieme B è contenuto nell'insieme C? Secondo me, ovviamente sì, perché l'insieme B contiene "Insiemi di parametri redditizi sia nel campione che fuori dal campione", e quindi sono "Insiemi di parametri redditizi nel campione + fuori dal campione".

Cosa c'è di ridondante in C rispetto a B?

Ovviamente, tra i set C ci saranno set di parametri che non sono redditizi nel campione (solo nel campione), ma che guadagnano la rivincita fuori dal campione. Cioè, perdiamo soldi nel campione, ma più che ripagati fuori dal campione.

Inoltre, tra l'insieme C ci saranno insiemi di parametri redditizi nel campione (solo nel campione), ma non redditizi fuori dal campione, cioè facciamo soldi nel campione, ma perdiamo soldi fuori dal campione.

Quindi un pass-through ci dà l'insieme C, che raccoglie il sottoinsieme D="Insiemi di parametri non redditizi né nel campione né fuori dal campione, ma generalmente redditizi nel campione + fuori dal campione", e che non è nell'insieme B. Se questo è un problema per noi, è molto più facile da risolvere che il test fuori dal campione.

No. Inoltre, si può sostenere che il fitting più severo (la redditività deve essere rispettata nei singoli grafici) rimane, e solo il sottoinsieme D (forse il bambino ricercato?) viene buttato fuori, che difficilmente può essere chiamato un fitting. Tutto ciò che evitiamo dividendo il periodo di test in segmenti è l'esclusione dei parametri che danno risultati non redditizi in uno dei segmenti. Tutto ciò che raggiungiamo è la redditività in ogni segmento. La conclusione logica di questo approccio è la redditività di ogni affare separatamente. Chi solo garantirà che tali meravigliosi parametri non ci siano presentati dal diavolo dell'adattamento assoluto delle curve?

 

Un EA non è la stessa cosa di un EA! Ci sono EA per i quali il test che ho descritto è il più ottimistico.

Per esempio, cosa abbiamo da perdere qui? Niente!

 
Vita:
Tutto ciò che evitiamo dividendo il periodo di test in segmenti è l'esclusione dei parametri che danno risultati non redditizi in uno dei segmenti. Tutto ciò che otteniamo è la redditività in ogni intervallo. Il risultato logico di questo approccio è la redditività di ogni affare separatamente. Chi solo garantirà che tali meravigliosi parametri non ci siano presentati dal diavolo dell'adattamento assoluto delle curve?

Lo formulerei così: marchiamo alcune vicinanze di certi estremi con la prima ottimizzazione e controlliamo la loro stabilità con la seconda (fuori campione). Nessuno naturalmente darà alcuna garanzia che rimarranno stabili in futuro. Ma la mancanza di garanzie di rendimento è una caratteristica di tutte le previsioni.

Naturalmente possiamo ottenere le stesse informazioni avendo elaborato i risultati dell'ottimizzazione per l'intero campione. Mi sembra, tuttavia, che sarà un processo molto più dispendioso in termini di tempo, sia in termini di implementazione del software che in termini di tempo di conteggio.

 
lna01:
Vita:
Tutto ciò che evitiamo dividendo il periodo di test in segmenti è l'esclusione dei parametri che danno risultati non redditizi in uno dei segmenti. Tutto ciò che otteniamo è la redditività in ogni intervallo. La conclusione logica di questo approccio è la redditività di ogni affare separatamente. Chi solo garantirà che tali meravigliosi parametri non ci siano presentati dal diavolo dell'adattamento assoluto delle curve?

Lo formulerei così: marchiamo alcune vicinanze di certi estremi con la prima ottimizzazione e controlliamo la loro stabilità con la seconda (fuori campione). Nessuno naturalmente darà alcuna garanzia che rimarranno stabili in futuro. Ma la mancanza di garanzie di rendimento è una caratteristica di tutte le previsioni.

--> Cosa aggiunge lo splitting rispetto alla corsa end-to-end?

Naturalmente possiamo ottenere le stesse informazioni elaborando i risultati dell'ottimizzazione sull'intero campione. Mi sembra, tuttavia, che questo sarebbe un processo molto più lungo, sia in termini di implementazione del software che di tempo di conteggio.

--> Se per "elaborazione dei risultati dell'ottimizzazione su tutto il campione" intendi scartare l'insieme D, allora non sono d'accordo - scartare i risultati che danno perdite intermedie (nel campione o fuori dal campione) è un compito elementare, risolto durante l'ottimizzazione stessa su tutto il campione, cioè nessuna elaborazione dopo l'ottimizzazione è necessaria. Il risultato è l'insieme B immediatamente. E nessun ulteriore controllo fuori dal campione richiede tempo.