Categoria
Piattaforma
Livello
Base
Si usa in
Operatività su MT5Valutazione di un EAProgettazione della strategia

Expert Advisor

Programma di trading automatizzato scritto in MQL5 che gira all'interno di MetaTrader 5 e apre, modifica e chiude ordini secondo regole programmate, senza intervento manuale.

anche: EA, robot di trading, bot di trading, trader algoritmico

Aggiornato

In parole semplici

Un programma che opera al posto vostro dentro MetaTrader. Non ha giudizio né memoria oltre a quella che gli avete dato: si sveglia quando la piattaforma lo richiama, guarda le poche cose per cui è stato scritto e agisce.

Perché conta

Backtest, cifre di drawdown, magic number, uptime del VPS: tutto questo esiste perché a inviare gli ordini è un programma e non una persona. Sapere che cosa la piattaforma passa a un EA, e che cosa gli nasconde, è la differenza fra leggere correttamente un risultato ed esserne sorpresi.

  • Esegue senza esitare, e in questo stanno tutto il suo valore e tutto il suo rischio. Lo stesso insieme di regole che non salta mai un segnale valido non si accorge mai nemmeno che oggi è diverso.
  • Vede una fetta stretta: i prezzi del suo simbolo, i valori degli indicatori che richiede, le posizioni e il saldo del conto. Le notizie, le quotazioni di altri broker e i vostri altri conti restano fuori da quella finestra se il codice non va a prenderli.
  • Viene distribuito compilato. Un file .ex5 gira ma non si legge, quindi la fiducia di chi compra deve venire da prove di test pubblicate e non dal sorgente.
  • Gira solo finché gira il terminale. Un EA su un portatile addormentato è un EA che non sta operando: è tutto qui l'argomento a favore di un VPS.

In MetaTrader 5

Dove compare in MT5

  • Navigatore → Expert Advisor — gli EA compilati che il terminale riesce a vedere
  • File → Apri cartella dati → MQL5/Experts — è lì che deve trovarsi il file .ex5 perché compaia
  • Barra degli strumenti → Algo Trading — l'interruttore generale; un EA con la faccina triste sul grafico è un EA bloccato da questo pulsante
  • Grafico → Proprietà dell'EA (F7) → Parametri di input / Comune — parametri e permessi per singolo EA
  • Visualizza → Strategy Tester (Ctrl+R) — lo stesso EA eseguito sui dati storici

Come lo usano gli EA

  • Il terminale richiama OnInit() una volta all'aggancio, OnTick() a ogni quotazione in arrivo per il simbolo del grafico e OnDeinit() alla rimozione.
  • Il lavoro avviene di solito sulle barre chiuse e non a ogni tick: l'EA confronta l'orario di apertura della barra corrente con quello che ha memorizzato e ritorna subito quando non si è formato nulla di nuovo.
  • Gli ordini partono come MqlTradeRequest compilata, oppure attraverso il wrapper CTrade che ne compila gran parte al posto vostro.
  • Ogni istanza marca i propri ordini con un magic number per gestire soltanto le proprie posizioni: senza, due EA si contendono gli stessi ticket.

Impostazioni tipiche

Impostazione Valore tipico Nota
Algo Trading (terminale) attivo Dopo l'installazione è spento. Nulla opera finché non viene acceso.
Consenti Algo Trading (per EA, F7 → Comune) attivo È un permesso distinto dall'interruttore generale del terminale.
Consenti WebRequest per l'URL indicato spento, se l'EA non ne ha bisogno Serve solo agli EA che scaricano dati esterni; concedetelo per singolo URL, mai in blocco.
Timeframe del grafico il timeframe per cui l'EA è stato progettato Una strategia M15 su un grafico H1 è un'altra strategia: OnTick scatta a ogni tick, ma la logica a barre legge il periodo del grafico.
MagicNumber univoco per ciascuna istanza in esecuzione Non per prodotto: due grafici che eseguono lo stesso EA richiedono due valori.

Problemi operativi frequenti

  • Il terminale è chiuso, sospeso o in riavvio per aggiornamenti: l'EA semplicemente non sta girando, e non viene registrato alcun errore.
  • Un nome di simbolo diverso fra broker e impostazioni (EURUSD contro EURUSD.m) lascia l'EA agganciato e muto.
  • Margine libero insufficiente: OrderSend fallisce a ogni tentativo e l'EA continua a provarci, così il log si riempie mentre sul conto non accade nulla.
  • Il contesto di trading è occupato quando più EA inviano nello stesso momento: guasti intermittenti e difficili da riprodurre.
  • L'EA è stato testato su un broker con un diverso modello di esecuzione o una diversa dimensione del contratto, e in reale si comporta in modo diverso senza alcuna modifica al codice.

Funzioni MT5 collegate

OnInit() / OnDeinit()
Richiamate una volta all'aggancio e una alla rimozione: è lì che si validano gli input e si creano gli handle.
OnTick()
Richiamata a ogni quotazione in arrivo per il simbolo del grafico; è il punto di ingresso principale.
OnTimer()
Richiamata a intervallo fisso impostato da EventSetTimer(), per il lavoro che non deve dipendere dall'arrivo dei tick.
OrderSend(request, result)
L'unica chiamata che invia ogni operazione di trading; è la struttura della richiesta a decidere di che tipo si tratta.
CTrade (Trade/Trade.mqh)
Il wrapper della libreria standard che la maggior parte degli EA usa invece di compilare MqlTradeRequest a mano.

Esempio

