Ottimizzazione e test fuori campione. - pagina 6

 
Mathemat:
Vita, buona osservazione. Ma direi che la capacità di generalizzazione non è solo una proprietà dell'EA, ma anche una proprietà dell'algoritmo di apprendimento, che deve identificare correttamente questa capacità. L'algoritmo methaquot non rivela questa capacità, la distrugge con una sovraottimizzazione.

Un algoritmo di meta-citazione non si avvantaggia di questa capacità, ma viene invece masticato da una sovra-ottimizzazione. -- Vorrei vedere un esempio.
 

Gli esempi abbondano. Non sono stato chiaro. Intendevo dire che l'uso sconsiderato dell'ottimizzatore alla "uno, due, tre!" porta a un eccessivo e irragionevole ottimismo dei graylist. Per esempio, l'ultimo esempio - 'Il Forex si muove contro di noi? O forse non lo capisco". O 'Trend Advisor (Esperto). Sto aspettando il feedback". Questi sono tutti trucchi.

A proposito di 'rovinare alla radice': la probabilità che la curvafitting marginale su un segmento di dati porti a una redditività sostenuta sul segmento reale, fuori campione, è estremamente bassa. L'optimum è da qualche parte nel mezzo tra la sovraprofittabilità e il pareggio di bilancio, che è inerente all'algoritmo di addestramento NS.

Dimmi per favore, Vita, il nostro ottimizzatore genetico nella sua forma pura fornisce qualche garanzia di redditività di un Expert Advisor in futuro - anche a redditività super-duper nell'area di test/ottimizzazione? Non sto parlando del tester, il tester va benissimo.

P.S. Finalmente ho trovato una delle primissime menzioni dell'ottimizzatore genetico di MQ: https://www.mql5.com/ru/forum/50805. Vedi il post di Filin e la risposta di Slawa. La risposta mostra che l'ottimizzatore è utile solo per la stima approssimativa delle capacità di un Expert Advisor e niente di più. La maggior parte dei graylist lo usa come primo e unico strumento di test "completo" degli Expert Advisors. Questo è un approccio amatoriale che porta a false illusioni. In effetti, questo strumento, inteso solo per una stima approssimativa, è, per la legge della meschinità, buono solo per rottamare Expert Advisor palesemente cattivi in caso di risultati palesemente negativi - ma non per trarre conclusioni positive sul valore dell'Expert Advisor...

 

Mathemat писал (а):

Gli esempi abbondano. Non sono stato chiaro. Intendevo dire che l'uso sconsiderato dell'ottimizzatore alla "uno, due, tre!" porta a un eccessivo e irragionevole ottimismo dei graylist. Per esempio, l'ultimo esempio - 'Il Forex si muove contro di noi? O forse non lo capisco". O 'Trend Advisor (Esperto). Sto aspettando il feedback". Queste sono tutte modifiche.

--> :) Capito. Tuttavia, sono d'accordo, le meta-citazioni non possono essere responsabili dell'"applicazione avventata dell'ottimizzatore". Sono a favore del pensiero umano e dell'ottimizzazione degli ottimizzatori. Io, per esempio, conosco la legge secondo la quale il mio Expert Advisor fa trading. L'ottimizzatore mi dà un sacco di set di parametri redditizi. Come li ottiene - "blandamente" con l'aiuto della genetica o "abilmente" con l'aiuto di una neuronet - non ha importanza per me, perché in ogni caso guardo criticamente (deliberatamente, per così dire) i risultati e separo immediatamente le mosche dalle cotolette, perché sono l'unico che conosce esattamente la legge con cui il mio Expert Advisor fa trading.

--> Immaginiamo di avere un ottimizzatore "intelligente" che possa dire con precisione: "Ecco il set ottimale di parametri operativi. Giuro, nessuna regolazione!" o "No, ragazzi, per questo EA non posso scegliere i parametri di lavoro, e non solo adattarsi alla curva". Quelli sarebbero i tempi! Un ottimizzatore che certifica le strategie implementate negli EA! Accesso libero da meta-quote! Grande! Ne voglio davvero uno.

A proposito di "uccidere alla radice": la probabilità che il curvafitting marginale su un intervallo di dati porti a una redditività sostenuta sull'intervallo reale, fuori campione, è estremamente bassa. L'optimum è da qualche parte nel mezzo tra il pareggio e il superprofitto, che è inerente all'algoritmo di apprendimento NS.

--> L'"ottimo è da qualche parte nel mezzo" è una sensazione intuitiva derivante dal fatto che i "graals" completamente ottimizzati sono garantiti per fallire in futuro, quindi non si dovrebbe ottimizzare fino alla fine, o che "la verità è da qualche parte vicino" o qualcosa del genere. Questa sensazione non ha niente a che vedere con la realtà. La regolarità può essere ottimizzata fino al limite e solo lì si rivelerà in tutto il suo splendore. Non importa quanto lo si torca, non servirà a nulla, ma si può sviluppare la sensazione che l'optimum sia da qualche parte nel mezzo.

Per favore dimmi, Vita, il nostro ottimizzatore genetico nella sua forma pura fornisce qualche garanzia di redditività di un Expert Advisor in futuro - anche in caso di redditività super-duper sulla parte di test/ottimizzazione? Non sto parlando del tester, il tester va benissimo.

--> Non lo sono, e penso che sia inappropriato pretendere tali garanzie dai risultati dell'ottimizzatore. Vedi sopra su "intelligente", dando garanzie, ottimizzatore.

P.S. Finalmente ho trovato una delle primissime menzioni dell'ottimizzatore genetico di MQ:

https://www.mql5.com/ru/forum/50805

