Un saluto a tutti!
Spero che l'articolo vi sia piaciuto.
Sarò lieto di ascoltare i vostri consigli su come convertire UGA in OOP.
Vorrei vedere se questo
MathSrand((int)TimeLocal());
funzionerà una volta ottimizzato?
Hai eseguito la tua libreria nel tester?
1) Mi piacerebbe vedere se questo sarà
MathSrand((int)TimeLocal());
funzionerà una volta ottimizzato?
2) Avete eseguito la vostra libreria nel tester?
1) Non vedo alcun motivo per cui non dovrebbe funzionare.
2) Non è possibile dare una risposta esaustiva a questa semplice domanda in due parole.
I problemi di ottimizzazione del trader possono essere suddivisi in due tipi: a) "problemi locali" e b) "problemi globali".
a) Locali - un insieme di tutte le azioni di un trader/TS (che, a loro volta, possono essere suddivise in compiti locali) eseguite in ogni tick. Un esempio di questo tipo è il primo compito dell'articolo (risolvere equazioni, scegliere il prezzo ottimale dell'opzione e altri compiti simili). Non richiedono una storia dei prezzi "futura".
b) Compiti globali - ottimizzazione di una funzione di tutti i compiti locali (può essere il profitto totale per il periodo in esame, il drawdown, il MO, ecc.) È necessaria l'intera storia dei prezzi per il periodo di tempo da ottimizzare. Il tester interno svolge esattamente questo tipo di compiti.
UGA è stato progettato in modo da non dipendere dal tester standard e può essere utilizzato per compiti sia globali che locali senza modificare il codice dell'algoritmo, anche nei tester "fatti in casa". Nell'ambito del tester standard, UGA può essere utilizzato senza modifiche solo per i compiti locali. Per i compiti globali deve essere modificato nel tester.
Non ho ancora avuto la necessità di utilizzare l'algoritmo di ottimizzazione in un tester che ha un proprio algoritmo di ottimizzazione.
Descrivete il vostro compito in termini generali e valuteremo qui i modi per risolverlo.
Grazie, joo- un lavoro interessante!
Sono sorte domande sull'applicazione pratica dell'algoritmo genetico.
Il documento descrive:
- trovare il massimo/minimo di una funzione di due variabili su un determinato intervallo
- trovare il massimo della funzione Profit (esempio con ZigZag).
Vi preghiamo di fornire esempi di attività pratiche di trading in cui pensate che l'algoritmo possa essere utile.

