I vostri simboli e i vostri flussi di dati in Metatrader 5 - pagina 4

 
zaskok:

Ci sono metodi euristici che sono più adatti all'ottimizzazione dei sistemi di trading. Questo è esattamente ciò per cui sono sviluppati, a differenza dei GA universali. Pensi che sarebbe possibile sostituire l'unico metodo euristico nel tester con uno tuo scritto in MQL5? Se abbiamo intenzione di migliorare drasticamente il tester in termini di personalizzazione dei dati di input, allora sarebbe ragionevole personalizzare i metodi di ottimizzazione (i criteri di ottimizzazione personalizzati sono disponibili da tempo) per dargli le migliori prestazioni.

Se volete qualcosa di diverso da GA, allora specificate questi metodi esattamente per nome e date argomenti con prove dirette dei vantaggi, per favore.

Ma la domanda più importante è: cos'è esattamente di GA che non ti soddisfa? Non ti trova l'area della soluzione? Anche con un metodo di palpeggiamento successivo di 10 volte non si ha un'idea dei cluster con le caratteristiche desiderate?

Certo che sì. Molto rapidamente e in modo efficiente. Decine o centinaia di migliaia di volte più veloce della solita forza bruta.

Si ottengono risultati più veloci o migliori con altri metodi (monte carlo o annealing, per esempio)? Non è un fatto.

Ma ecco il fatto che i criteri di valutazione del nostro algoritmo genetico danno ad ogni programmatore la libertà di implementare le proprie variazioni di selezione. Questo meccanismo è essenzialmente la chiave per creare la nostra euristica.

In aggiunta a questo abbiamo funzioni di controllo/sovrapposizione MQL5 per i parametri di input, che ci permette di implementare l'enumerazione di parametri non numerici/non lineari virtualizzandoli in speciali contatori numerici lineari. Per esempio, prendete 30 parametri non numerici, compresi i dati dai file, convertiteli in un contatore a 64 bit[i] e torcetelo come parametro di lavoro. Sta al programmatore decidere cosa c'è dentro. E la funzione del proprio criterio di valutazione aiuta anche a creare il proprio metodo euristico.

Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 
zaskok:

Ci sono metodi euristici che sono più adatti all'ottimizzazione dei sistemi di trading. Questo è esattamente ciò per cui sono sviluppati, a differenza dei GA universali. Pensi che sarebbe possibile sostituire l'unico metodo euristico nel tester con uno tuo scritto in MQL5? Se abbiamo intenzione di migliorare drasticamente il tester in termini di personalizzazione dei dati di input, sarebbe ragionevole personalizzare i metodi di ottimizzazione (i criteri di ottimizzazione personalizzati sono disponibili da tempo) per dargli le migliori prestazioni.

Applico questo metodo per cercare gli estremi. Per esempio, questo è l'aspetto della ricerca della funzione maxima:

e questa è la ricerca stessa:

 

Questo è nel tester MT5, compresa la visualizzazione 3D.

 
Renat:
Abbiamo deciso di aprire delle interfacce per scrivere i nostri datafeed per MT5.

Sarete liberi di scrivere le vostre fonti di dati, comprese le fonti di dati rltime. Questo permetterà di inserire qualsiasi dato, compresa la cronologia dettagliata e i tumbler di livello 2.

Per impostazione predefinita forniremo una serie di feed di dati interni, compresi quelli offline. I personaggi virtuali saranno disponibili anche nel tester.

Tutto questo è gratuito, naturalmente.

Alleluia! Quanti anni di richieste ed eccoci finalmente qui... Anche le lacrime di gioia e di emozione scorrono:)

Personalmente, sono sempre stato ostacolato dalla mancanza di storia per MT5. Ho dovuto condurre ricerche in programmi di terze parti come Wealth-Lab e usare MT5 per scrivere robot di trading. Ora non ci sarà bisogno di programmi di terze parti.

 
forexman77:

Quando ci sono troppe variabili da ottimizzare, c'è un'alta probabilità di adattarsi alla storia.

