Come funziona un Expert Advisor (EA) su MT5 nel Forex
Che cos’è un EA su MT5 nel forex?
Un Expert Advisor (EA) su MT5 è un programma software sviluppato per la piattaforma MetaTrader 5 in grado di automatizzare parti del flusso di lavoro nel trading forex. “Automatizzare” significa che può eseguire ripetutamente codice secondo una pianificazione e reagire a nuove informazioni generando azioni come inviare, modificare o chiudere ordini.
In questo contesto, “come funziona” si riferisce solitamente a tre livelli:
- Logica decisionale: le regole programmate che determinano quando e come agire.
- Input: i dati e le impostazioni utilizzati dall’EA.
- Output: le azioni relative al trading che l’EA richiede alla piattaforma e al broker.
È utile distinguere tra meccaniche stabili (come il software elabora tipicamente gli input e produce richieste) e condizioni variabili (se gli ordini richiesti vengono eseguiti come previsto).
Meccaniche principali: dalle regole alle richieste di ordine
1) Inizializzazione e configurazione
Prima di qualsiasi attività di trading, un EA inizia tipicamente leggendo i suoi parametri di configurazione (ad esempio, impostazioni relative al rischio, assunzioni sulla dimensione degli ordini e soglie). Questi parametri definiscono le ipotesi che il codice dell’EA utilizzerà successivamente.
2) Acquisizione dei dati
Un EA necessita di input dall’ambiente di trading. In pratica, questi input possono includere:
- Dati di mercato (informazioni sui prezzi rese disponibili dalla piattaforma)
- Eventi temporali (nuovi tick, nuove barre o controlli programmati, a seconda del codice dell’EA)
- Vincoli legati al conto (ad esempio, fondi disponibili e permessi di trading del broker/piattaforma)
Poiché diversi broker e server possono offrire condizioni di esecuzione differenti, la stessa logica EA può comportarsi in modo diverso a seconda dell’ambiente.
3) Valutazione delle condizioni e processo decisionale
A ogni aggiornamento rilevante (ad esempio, all’arrivo di nuovi dati), l’EA valuta le sue regole programmate. Queste regole possono essere semplici (soglie fisse) o più complesse (logica multi-step con più parametri). La logica decisionale dell’EA produce solitamente uno dei seguenti risultati:
- Non fare nulla
- Aprire una posizione
- Modificare un ordine/posizione esistente
- Chiudere una posizione
Importante: le regole dell’EA non sono la stessa cosa della direzione futura del mercato. L’EA può agire solo in base alle informazioni ricevute e alle assunzioni codificate nel suo codice.
4) Dimensionamento della posizione e parametri dell’ordine
Se l’EA decide di piazzare un ordine, deve calcolare i parametri dell’ordine. Esempi comuni includono:
- Prezzo di entrata atteso (spesso derivato dalle quotazioni correnti o da livelli calcolati)
- Livelli di stop-loss / take-profit (se configurati)
- Dimensione dell’ordine basata su un lotto fisso o su una formula basata sul rischio
Quando esistono formule, la verifica indipendente richiede di dichiarare chiaramente le assunzioni: ad esempio, cosa l’EA utilizza come “importo di rischio”, come tratta i movimenti dei prezzi e se considera i costi.
5) Invio delle richieste al broker tramite MT5
L’EA non controlla il mercato. Invia richieste di ordine attraverso MT5. Il broker e la piattaforma determinano cosa accade effettivamente dopo, inclusi:
- Se un ordine viene accettato
- A quale prezzo viene eseguito
- Se vengono applicati vincoli (distanze minime, regole di margine o altre regole del broker)
Questa è una distinzione fondamentale: gli output dell’EA sono richieste di ordine, mentre gli scambi eseguiti dipendono dai risultati effettivi.
6) Monitoraggio e aggiornamento dello stato
Dopo le azioni, un EA di solito tiene traccia dello “stato”, ad esempio se ritiene che esista una posizione, se sono stati raggiunti determinati livelli o se deve continuare a gestire gli stop. Se lo stato interno dell’EA non corrisponde allo stato effettivo della piattaforma, le sue decisioni successive potrebbero diventare inconsistenti.
Evidenza attraverso un esempio: un semplice ciclo “decisione → ordine → gestione”
Di seguito è riportato un esempio didattico della sequenza tipica, presentato come modello concettuale e non come garanzia di performance.
Assunzioni (esplicite):
- L’EA verifica le condizioni in un aggiornamento regolare.
- Un parametro di configurazione definisce una dimensione fissa dell’ordine.
- Un altro parametro di configurazione definisce la logica di uscita.
Ciclo concettuale:
- All’aggiornamento: leggere le informazioni più recenti sui prezzi disponibili.
- Valutare la regola: se una condizione è soddisfatta, decidere di aprire una posizione.
- Calcolare i parametri: impostare la dimensione dell’ordine e eventuali parametri di uscita collegati.
- Richiedere l’ordine: inviare una richiesta di entrata alla piattaforma.
- Dopo l’esecuzione: se la posizione esiste, valutare ripetutamente le regole di uscita/gestione.
- Chiudere: quando le condizioni di uscita sono soddisfatte, richiedere la chiusura.
Dove entra l’incertezza:
- L’entrata richiesta potrebbe essere eseguita a un prezzo diverso da quello atteso.
- I costi (spread, commissioni o effetti di finanziamento) possono influire sui risultati netti.
- I ritardi nell’esecuzione possono cambiare quali regole vengono soddisfatte.
Limitazioni e modi di fallimento che è necessario aspettarsi
Anche con una logica corretta, diverse limitazioni possono impedire che i risultati corrispondano alle aspettative.
Incertezza nell’esecuzione e nei costi
Un EA può rispondere solo a ciò che accade durante l’esecuzione. Nel trading reale, gli eseguiti dipendono dalla liquidità, dagli spread e dalla gestione degli ordini da parte del broker. Ciò significa che un EA progettato per agire “in un determinato momento di prezzo” può comportarsi diversamente se i prezzi si muovono rapidamente tra un controllo e l’altro.
Sbaglio nelle impostazioni
Molti EA dipendono fortemente dalle scelte dei parametri. Se una configurazione presuppone un determinato ambiente (ad esempio, comportamento dei prezzi o vincoli di trading) ma viene utilizzata in un altro, l’EA potrebbe aprire o chiudere posizioni troppo frequentemente, non riuscire a piazzare ordini o gestire le posizioni in modo errato.
Limiti del backtesting e dei dati storici
I backtest possono essere utili per comprendere la logica, ma le relazioni storiche non si trasferiscono automaticamente alle condizioni future. Un approccio di verifica solido dovrebbe considerare cosa il modello di backtest include e non include (ad esempio, realismo nell’esecuzione e costi). Se il backtest ignora determinate frizioni, potrebbe produrre impressioni fuorvianti.
Desincronizzazione dello stato
Se le assunzioni interne dell’EA riguardo all’esistenza di una posizione aperta divergono dalle posizioni effettive della piattaforma, le azioni successive possono risultare errate. Questo può accadere a causa di ordini rifiutati, esecuzioni parziali, azioni manuali dell’utente o differenze nel modo in cui l’EA memorizza e ripristina lo stato.
Come verificare in modo indipendente una spiegazione di un EA su MT5
Per verificare “come funziona”, concentrarsi su controlli verificabili e non promozionali:
- Leggere la documentazione e i commenti nel codice: identificare quali input guidano le decisioni (impostazioni, trigger temporali e quali campi di prezzo vengono utilizzati).
- Mappare il flusso decisionale: scrivere la sequenza logica dal “controllo della condizione” alla “richiesta di ordine” fino alla “gestione della posizione”.
- Identificare le assunzioni nei calcoli: se l’EA dimensiona le posizioni o calcola le uscite, elencare gli esatti input che utilizza.
- Verificare la gestione degli errori: osservare come reagisce a ordini rifiutati, dati mancanti o vincoli del broker.
- Utilizzare test controllati: eseguire l’EA in un ambiente di test dove è possibile osservare le richieste di ordine e gli stati risultanti della piattaforma, confrontandoli con le transizioni di stato attese dal codice.
Se riesci a descrivere gli input, gli output e la sequenza di un EA senza fare riferimento a risultati promessi, hai una base solida per una comprensione indipendente, anche accettando l’incertezza riguardo all’esecuzione nel mondo reale.