Cos'è un Expert Advisor?
Quando un trader algoritmico si avvicina per la prima volta all'implementazione di un Expert Advisor per MetaTrader, la cosa più importante da capire — prima di qualsiasi sintassi o funzione di codice — è la struttura operativa di base. Un Expert Advisor, chiamato anche Trading Robot, è un programma software che gira 24/7 all'interno di una piattaforma di trading e monitora costantemente le condizioni del mercato.
Questo programma, scritto in MQL4, permette ai trader di automatizzare molte operazioni: leggere i prezzi in tempo reale, aprire e chiudere posizioni, leggere i valori degli indicatori, eseguire calcoli e molto altro.
Per scrivere un Expert Advisor devi prima aprire MetaEditor. All'interno di MetaTrader 4, clicca il pulsante MetaQuotes Language Editor nella barra degli strumenti — ha l'aspetto di un'icona gialla a forma di blocco note:

Una volta dentro MetaEditor, clicca File → Nuovo per creare un nuovo file:

Seleziona Expert Advisor dall'elenco:

Dai un nome al tuo Expert Advisor — ad esempio, My_First_EA:

Clicca Avanti attraverso i passaggi rimanenti e poi Fine. MetaEditor aprirà il framework di base del tuo nuovo Expert Advisor.
La Struttura di un Expert Advisor
Lo scheletro generato si presenta così:

Questa è la fondamenta di ogni Expert Advisor che scriverai. Alcune cose da notare:
- Commenti
//— Le righe che iniziano con//sono note per il programmatore. MetaTrader non le esegue. Usa i commenti per documentare le tue intenzioni. - Direttive
#property— Le righe che iniziano con#sono metadati utilizzati da MetaTrader: il titolare del copyright, il sito web e il numero di versione. Sostituisci i dati MetaQuotes predefiniti con i tuoi.
Il codice non si esegue semplicemente "dall'inizio alla fine una volta sola". In pratica viene eseguito ad ogni tick — ogni volta che il prezzo si sposta di qualsiasi importo, l'EA rielabora la sua logica. Questo modello event-driven è costruito attorno a tre sezioni fondamentali.
I Tre Event Handler
L'Expert Advisor è diviso in tre sezioni principali, ciascuna corrispondente a un evento di MetaTrader:
OnInit()
void OnInit() { ... }
Questo evento si attiva una volta quando l'Expert Advisor viene collegato a un grafico. Usalo per inizializzare le variabili, validare i parametri di input ed eseguire qualsiasi configurazione che deve avvenire solo all'avvio — ad esempio, leggere lo spread corrente del broker o calcolare il numero di decimali del prezzo del simbolo.
OnDeinit()
void OnDeinit(const int reason) { ... }
Questo evento si attiva una volta quando l'Expert Advisor viene rimosso da un grafico — sia manualmente dal trader, sia quando la piattaforma si chiude. Usalo per operazioni di pulizia: chiudere gli ordini pendenti lasciati aperti dall'EA, liberare memoria o scrivere un'ultima voce nel log. Il parametro reason indica il motivo della rimozione dell'EA (rimozione manuale, grafico chiuso, account cambiato, ecc.).
OnTick()
void OnTick() { ... }
Questo è il cuore dell'Expert Advisor. Si attiva ad ogni tick di prezzo — ogni volta che il prezzo bid o ask cambia. Tutta la tua logica di trading va qui: leggere i valori degli indicatori, valutare le condizioni di entrata e uscita, e chiamare OrderSend() quando scatta un segnale.
Il codice che scrivi tra le parentesi graffe { e } di ciascuna sezione è ciò che la macchina eseguirà all'evento corrispondente. L'istruzione return(INIT_SUCCEEDED) alla fine di OnInit() comunica a MetaTrader che l'inizializzazione è avvenuta con successo.
Conclusioni
Le funzioni OnInit(), OnDeinit() e OnTick() sono lo scheletro di ogni Expert Advisor. Capire quando ciascuna viene attivata — e che tipo di logica appartiene a ciascuna — è il punto di partenza essenziale per tutti i trader algoritmici.
Nella Lezione 2, imparerai le due funzioni MQL4 che userai in quasi ogni EA: iMA() per leggere il valore di un indicatore di media mobile, e OrderSend() per eseguire un'operazione.