Quasi ogni EA, ridotto all'ordine in cui la piattaforma lo richiama. Niente di tutto questo è strategia: è la cornice dentro cui una strategia si colloca.

1. OnInit()
una volta, all'aggancio
Validare gli input, creare gli handle degli indicatori, impostare il magic number.
2. OnTick()
a ogni quotazione
Ritornare subito se non si è formata una barra nuova, poi valutare le regole.
3. OrderSend()
quando scatta una regola
Una MqlTradeRequest compilata per ogni operazione: aprire, modificare o chiudere.
4. OnDeinit()
una volta, alla rimozione
Rilasciare gli handle. Le posizioni aperte non vengono chiuse da questa fase: restano.

Rimuovere un EA dal grafico non chiude ciò che ha aperto. Le posizioni restano, e non c'è più nulla che le gestisca.

Calcolo if (iTime(_Symbol, PERIOD_CURRENT, 0) == lastBarTime) return;

Risultato Un EA a chiusura di barra che ignora le migliaia di tick fra una decisione e l'altra

Come si usa

Giudicare un EA che non avete scritto voi è una questione di prove: il file compilato non vi dice nulla. Qui sotto c'è che cosa chiedere.

  • Chiedete quali dati ha usato il backtest e come è stato modellato. Tick reali e una cifra di qualità della modellazione significano qualcosa; una curva di equity senza etichette no.
  • Chiedete il numero di operazioni e la finestra temporale. L'EA mediano pubblicato qui ha chiuso 362 operazioni nell'arco di più anni; quaranta operazioni in quattro mesi sono un aneddoto.
  • Verificate se la strategia tiene aperte le perdenti. Mediare al ribasso e il recupero a griglia producono curve bellissime fino al paniere che non recupera, e nessun rapporto calcolato sulle operazioni chiuse vi avvisa.
  • Provatelo in demo sul vostro broker prima di finanziarlo. Modello di esecuzione, spread, dimensione del contratto e denominazione dei simboli sono tutti diversi, e cambiano tutti i risultati.
  • Date a ogni istanza il proprio magic number, e annotate quale sia quale prima di averne più di due in esecuzione.

Ogni EA elencato qui pubblica la finestra testata, la fonte dei dati, la qualità della modellazione e il registro completo delle operazioni, così queste prove si possono verificare invece di doverle chiedere.

Errori frequenti

Trattare un EA come un trader dotato di giudizio

È un insieme di regole che la piattaforma richiama a ogni tick. Non può accorgersi che il mercato è cambiato, che fra dieci minuti parla una banca centrale o che i suoi stessi risultati sono peggiorati, a meno che qualcuno non abbia scritto una regola esattamente per quello.

Dare per scontato che il risultato di un backtest si trasferisca sul vostro conto

Spread, commissioni, modello di esecuzione, dimensione del contratto e insieme dei simboli fanno parte del risultato. Un test su un broker è una prova riguardo a quel broker; una prova in demo sul vostro è il modo più economico per vedere quanto si trasferisce.

Rimuovere l'EA per fermarlo, e credere che si siano fermate anche le operazioni

Sganciare un EA lascia le sue posizioni aperte dove sono. Dopo non c'è più nulla che le segua o le chiuda: restano lì finché non toccano uno stop, un obiettivo o uno stop out.

Eseguire più EA su un conto senza separarli

Senza magic number distinti ogni EA considera ogni posizione come propria da gestire, e finiscono per chiudersi le operazioni a vicenda. Il guasto è silenzioso: nessun errore, solo risultati che non corrispondono ad alcuna singola strategia.

In dettaglio

Che aspetto ha un vero storico di un EA

Una definizione descrive il meccanismo; uno storico descrive l’esperienza. I quattordici EA pubblicati qui riportano l’elenco completo delle operazioni chiuse: 9.702 operazioni dal 2019.

Sui 14 EA pubblicatiValore
Operazioni chiuse9.702
Operazioni per EA (mediana)362, da 108 a 4.725
Profit factor (mediana)1,39, da 1,27 a 1,52
Peggior serie di perdite (mediana)6 operazioni, la peggiore 14
Periodo più lungo senza nuovo massimo di equity (mediana)423 giorni, il peggiore 775
Esecuzioni live verificate0

Gli expert advisor sono redditizi percorre quello storico EA per EA, e EA contro trading manuale rigioca le stesse operazioni con le regole di stop che una persona applica davvero.

Domande frequenti

Che cos'è un Expert Advisor in MetaTrader 5?
Un programma scritto in MQL5 e compilato in un file .ex5 che gira dentro il terminale e opera secondo le proprie regole. La piattaforma lo richiama a ogni quotazione in arrivo per il grafico a cui è agganciato, e lui apre, modifica e chiude ordini senza nessuno alla tastiera.
Devo lasciare il computer acceso perché un EA funzioni?
Sì: un EA gira dentro il terminale, quindi opera solo finché il terminale è in esecuzione e connesso. Per questo gli EA lasciati senza sorveglianza vivono di norma su un VPS e non su un computer che si sospende o si riavvia.
Posso leggere la strategia dentro un EA che ho comprato?
Dal file .ex5 no. Gli EA compilati girano senza esporre la propria logica, ed è esattamente per questo che i venditori li distribuiscono così. La strategia va descritta onestamente nella scheda e sostenuta da prove di test pubblicate.
Posso eseguire più di un EA sullo stesso conto?
Sì, ed è comune. Ogni istanza ha bisogno del proprio magic number per gestire solo le posizioni che ha aperto, e il conto ha bisogno di margine libero per tutte insieme: le strategie non sanno l'una dell'altra.