- 2010.05.25
- Andrey Dik
- www.mql5.com
Descrivete il vostro problema in termini generali e qui vedremo come risolverlo.
Il problema è semplice: voglio che la funzione srand() imposti il generatore a un punto iniziale casuale ogni volta che lancio il tester.
Si è scoperto che MathSrand((int)TimeLocal()) imposta il generatore allo stato iniziale precedente (lo stesso) in diverse esecuzioni multiple del tester.
Il compito è semplice: voglio che la funzione srand() imposti il generatore su un punto di partenza casuale ogni volta che lancio il tester.
Si scopre che MathSrand((int)TimeLocal()) imposta il generatore sullo stato iniziale precedente (lo stesso) a diverse esecuzioni multiple del tester.
TimeLocal indica il tempo in secondi. Durante il test, sarà lo stesso tempo di test generato.
Provare a utilizzare GetTickCount. Fornisce onestamente millisecondi e non emula nulla.
In fase di test, sarà lo stesso tempo di test generato.
О! Grazie.
Grazie, joo- un lavoro interessante!
Sono sorte domande sull'applicazione pratica dell'algoritmo genetico.
Il documento descrive:
- trovare il massimo/minimo di una funzione di due variabili su un determinato intervallo
- trovare il massimo della funzione Profit (esempio con ZigZag).
Si prega di fornire esempi di attività di trading pratiche in cui si ritiene che l'algoritmo possa essere utile.
Le attività economiche in generale e quelle dei trader in particolare sono per lo più di natura ottimizzante.
I trader sono costantemente alla ricerca dei parametri ottimali dei loro TS. Ecco un elenco incompleto dei tipi di compiti che UGA può aiutare a risolvere:
-trovare i parametri ottimali degli indicatori
-Ricerca dei parametri ottimali dei MM
-ricerca delle impostazioni ottimali dei filtri (qualsiasi, compresa la ricerca dei coefficienti dei filtri digitali) negli indicatori
-addestramento di reti neurali di qualsiasi topologia e dimensione arbitraria
-addestramento di comitati di reti di qualsiasi topologia e di dimensioni arbitrarie. (un comitato è un gruppo di reti indipendenti l'una dall'altra).
UGA può essere utilizzato sia per risolvere i compiti separati di cui sopra, sia tutti insieme in una volta sola. Quindi, per farvi capire la potenza di UGA, vi dirò che la possibilità di risolvere l'ultimo tipo di compiti della lista permette di creare modelli del cervello (come sapete, il cervello è composto da reparti).
L'elenco dei compiti può continuare a lungo, basta guardare le discussioni del forum.
Ottimo materiale e ben scritto. Anch'io ho giocato con l'ottimizzazione genetica, ma purtroppo ho trovato pochi vantaggi. Il GA è solitamente considerato un metodo di ottimizzazione globale. Questo è vero se si ha molto tempo a disposizione per gestire colonie molto grandi, ma quando il tempo (le dimensioni delle colonie) è limitato, GA, come i metodi di discesa del gradiente, converge a un minimo locale, e piuttosto lentamente. Naturalmente, rispetto ai metodi di ricerca spuntata di tutte le possibili combinazioni di parametri di input, il GA offre un innegabile vantaggio in termini di velocità. Una delle ampie applicazioni dei GA è l'addestramento di reti neurali multistrato con un gran numero di coefficienti. Tali reti presentano un numero enorme di minimi locali. Per qualche motivo, i GA sono considerati la cura per questo male. Ma in realtà la cura è lo strumento applicato, cioè la rete multistrato in questo caso. È molto più semplice scegliere un altro strumento in grado di garantire un'elevata precisione di classificazione (come buy/sell/hold) o un'estrapolazione della regressione con un'ottimizzazione semplice e senza ambiguità ;-).
1) Ottimo lavoro e ben scritto.
2) Anch'io ho giocato con l'ottimizzazione genetica, ma purtroppo non ho trovato grandi vantaggi. Il GA è solitamente considerato un metodo di ottimizzazione globale. Questo è vero se si ha molto tempo a disposizione per gestire colonie molto grandi, ma quando il tempo (le dimensioni delle colonie) è limitato, il GA, come i metodi di discesa del gradiente, converge a un minimo locale, e piuttosto lentamente. Naturalmente, rispetto ai metodi di ricerca spuntata di tutte le possibili combinazioni di parametri di input, il GA offre un innegabile vantaggio in termini di velocità. Una delle ampie applicazioni dei GA è l'addestramento di reti neurali multistrato con un gran numero di coefficienti. Tali reti presentano un numero enorme di minimi locali. Per qualche motivo, i GA sono considerati la cura per questo male. Ma in realtà la cura è lo strumento applicato, cioè la rete multistrato in questo caso. È molto più semplice scegliere un altro strumento in grado di effettuare una classificazione ad alta precisione (come buy/sell/hold) o un'estrapolazione di regressione con un'ottimizzazione semplice e senza ambiguità ;-).
1) Grazie per le sue gentili parole.
2) Non metto in dubbio la sua conoscenza dell'argomento, ma è comunque necessaria una certa abilità nel lavorare con gli algoritmi genetici (4° consiglio nella sezione dell'articolo "Raccomandazioni per lavorare con UGA").
UGA è stato sviluppato come strumento universale che può essere utilizzato per qualsiasi problema di ottimizzazione (sezione dell'articolo "Un po' di storia") senza alcuna modifica dell'algoritmo. È disponibile al massimo per ulteriori modifiche e per l'aggiunta di operatori specifici. Conoscete molti algoritmi di ottimizzazione con queste proprietà?
Non so perché il GA sia considerato una panacea per vari problemi di ottimizzazione, personalmente non lo penso e non l'ho mai affermato da nessuna parte. Naturalmente, per ogni compito specifico si può scegliere lo strumento di ottimizzazione migliore sia in termini di velocità di esecuzione che di risultato finale. UGA ha un obiettivo diverso: essere universale.
Ho pubblicato alcune interessanti funzioni di prova nel thread del forum MQL4 "Test Multivariable Multiextreme Function", una delle quali è presentata nell'articolo.
Se volete, potete provare a trovare gli estremi delle funzioni proposte utilizzando altri algoritmi di ottimizzazione diversi dal GA e pubblicare qui i risultati. Siete invitati a farlo. Sarà interessante per tutti e in primo luogo per me.
PS Vi consiglio di conoscere l'algoritmo proposto nell'articolo per convincervi del contrario (in grassetto), anche se non ho l'obiettivo di convincere nessuno di nulla.
In bocca al lupo per la tua ricerca!
- www.mql5.com

- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Il nuovo articolo Algoritmi Genetici - È Facile! è stato pubblicato:
In questo articolo, l'autore parla di calcoli evolutivi con l'uso di un algoritmo genetico sviluppato personalmente. Dimostra il funzionamento dell'algoritmo, usando esempi e fornisce consigli pratici per il suo utilizzo.
L’AG contiene i principi, presi in prestito dalla natura stessa. Questi sono i principi di ereditarietà e variabilità. L'ereditarietà è la capacità degli organismi di trasferire i loro tratti e le loro caratteristiche evolutive alla loro discendenza. Grazie a questa capacità, tutti gli esseri viventi si lasciano alle spalle le caratteristiche della loro specie nei loro figli.
La variabilità dei geni negli organismi viventi assicura la diversità genetica della popolazione ed è casuale, poiché la natura non ha modo di sapere in anticipo quali caratteristiche saranno preferibili in futuro (cambiamenti climatici, diminuzione / aumento di cibo, l'emergere di specie concorrenti, ecc.). Questa variabilità consente la comparsa di figli con nuovi tratti, che possono sopravvivere e lasciare i figli nelle nuove condizioni alterate dell'habitat.
In biologia, la variabilità, che è sorta a causa dell'emergere di mutazioni, è chiamata mutazionale; la variabilità dovuta a un'ulteriore combinazione incrociata di geni mediante accoppiamento, è chiamata combinazionale. Entrambi questi tipi di variazioni sono implementati nell'AG. Inoltre, c'è un'implementazione della mutagenesi, che imita il meccanismo naturale delle mutazioni (cambiamenti nella sequenza nucleotidica del DNA) - il naturale (spontaneo) e artificiale (indotto).
L'unità più semplice di trasferimento di informazioni sul criterio dell'algoritmo è il gene - unità strutturale e funzionale di ereditarietà che controlla lo sviluppo di un particolare tratto o proprietà. Chiameremo una variabile della funzione il gene. Il gene è rappresentato da un numero reale. L'insieme delle variabili geniche della funzione studiata è la caratteristica caratterizzante del cromosoma - .
Mettiamoci d'accordo per rappresentare il cromosoma sotto forma di colonna. Quindi il cromosoma per la funzione f (x) = x ^ 2, sarebbe simile a questo:
Autore: Andrey Dik