Consulente per un articolo. Test per tutti i partecipanti. - pagina 4

 
Reshetov:


Ho migliorato l'Expert Advisor in modo che calcoli la probabilità di una futura posizione short utilizzando i segnali di trading. Di conseguenza, se la probabilità è superiore a 0,5, apriamo una posizione corta, altrimenti ne apriamo una lunga.



Ho reso fissi Take e Losses, cioè non rotoleranno in base ai segnali. Questo è necessario per poter applicare la MM.

Ecco l'immagine: i primi 136 trade sono ottimizzazione, il resto sono OOS.


Poiché questo argomento non è di alcun interesse per i trader e solo i floodbusters vengono qui per discutere la personalità del topicstater, non allegherò il codice modificato dell'Expert Advisor.


Yuri, non ascoltarli. Si prega di postare l'EA modificato.
 
Andru80:
Yuri, non ascoltarli. Si prega di postare l'EA modificato.

Se avete un articolo, avrete anche un EA. Vediamo cosa c'è... Con una certa esperienza, non hai nemmeno bisogno di test per valutare l'idea. Aspetteremo.
 
Figar0:

Quando l'articolo sarà scritto, l'Expert Advisor seguirà. Vediamo come stanno le cose. Non hai bisogno di test per valutare l'idea. Aspetteremo.

Sto pubblicando l'Expert Advisor prima dell'articolo, in modo che tutti possano testarlo e dare la loro opinione (anche se è possibile che si ricominci a discutere della mia personalità?)


L'essenza non è nemmeno nell'Expert Advisor, ma nell'algoritmo anti-fitting che ho aggiunto ad esso.

Ora non dobbiamo cercare a lungo e in profondità nei risultati dei test, ma guardare attraverso le righe superiori dei risultati, devono essere lì da qualche parte, è abbastanza possibile che siano nella riga superiore.

I risultati dei test e i risultati dell'ottimizzazione possono essere molto diversi poiché l'anti-fitting è abilitato solo durante l'ottimizzazione e disabilitato per il resto del tempo.

Ecco il grafico della linea superiore dei risultati dei test (i primi 404 affari sono l'ottimizzazione, il resto sono test in avanti):


L'Expert Advisor è allegato al file (è compilato prima della pubblicazione, aprirò il suo codice nell'articolo).

I parametri di input sono:

x0, x1, x2, x3, x4, x5, x6, x7 - regolabile da 0 a 100 in incrementi di 1. Ottimizzato.

sl - Stop Loss e Take Profit in pip. Per esempio, per EURUSD su H1, per cinque cifre, puoi prendere da 100 a 1000 in incrementi di 50 (per quattro cifre, togli uno zero da tutti i numeri). Ottimizzato.

lotti - volume in lotti, è necessario mettere almeno 1 lotto per ottimizzare. Non ottimizzato.

mn - numero magico. Non ottimizzato.

d - numero di cifre decimali nella dimensione del lotto. Cioè se 0,01 è permesso, esporre d = 2. Non sarà ottimizzato.

Ottimizzazione per Fattore di Profitto, i risultati dell'ottimizzazione sono ordinati anche in base a questo parametro.

Per sicurezza, sto aggiungendo all'archivio ZIP un file con le impostazioni EA, come le ho impostate.

File:
rnn_v3_1.ex4  7 kb
rnn_v3.zip  1 kb
 

Risultato interessante!

Yura, usi i dati dello strumento a cui è collegato l'EA nell'analisi?

 
Neutron:

Risultato interessante!

Yura, usi i dati dello strumento a cui è collegato l'EA nell'analisi?

Sì, cioè gli altri strumenti non vengono analizzati. L'AT è condotta solo dai prezzi di apertura.


Fondamentalmente, le voci non sono molto sofisticate, quindi posso mostrarvi i frammenti di codice dove vengono calcolate tutte queste cose:


   // Считываем показания индикаторов
   double a1 = input(9, 0);
   double a2 = input(9, 1);
   double a3 = input(9, 2);

   // Вычисляем вероятность торгового сигнала для короткой позиции
   double result = getProbability(a1, a2, a3);

   ...

// Показания индикаторов, должны быть в диапазоне от 0 до 1
// p - период индикатора
// shift - смещение вглубь истории в периодах индикатора
double input(int p, int shift) { 
  return (iRSI(Symbol(), 0, p, PRICE_OPEN, p * shift) / 100.0);
}
 

Grazie.

Antifitting... Se ricordate i classici di NS, l'anti-fitting si riduce a trovare il minimo errore di predizione sul forward. Questo può essere realizzato eseguendo le statistiche su un centinaio di corse indipendenti con la riqualificazione di NS su ogni corsa. Questo è comprensibile, ma molto difficile da implementare a causa della lunghezza finita della BP iniziale e della sua non stazionarietà.