Man mano che le variabili crescono, il tempo di ottimizzazione cresce esponenzialmente e non c'è scampo.

C'è un modo per uscirne, un computer super potente grande come una casa)

Conosco bene questo problema, e ho elaborato un algoritmo per risolverlo. Quello che non capisco è che decidano forzatamente di nuovo per me che la genetica è meglio della forza bruta... Non credo e ci sono ragioni ed esempi positivi, per esempio Profinity è stato creato proprio provando delle varianti, ora la sua rilevanza è nel passato.

Di nuovo, non è chiaro perché un così grande mercato di agenti remoti dovrebbe essere tagliato fuori, sono occupati come vogliono essere.... non è così, l'80% (imho) di quelli esistenti sono inattivi, e poi tagliano il loro potenziale fronte di lavoro...

 
Renat:

Questo è nel tester MT5, compresa la visualizzazione 3D.

È fantastico, non sapevo di questa cosa, solo che non ha funzionato per me, le posizioni dell'interruttore in 3D sono inattive, ci dovrebbe essere qualcosa di speciale nel codice?
 
IvanIvanov:
Grande, non sapevo di questa cosa, ma non ha funzionato per me, il cambio di posizione in 3D è inattivo, c'è qualcosa di speciale nel codice?
MetaTrader 5 Strategy Tester visualizzazione 3D
 

О ! Bravi, amministratori!

Ho capito che il debug sui dati storici apparirà finalmente ?

 
Renat:

Se volete qualcosa di diverso da GA, allora indicate questi metodi esattamente per nome e date argomenti con prove dirette dei benefici, per favore.

Ma la domanda più importante è: qual è esattamente il tuo problema con GA? Non ti trova l'area della soluzione? Anche con un metodo di palpeggiamento successivo di 10 volte non si ha un'idea dei cluster con le caratteristiche desiderate?

Certo che sì. Molto rapidamente e in modo efficiente. Decine o centinaia di migliaia di volte più veloce della solita forza bruta.

Si ottengono risultati più veloci o migliori con altri metodi (monte carlo o annealing, per esempio)? Non proprio.

È abbastanza problematico portare una prova solo per te, dato che non rispondi abbastanza correttamente all'argomentazione pubblica della tua miopia in alcune questioni. E questo thread, che lei stesso ha iniziato, serve come prova culminante, purtroppo, di questa affermazione. Certo, non sono stati altri che hanno chiesto e richiesto questo per anni, e voi presumibilmente siete stati respinti.... Ma quello che era, è quello che era. Tuttavia, dimostrare che hai torto sembra un po' inutile, dato che è il fattore umano, non la logica, a fare la valutazione.

Ecco perché darò argomenti logici a favore dei metodi di ottimizzazione euristica che sono un po' diversi dai GA, non per voi ma per gli utenti del forum. Qui sotto ci sono alcuni estratti dall'articolo che ho citato prima + le mie sottolineature a cui dovreste prestare particolare attenzione:

Tutti i metodi di ottimizzazione stocastica hanno uno svantaggio in comune: possono fermarsi a qualche estremo locale e perdere di vista l'ottimo. Per evitare questo, è necessario massimizzare le aree campione e il numero di iterazioni. Ma questo compromette la velocità di calcolo. Quindi dobbiamo sempre cercare la media aurea.


Tuttavia, se ci pensiamo, non abbiamo bisogno dell'estremo globale se non c'è convergenza verso di esso. Cioè, se non c'è una diminuzione condizionatamente uniforme intorno all'estremo, è molto probabile che questo estremo globale sia casuale e ci sarà poco utile perché è inadeguato e rovinerà i nostri calcoli. Ecco perché è così importante studiare i parametri intorno all'estremo. Se c'è convergenza, significa che c'è un sistema e questa strategia può essere studiata ulteriormente.

