Discussione sull’articolo "Creazione di criteri personalizzati di ottimizzazione degli Expert Advisor"

 

Il nuovo articolo Creazione di criteri personalizzati di ottimizzazione degli Expert Advisor è stato pubblicato:

Il client terminal MetaTrader 5 offre un'ampia gamma di opportunità per l'ottimizzazione dei parametri dell’Expert Advisor. Oltre ai criteri di ottimizzazione inclusi nel tester di strategia, gli sviluppatori hanno l'opportunità di creare i propri criteri. Questo porta a un numero quasi illimitato di possibilità di test e ottimizzazione degli Expert Advisor. L'articolo descrive i modi pratici per creare tali criteri, sia complessi che semplici

.

Ora, abbiamo bisogno di stimare la qualità dell'ottimizzazione. Penso che il criterio principale sia il lavoro dell'Expert Advisor al di fuori del periodo di ottimizzazione. Per verificarlo, eseguire un singolo test entro il periodo 2010.01.01-2011.06.14.

Confronta due risultati (che hanno quasi lo stesso profitto risultante) dall'insieme dei parametri ottimali: il miglior risultato con un risultato medio. I risultati al di fuori del periodo di ottimizzazione sono separati dalla linea rossa:

Il miglior risultato dell'ottimizzazione

Autore: Dmitriy Skub

 
Sai, l'EA multi coppia ha risultati diversi nei vari simboli. Ho testato l'EA su EURUSD, ma non ha aperto operazioni long su AUDUSD, poi l'ho testato su AUDUSD, ma non ha aperto operazioni short su EURUSD!!! Come risolvere? Grazie
 

Grazie per l'ottimo articolo Dmitriy,

C'è modo o spazio per inserire i criteri del Profitto Perfetto di Pardo http://www.breakoutfutures.com/Newsletters/Newsletter0605.htm in aggiunta ai tuoi criteri?

 

Articolo molto utile. Tutto è facile da usare.....

Ma descrive solo i criteri per chiamare la funzione OnTester(), cioè quando l'ottimizzazione è finita con questo parametro.

È possibile interrompere l'ottimizzazione in anticipo? Ad esempio, se il drawdown è superiore al 50% o il saldo è inferiore al valore n, in modo da non sprecare il tempo della CPU!

 
sigma7i:

Articolo molto utile. Tutto è facile da usare.....

Ma descrive solo i criteri per chiamare la funzione OnTester(), cioè quando l'ottimizzazione è finita con questo parametro.

È possibile interrompere l'ottimizzazione in anticipo? Ad esempio, quando il drawdown è superiore al 50% o il saldo è inferiore al valore n, in modo da non sprecare il tempo della CPU!

EspertoRimuovi
 
MetaDriver:
EspertoRimuovi
Oh, perfetto!!! Grazie!
 

Potreste dirmi se c'è la possibilità di filtrare i risultati non necessari dopo la fine dell'ottimizzazione (chiamata OnTester), ad esempio con un risultato negativo, in modo da non ingombrare la scheda"risultati dell'ottimizzazione"? ?

 

L'ordinamento può essere effettuato facendo clic su...

su qualsiasi colonna.

PS.Risultati non sempre consapevolmente storti, nel processo di ottimizzazione genetica è possibile "strappare" ExpertRemove().

Anche il reset in OnTester().

Personalmente, a volte la genetica ha preso la strada sbagliata.

 
Karlson:

L'ordinamento può essere effettuato facendo clic sul...

su qualsiasi colonna.

Si può anche azzerare in OnTester().

Per me, personalmente, la genetica a volte è andata nel verso sbagliato.

Quindi è un ordinamento, voglio che i risultati indesiderati non vengano visualizzati affatto....

con l'ordinamento, è semplice, per esempio:

double  OnTester()
double  balance = TesterStatistics(STAT_PROFIT);
double  trades_number = TesterStatistics(STAT_TRADES);

if(balance < 5000 || trades_number < 20) return(-777);

....бла бла return(свой критерий оптимизации);

e poi ordiniamo...

ma è un po' "goffo", voglio che i risultati indesiderati non vengano visualizzati affatto.

 

Karlson:

PS.Non è sempre possibile "abbattere" ExpertRemove() nel processo di ottimizzazione genetica.

Qui hai ragione che non riesco a "strappare" i risultati durante l'ottimizzazione (qualsiasi non solo genetica) usando ExpertRemove()....

forse non so come prepararlo:) ...l'ho inserito nel gestore OnTick() con una condizione...

 

Sta dicendo che un codice come :

if (balance < 3000) ExpertRemove();

non funziona?

Ma non è quello che ho detto. Che una tale ripartizione (che ha funzionato almeno in passato) ha portato alla fine a una fuga genetica.