Home Trading Sistematico Post

MTC Combo: Ottimizzazione del Tuo Expert Advisor per MetaTrader 5

Allegato
16762.zip (3.54 KB, Scarica 0 volte)

Oggi parliamo di un tema davvero interessante per noi trader: l'ottimizzazione di un Expert Advisor (EA) su MetaTrader 5, in particolare il sistema MTC Combo.

Obiettivo dell'EA: Supponiamo di avere un sistema di trading base (BTS). Dobbiamo progettare e addestrare una rete neurale (NN) in grado di integrare il BTS, eseguendo azioni che quest'ultimo non può fare. In questo modo, otteniamo un sistema di trading composto da BTS e NN, che si completano a vicenda.

Non ha senso reinventare la ruota: perché insegnare a correre veloce quando abbiamo già un'auto o a volare quando abbiamo un elicottero?

Se abbiamo un sistema di trading in trend, è necessario insegnare alla rete neurale solo una strategia controtrend. Un sistema progettato per i trend non può operare durante le fasi di lateralità, né identificare correttamente ritracciamenti e inversioni. Possiamo utilizzare due strategie di trading (trend e controtrend) e lanciarle su un unico grafico, oppure possiamo addestrare la rete neurale in modo che integri il sistema di trading.

Per questo scopo, abbiamo sviluppato una rete neurale a due strati, composta da due percettroni nel primo strato e uno nel secondo.

La rete neurale può trovarsi in uno dei seguenti tre stati:

  1. Entrata long
  2. Entrata short
  3. Indefinito

Il terzo stato implica che il controllo passa al BTS, mentre i segnali di trading vengono generati dalla rete nei primi due stati.

L'addestramento della rete neurale è suddiviso in tre fasi. Un percettrone viene addestrato in ciascuna di esse. Il BTS ottimizzato è presente in ogni fase per far sapere ai percettroni cosa possono fare.

L'addestramento separato dei percettroni tramite algoritmo genetico è necessario a causa di un limite dell'algoritmo stesso: il numero ristretto di parametri che possono essere selezionati con esso. Comunque, ogni fase di addestramento è logicamente coerente e la rete neurale non è troppo grande, quindi l'intero processo di ottimizzazione avviene in un tempo ragionevole.

Tuttavia, la prima fase, che precede l'addestramento della NN, è destinata all'ottimizzazione del BTS.

Per evitare confusione, il numero della fase è specificato nell'input dell'EA con l'ID pass. Gli ID degli input corrispondenti al numero della fase terminano con quel numero esatto.

Prepariamo l'ottimizzazione e l'addestramento della NN.