Un altro modo è quello di ottenere una stima della lunghezza ottimale del campione di allenamento. Per quanto ne so, nessuno ha ancora risolto questo problema in modo generale...

Ci sei riuscito?

 
Neutron:

Un altro modo è quello di ottenere una stima della lunghezza ottimale del campione di allenamento. Per quanto ne so, nessuno ha ancora risolto questo problema in forma generale...

Non devi risolverlo. Basta trovare la giusta lunghezza del campione di allenamento per un certo caso, ed è molto facile da fare.

Sì, e non è un anti-fit. È un montaggio di secondo livello. Per l'adattamento a n livelli, ci devono essere n+1 campioni da testare, l'ultimo è un campione di controllo.

Questo è esattamente l'ultimo che Reshetov non ha mai.

 

Che semplice!

Per ogni punto di curva, bisogna reclutare delle statistiche. E da dove attingere, se la fascia di prezzo cambia completamente dopo un mese?

 

No, non ha alcun senso.

Nel caso di Juri, l'allenamento NS è fatto semplicemente passando attraverso i pesi sul mio dato tratto di storia... giusto? Se è così, allora l'analisi è semplicemente il risultato degli scambi ad ogni iterazione. E l'affermazione: "...Ora i test forward di successo non hanno bisogno di cercare a lungo e in profondità nei risultati dei test, ma dobbiamo passare attraverso le prime righe dei risultati, devono essere da qualche parte, è abbastanza possibile che nella prima riga...", non è corretto - i forward di successo possono essere ovunque e dobbiamo cercare ovunque.

 
Neutron:

Grazie.

Anti-fit... Se ricordate i classici di NS, l'anti-fitting si riduce a trovare il minimo errore di predizione sul forward. Questo può essere realizzato eseguendo le statistiche su un centinaio di corse indipendenti con la riqualificazione di NS su ogni corsa. Questo è comprensibile, ma molto difficile da implementare a causa della lunghezza finita della BP iniziale e della sua non stazionarietà.

Un altro modo è quello di ottenere una stima della lunghezza ottimale del campione di allenamento. Per quanto ne so, nessuno ha ancora risolto questo problema in modo generale...

Ci sei riuscito?

Per quanto riguarda i sistemi di trading, è possibile solo la corrispondenza della storia. Le reti neurali hanno due problemi alla volta: il fitting e il retraining. E la riqualificazione avviene anche su dati stazionari.

Ma con le reti neurali con input adeguati è un po' più facile quando abbiamo a che fare con qualche pacchetto di reti neurali o con una griglia autocostruita, se usiamo un metodo presentato da Leonid Velichkovski: dividiamo gli esempi di allenamento in due campioni, campioni di allenamento e di test, e nel processo di apprendimento calcoliamo i risultati per entrambi i campioni, e insegniamo la griglia solo per il campione di allenamento. Non appena il miglioramento dei risultati sul campione di prova si ferma, cioè i risultati non migliorano ulteriormente, significa che la rete è stata sufficientemente addestrata e ci si deve fermare a questo punto. Così, otteniamo una rete che è stata addestrata in modo adeguato - non miglioreremo e facilmente peggioreremo. In questo caso non ci interessa esattamente quanto la rete sia riqualificata o adattata, poiché abbiamo un estremo sul campione di prova.

È molto più difficile con l'algoritmo genetico integrato nel terminale, poiché non possiamo calcolare i risultati nelle sezioni in avanti e fermare l'ottimizzazione in tempo. A causa di questo devi cercare manualmente gli attaccanti nei risultati di ottimizzazione ordinati per indicatori.

Ho seguito un percorso leggermente diverso:

1. Ha scoperto la causa del sovrallenamento della rete neurale e l'ha eliminata. Cioè, se gli esempi di allenamento sono stazionari e non contengono contraddizioni, allora il mio algoritmo non è sovrallenato, ma può facilmente sottoallenarsi se il numero di esempi non è sufficiente per l'interpolazione.

2. Era più complicato con il montaggio. Ma il problema si è rivelato anche risolvibile, poiché l'adattamento dipende principalmente dalla qualità dell'apprendimento, cioè dall'adeguatezza del sistema di ricompense e punizioni, altrimenti l'algoritmo seguirà il percorso di minor resistenza e imparerà nel modo che trova più facile, piuttosto che nel modo che è effettivamente adeguato. Così ho eliminato proprio queste vie di minor resistenza, cioè ho forzato l'algoritmo genetico a valutare la qualità del calcolo delle probabilità dei risultati, piuttosto che il numero di pips.

3. non stazionarietà. Non potrebbe essere superato del tutto, poiché dipende solo dal mercato, non dall'algoritmo. È l'unica cosa che è un vero ostacolo alla qualità delle previsioni. Ma il suo impatto, se eliminiamo gli altri inconvenienti della formazione, non è più così grande da interferire con i guadagni.