Come ho già detto sopra, è importante studiare l'area intorno all'estremo e quindi ho deciso di convergere fino alla fine e testare tutte le strategie vicine all'ultima iterazione. Non ho giocato con i gradienti e ho reso la convergenza statica come percentuale del campione iniziale. Significa che decidiamo all'inizio quanto tagliare la matrice multidimensionale dell'1% o del 20% dopo ogni iterazione. Inoltre, decidiamo subito, dati i nostri vincoli di tempo, quante strategie prenderemo dalla matrice ad ogni iterazione per i test. Così, la dimensione della matrice non è affatto importante per noi, sappiamo esattamente quante iterazioni e in quale volume itereremo! Questa è la bellezza dei metodi stocastici.

Dopo la prima iterazione, quando il primo spazio è stato esplorato, dobbiamo in qualche modo ridurre l'area di esplorazione per il prossimo campione. Ma non sappiamo ancora quasi nulla di questo spazio e mi sembra piuttostoavventato tagliare fuori zone sconosciute. In generale, l'algoritmo è progettato per trovare il massimo globale, e noi siamo interessati a tutti i massimi locali e globali.

Abbiamo bisogno di conoscere tutti i parametri in cui la strategia può realizzare un profitto. Forse una strategia ad alcuni parametri produce buoni profitti, ma più rischiosi, mentre ad altri parametri produce un profitto leggermente inferiore, ma risulta essere più stabile e meno rischiosa, e se seguiamo il nostro algoritmo, potremmo perderlo di vista.

Rimuoviamo significativamente le peggiori strategie dallo spazio di studio. Così nelle prossime iterazioni esploriamo le aree con strategie più redditizie e non sprechiamo tempo prezioso di test esplorando aree che non ci servono. Alla fine, la nostra area di studio converge a tutti i massimi dello spazio.

Supponiamo di aver esplorato lo spazio e di avere un'idea approssimativa di quanti alti ci sono. Cosa ci dà questo? Finora quasi niente...
Dobbiamo indagare su questi massimi e scoprire se sono di natura casuale o sistemica. Per fare questo, l'ottimizzatore tester ci permette di selezionare le migliori strategie e, inoltre, di esplorare le aree intorno ad esse in modo più dettagliato. Indagare le strategie che ci sono sfuggite durante l'ottimizzazione. Ora sappiamo quasi tutto sugli estremi dello spazio! I dati ottenuti possono essere ulteriormente studiati per il clustering, la sovraottimizzazione e così via. Ma questa è un'altra storia!

Non si tratta di questo articolo, ma di principi generali di ricerca e ottimizzazione di TC che non sono discussi quasi da nessuna parte. Pertanto, GA non è ciò che vogliamo avere nell'arsenale dell'ottimizzazione delle TS.

Ma qui c'è il fatto che i criteri di valutazione dell'esecuzione proprietari nel nostro algoritmo genetico danno ad ogni programmatore la libertà di implementare le proprie variazioni di selezione. Questo meccanismo è essenzialmente la chiave per creare la nostra euristica.

In aggiunta a questo abbiamo funzioni di controllo/sovrapposizione MQL5 per i parametri di input, che ci permette di implementare l'enumerazione di parametri non numerici/non lineari virtualizzandoli in speciali contatori numerici lineari. Per esempio, prendete 30 parametri non numerici, compresi i dati dei file, convertiteli in un contatore a 64 bit[i] e torcetelo come parametro di lavoro. Sta al programmatore decidere cosa c'è dentro. E la funzione del proprio criterio di valutazione aiuta anche a creare il proprio metodo euristico.

Non ho mai sentito parlare di "funzioni MQL5 per la gestione/ridefinizione dei parametri di input" - datemi un link.
 
event:

Applico questo metodo per trovare gli estremi. Per esempio, questo è l'aspetto della ricerca dei massimi di una funzione:

Grazie! Potresti fornire la formula della tua funzione approssimativa per cercare di trovare i suoi estremi locali in OnTester con il GA regolare - per confronto.

Sarebbe interessante sentire da voi qualche parola costruttiva sul metodo (descrizione, fonti, pro/contro).