Imposta il deposito iniziale nel tester a 100€ (per evitare un margine di chiamata artificiale durante l'ottimizzazione), ottimizza il parametro Balance + max Sharpe Ratio, scegli il tipo di ottimizzazione Fast genetic algorithm.

Ora, vai alla scheda Input delle proprietà dell'EA. Imposta la dimensione della posizione aperta assegnando il valore 0.01 all'ID lots.

L'ottimizzazione deve essere effettuata secondo il modello Open prices only. Questo metodo è stato scelto per la sua alta velocità. Inoltre, l'algoritmo dell'EA presenta una nuova gestione delle barre.

Prima fase di ottimizzazione. Ottimizzazione del BTS:

Imposta pass a 1. Ottimizza solo gli input corrispondenti alla prima fase, con tutti i loro ID che terminano in uno. Quindi, imposta i segni di ottimizzazione solo su di essi, rimuovendo i segni dagli altri parametri.

tp1 - take profit del BTS. Ottimizzato con valori da 100 a 1000 con passo di 10
sl1 - stop loss del BTS. Ottimizzato con valori da 100 a 1000 con passo di 10
p1 - periodo dell'oscillatore CCI applicato nel BTS. Ottimizzato con valori da 3 a 100 con passo di 1

Avvia l'addestramento tramite l'ottimizzazione dell'algoritmo genetico.

Seconda fase. Addestramento del percettrone responsabile delle posizioni short:

Imposta l'input 'pass' a 2 (in modo che corrisponda al numero della fase). Rimuovi i segni di ottimizzazione impostati nella fase precedente. Salva gli input ottenuti durante la fase precedente in un file, giusto per sicurezza.

Imposta i segni di ottimizzazione per i parametri della seconda fase (ID che terminano in due):

x12, x22, x32, x42 - rapporti di peso del percettrone che riconosce le posizioni short. Ottimizzati con valori da 0 a 200 con passo di 1.
tp2 - take profit delle posizioni aperte dal percettrone. Ottimizzato con valori da 100 a 1000 con passo di 10
sl2 - stop loss delle posizioni aperte dal percettrone. Ottimizzato con valori da 100 a 1000 con passo di 10
p2 - periodo dei valori della differenza di prezzo analizzati dal percettrone. Ottimizzato con valori da 3 a 100 con passo di 1.

Avvia l'addestramento tramite l'ottimizzazione dell'algoritmo genetico.

Terza fase. Addestramento del percettrone responsabile delle posizioni long:

Imposta l'input 'pass' a 3 (in modo che corrisponda al numero della fase). Rimuovi i segni di ottimizzazione impostati nella fase precedente. Salva gli input ottenuti durante la fase precedente in un file, giusto per sicurezza.

Imposta i segni di ottimizzazione per i parametri della terza fase (ID che terminano in tre):

x13, x23, x33, x43 - rapporti di peso del percettrone che riconosce le posizioni long. Ottimizzati con valori da 0 a 200 con passo di 1.
tp3 - take profit delle posizioni aperte dal percettrone. Ottimizzato con valori da 100 a 1000 con passo di 10
sl3 - stop loss delle posizioni aperte dal percettrone. Ottimizzato con valori da 100 a 1000 con passo di 10
p3 - periodo dei valori della differenza di prezzo analizzati dal percettrone. Ottimizzato con valori da 3 a 100 con passo di 1.

Avvia l'addestramento tramite l'ottimizzazione dell'algoritmo genetico.

Fase finale.

Addestramento del primo strato (percettrone di secondo livello):

Imposta l'input 'pass' a 4 (in modo che corrisponda al numero della fase). Rimuovi i segni di ottimizzazione impostati nella fase precedente. Salva gli input ottenuti durante la fase precedente in un file, giusto per sicurezza.

Imposta i segni di ottimizzazione per i parametri della quarta fase (ID che terminano in quattro):

x14, x24, x34, x44 - rapporti di peso del percettrone di primo strato. Ottimizzati con valori da 0 a 200 con passo di 1.
p4 - periodo dei valori della differenza di prezzo analizzati dal percettrone. Ottimizzato con valori da 3 a 100 con passo di 1.

Avvia l'addestramento tramite l'ottimizzazione dell'algoritmo genetico.

Questo è tutto! La rete neurale è addestrata.

L'EA ha un altro input non ottimizzabile, mn - numero magico che consente al sistema di distinguere i propri ordini da quelli aperti manualmente o da altri EA. Il numero magico deve essere unico.

P.S.

  • La dimensione del deposito iniziale è definita come un drawdown assoluto moltiplicato per due (margine di sicurezza).
  • Il codice sorgente dell'EA non è stato ottimizzato.
  • Modifica il contenuto della funzione basicTradingSystem() se vuoi sostituire il BTS integrato con l'algoritmo di un altro sistema di trading.
  • Ri-ottimizza l'EA durante i fine settimana se i risultati della settimana precedente sono stati poco redditizi. Le perdite segnalano cambiamenti di mercato e la necessità di ri-ottimizzazione. Se l'EA è redditizio, non è necessaria ri-ottimizzazione, poiché il robot riconosce bene i modelli di mercato.

Post correlati

Commento (0)