. Vedi il post di Filin e la risposta di Slawa. Si può vedere dalla risposta che l'ottimizzatore è utile solo per una stima approssimativa delle capacità di un Expert Advisor e niente di più. La maggior parte dei graylist lo usa come primo e unico strumento di test "totale" degli Expert Advisors. Questo è un approccio amatoriale che porta a false illusioni. In effetti, un tale strumento inteso solo per una stima approssimativa è, per la legge della meschinità, abbastanza buono solo per scartare Expert Advisor palesemente cattivi in caso di un risultato chiaramente negativo - ma non per trarre una conclusione positiva sul valore dell'Expert Advisor...

-->"L'ottimizzatore è utile solo per una stima approssimativa delle capacità dell'EA" - di nuovo, la pretesa dell'ottimizzatore che non è in grado di stimare accuratamente le capacità di un EA, ma, di fatto, di certificare le strategie di un EA. Non resta che creare un robot che genera strategie, darle in pasto all'ottimizzatore, ottenere un parere sulla loro idoneità, e andare al taglio garantito del denaro. Cosa ne pensate di questa illusione?


 

L'illusione è grande, ma solo un'illusione. Ma è possibile migliorare drasticamente l'applicazione di ciò che abbiamo (tester/ottimizzatore) con i mezzi disponibili in MQL4. Altrimenti continueremo a vedere super elicotteri ogni tre giorni con solo risultati di montaggio, fingendo di essere test normali...

E non ho nessuna lamentela sulle meta-citazioni: l'ottimizzatore fa esattamente ciò per cui è stato progettato, cioè l'ottimizzazione genetica nello spazio dei parametri di Expert Advisor, e in effetti fa la stessa cosa.

Ho un suggerimento per il tester: sarebbe bello avere una funzione standard come test() in cui tutti i parametri necessari sarebbero chiaramente specificati, incluso il nome del file di storia su cui tutto viene testato. Il collegamento rigido del nome di un file al suo contenuto non è una soluzione abbastanza flessibile.

 
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. Abbiamo fissato una data. Per esempio, dal 1° gennaio. 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 ancora una volta usiamo l'ottimizzazione. Per essere più precisi, non sarà proprio l'ottimizzazione. L'ottimizzatore non dovrebbe prendere i parametri in PROPRIETÀ DELL'ESPERTO, ma riselezionare i set di parametri 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.

Sicuramente c'è già un'implementazione pratica di questo algoritmo ... Sul forum ho trovato solo i suoi derivati... Per esempio, 'Come implementare il tuo criterio di ottimizzazione'...

Voglio condividere la mia soluzione a questo problema....

Prepariamo un EA... Aggiungiamo dei parametri esterni...

extern int    Counter      = 1;        // Счетчик подсчета количества оптимизаций. Если равен 0, то обычная оптимизация...
extern string Filename     = "";       // Имя файла с оптимизируемыми параметрами

int    FilePtr=0;                      //  Положение файлового указателя

Nella funzione init() inserire il seguente blocco....

   if(IsOptimization() && Counter>0)
   {
// Для ускорения процесса будем поддерживать сквозной указатель файловой позиции
// с помощью глобальной переменной FilePtr 
// На первом проходе инициализируем её нулём.
      if (GlobalVariableCheck("FilePtr")==false || Counter == 1) 
      {
         FilePtr = 0; 
         GlobalVariableSet("FilePtr",0); 
      } 
      else 
      {
         FilePtr = GlobalVariableGet("FilePtr"); 
      }

      int handle=FileOpen(Filename,FILE_CSV|FILE_READ,';');
      FileSeek(handle,FilePtr, SEEK_SET);
      Parametr1=StrToInteger(FileReadString(handle));
      Parametr2=StrToInteger(FileReadString(handle));
      Parametr3=StrToInteger(FileReadString(handle));

      FilePtr = FileTell(handle); 
      GlobalVariableSet("FilePtr",FilePtr);
      
      FileClose(handle); 
   }

Parametr1, Parametr2, Parametr3 - parametri esterni, che dovrebbero essere ottimizzati....

Questo è tutto ...

 
kharko:

Sicuramente esiste già un'implementazione pratica di questo algoritmo... Sul forum ho trovato solo i suoi derivati... Per esempio, 'Come implementare il tuo criterio di ottimizzazione'...

Voglio condividere la mia soluzione a questo problema....

Dai un'occhiata agli articoli di Nikolay Kositsin, ad esempio 'Esperti basati su sistemi di trading popolari e Alchimia di ottimizzazione dei robot di trading (continua)'.

 

Come funziona?

All'intervallo di tempo A eseguiamo la solita ottimizzazione dei parametri (Contatore=0) ...

Trasferiamo i risultati in Excel... Ora il nostro compito è quello di creare un file con i parametri ottimizzati e salvarlo nella directory ...\tester\files

Selezionare le colonne con i nostri parametri in Excel, copiarle e incollarle in Word o Notepad come testo non formattato...

In Wordboard o Notepad, convertire ogni riga nella forma: value1;value2;value3.

Salvarlo nella directory ...\tester\files

Se non sei troppo pigro, puoi scrivere una macro per eseguire le operazioni di cui sopra al volo...

Ora possiamo eseguire l'ottimizzazione sulla fascia oraria B... Ora il parametro di ottimizzazione sarà Counter... Specificare il valore massimo (numero di righe nella lista)...

Ecco, il problema è risolto... Buona fortuna...

 

Ho letto questo articolo... Penso che la mia variante sia più semplice e più conveniente.... e soprattutto è universale...

L'implementazione di cui sopra coincide completamente con il desiderio dell'autore del ramo...

 
Un esempio reale di ottimizzazione... Vedi allegato
File:
sample.zip  1201 kb
 

Grazie, kharko per la soluzione. Cercherò di usarlo!

Motivazione: