Non per gli sviluppatori di MT! Con cosa sostituire INIT_PARAMETERS_INCORRECT? - pagina 4
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Ho fatto un Expert Advisor di prova per la modalità mat dell'Optimizer
Questo è l'aspetto di un grafico di ottimizzazione per 8 agenti in parallelo in modalità forza bruta completa senza passaggi di interleaving (Rand = falso)
Si può chiaramente vedere qui che gli agenti stanno eseguendo compiti in batch.
Per vedere la dipendenza dal parametro, passiamo alla modalità di visualizzazione
Eccola - una parabola nativa, la cui cima (unità) cercheremo attraverso GA.
In modalità shuffle (Rand = true), naturalmente, la forza bruta completa trova il nostro vertice
Ecco la parabola nativa, il cui vertice (uno) sarà cercato attraverso GA.
Senza la miscelazione GA non ho trovato l'estremo, ma ci sono andato vicino
Ci sono voluti 179 passaggi. Vi ricordo che l'insieme completo dei compiti è di 10001 passaggi. Sì, il problema è molto semplice, ma comunque.
Ora proviamo la variante con il rimescolamento (Rand = true).
Chiudere di nuovo. Si vede chiaramente nel log, 182 passaggi sono stati calcolati completamente, e 970 sono stati presi dalla cache.
Buon risultato, quindi, proviamo ad aumentare il numero di punti nell'intervallo.
Questo è un buon risultato, quindi proviamo ad aumentare il numero di punti nell'intervallo.
Il numero di punti nell'intervallo è un milione.
Rand = falso
Rand = vero (su un milione di punti, coppie scelte a caso sono state scambiate 100 milioni di volte)
Il risultato mostra che la mia affermazione sicura di sé
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Non per gli sviluppatori MT! Con cosa sostituire INIT_PARAMETERS_INCORRECT?
fxsaber, 2018.07.10 16:27
Ovviamente se si traccia un'enumerazione completa di y = x^2. Poi mescolare casualmente le righe di opimizzazione e creare un nuovo set basato sul mescolamento. Allora la GA non troverà il vertice della parabola.
È piuttosto falso che vero.
D'altra parte, la scelta della funzione di fitness come parabola è stata inizialmente estremamente miope, poiché il numero di punti vicini a uno è fuori scala.
C'è solo una domanda per il GA, perché l'estremo esatto non è stato trovato senza mescolanza, dato che la funzione scelta è ideale per questo?
D'altra parte, scegliere una funzione di fitness come una parabola è stato inizialmente estremamente miope, poiché il numero di punti vicini a uno è fuori scala.
Suppongo che se si sceglie una funzione con un picco acuto, il GA si romperà comunque dopo la miscelazione. E una tale funzione è molto più vicina a TC.
Ho messo fuori un test EA per la modalità matematica dell'ottimizzatore
Purtroppo le mie conoscenze non sono sufficienti per capire tutto ))))
Ho deciso di renderlo più semplice. In generale, ho aggiunto al mio Expert Advisor un record nel file delle catene legittime. Ho trovato 1953 varianti possibili su 117649. A proposito, mi ci sono voluti 3 giorni per fare la ricerca completa su un intervallo di 3 giorni, solo prezzi aperti e 0 scambi.
Ora ho un file. Non so ancora come usarlo per l'ottimizzazione. Ci penserò domani...
E perché ci sono meno successi? Dovremo farlo di nuovo?Presumo che se si seleziona una funzione con un picco acuto, il GA si romperà comunque dopo la miscelazione. E una tale funzione è molto più vicina a TC.
Quindi la genetica non è progettata per catturare i picchi. Il suo scopo è quello di trovare regioni stabili, che è ciò che richiede il TC. E i picchi sono rumore, di regola.
Per quanto riguarda le combinazioni errate di parametri, esse devono essere eliminate nella fase di formazione della popolazione, cioè se lo scambio di geni o la mutazione danno come risultato un individuo errato, è necessario ripetere nuovamente la sua generazione fino ad ottenere quello corretto. Allora tutto sarà a posto.
Se il vaglio diINIT_PARAMETERS_INCORRECT avviene dopo la formazione della popolazione, riducendo così la dimensione di questa popolazione, allora naturalmente questo viola il normale meccanismo di selezione genetica. Apparentemente MQ ha questa variante. E in questo caso il compito del topicstarter è difficilmente risolvibile (nel caso generale), ballare con i tamburelli non aiuta.
Grazie per la tua opinione, ma qui non c'è nessuna discussione sull'architettura del programma. Nel caso non l'abbiate notato...
Sbagliato, sbagliato.
Sono d'accordo che il vostro problema è esattamente l'architettura sbagliata del programma. Penso che si possa ottenere il massimo solo con la forza bruta, e sarà altamente instabile.
Molto probabilmente vengono utilizzati overshoots completi su ogni tick. Questo di per sé porta alla lentezza del funzionamento. Se è così, dovremmo considerare l'utilizzo di ricerche complete solo all'avvio/apertura della barra di Expert Advisor e poi controllare gli ultimi dati. Tale ottimizzazione riduce sempre il consumo di risorse.
La genetica non è progettata per catturare i picchi. Il suo scopo è quello di trovare regioni stabili, che è ciò che richiede TC. E i picchi sono rumore, di regola.
Non è esattamente così. Inoltre, anche le aree stabili dello spazio di ottimizzazione sono ancora aree con cali e picchi, il FF è tutt'altro che liscio.
La genetica è uno strumento versatile, potrebbe essere modificato per ottimizzare un FF corrotto, ma in questo caso ci vorrà più tempo per ottimizzare un FF liscio.
Imho, la genetica standard dovrebbe digerire i set con metà di INIT_PARAMETERS_INCORRECT senza nemmeno pensarci. Soprattutto perché queste aree sono di solito ben raggruppate.
ma in generale la soluzione migliore è quella di trasformare lo spazio dei parametri di input.
Invano, invano.
Sono d'accordo che il vostro problema è nell'architettura sbagliata del programma. Penso che si possa ottenere il massimo solo con la forza bruta, e sarà molto instabile.
Non si tratta di architettura. Si tratta dell'insieme di funzioni e dell'ordine in cui vengono applicate. Infatti, in origine, queste funzioni avevano una sola sequenza costante. Poi ho deciso che forse avrei dovuto sperimentare l'ordine di chiamarli e non chiamarne alcuni. L'ho implementato attraverso INIT_PARAMETERS_INCORRECT. Si può vedere il progresso. Ma ho un problema con l'ottimizzazione genetica.
Ora veniamo al punto. Ho creato un file con catene legittime. Come usarlo ora? Ho il sospetto che dovrei usare onTester, frames... Ho guardato la documentazione, ma qualcosa non quadra. Non riesco a capire come affrontarlo.
Sto pensando di leggerlo in un array e prenderne i dati...