Analisi · 2026-04-15
MQL5 Tutorial Italiano: Guida Completa per Iniziare a Programmare Expert Advisor
MQL5 tutorial italiano completo: struttura di un EA, funzioni OnInit OnTick OnDeinit, operazioni di trading, indicatori built-in, gestione degli ordini. Esempi di codice commentati in italiano per costruire il primo Expert Advisor su MetaTrader 5.
·
15 Aprile 2026
·
Aggiornato in tempo reale
·
~14 min lettura
1. Cos’È MQL5 e Perché Impararlo
MQL5 (MetaQuotes Language 5) è il linguaggio di programmazione nativo di MetaTrader 5. Sintatticamente è molto simile a C++ ma orientato specificamente al trading: ha funzioni built-in per accedere ai prezzi in tempo reale, aprire e chiudere ordini, calcolare indicatori e gestire il rischio. Oracle v78 è scritto in MQL5 — 8.293 righe di codice che implementano il sistema Ulcer Index a 6 componenti. Imparare MQL5 significa capire come è costruito Oracle v78 e, più in generale, come automatizzare qualsiasi strategia di trading verificabile.
2. Struttura Base di un Expert Advisor MQL5
Un Expert Advisor in MQL5 è un file .mq5 (sorgente) che viene compilato in .ex5 (eseguibile). La struttura minima ha tre funzioni obbligatorie:
struttura_base.mq5MQL5
// Dichiarazione parametri input (visibili nelle Proprietà EA in MT5)
input double RischioPercent = 1.0; // Rischio per trade (%)
input int StopLossPunti = 25; // Stop loss in punti
// OnInit: eseguita UNA VOLTA all’attivazione dell’EA
int OnInit()
{
Print("EA inizializzato. Rischio: ", RischioPercent, "%");
return INIT_SUCCEEDED; // Tutto ok
}
// OnTick: eseguita AD OGNI NUOVO TICK di prezzo
void OnTick()
{
// Qui va la logica principale del trading
double prezzo_corrente = SymbolInfoDouble(_Symbol, SYMBOL_BID);
// ... valuta segnali, apri/chiudi ordini
}
// OnDeinit: eseguita quando l’EA viene rimosso dal grafico
void OnDeinit(const int reason)
{
Print("EA rimosso. Motivo: ", reason);
}
💡 OnInit è il costruttore, OnTick è il loop principale, OnDeinit è il distruttore. Tutto il trading avviene in OnTick o in funzioni chiamate da OnTick.
3. Leggere i Prezzi in Tempo Reale
prezzi.mq5MQL5
void OnTick()
{
// Prezzi correnti
double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
double spread = ask - bid;
// Prezzi storici (candele precedenti)
double close_0 = iClose(_Symbol, PERIOD_H4, 0); // Candela corrente
double close_1 = iClose(_Symbol, PERIOD_H4, 1); // Candela precedente
double high_1 = iHigh (_Symbol, PERIOD_H4, 1);
double low_1 = iLow (_Symbol, PERIOD_H4, 1);
double open_1 = iOpen (_Symbol, PERIOD_H4, 1);
// ATTENZIONE: indice 0 = candela in formazione (non chiusa)
// Per segnali affidabili usa sempre indice 1 (ultima candela chiusa)
// Volume (tick volume — proxy del vero volume su forex)
long volume_1 = iVolume(_Symbol, PERIOD_H4, 1);
}
4. Aprire e Chiudere Ordini
ordini.mq5MQL5
#include <Trade\Trade.mqh>
CTrade trade; // Oggetto per gestire i trade
// Apre un ordine BUY con stop loss e take profit
bool ApriBuy(double lotti, int sl_punti, int tp_punti)
{
double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
double punto = SymbolInfoDouble(_Symbol, SYMBOL_POINT);
double sl = ask - sl_punti * punto;
double tp = ask + tp_punti * punto;
// Arrotonda ai decimali del broker
sl = NormalizeDouble(sl, (int)SymbolInfoInteger(_Symbol, SYMBOL_DIGITS));
tp = NormalizeDouble(tp, (int)SymbolInfoInteger(_Symbol, SYMBOL_DIGITS));
bool ok = trade.Buy(lotti, _Symbol, ask, sl, tp, "Oracle v78 LONG");
if(!ok) Print("Errore apertura BUY: ", trade.ResultRetcode());
return ok;
}
// Chiude tutte le posizioni aperte
void ChiudiTutto()
{
for(int i = PositionsTotal() - 1; i >= 0; i--)
{
ulong ticket = PositionGetTicket(i);
if(PositionGetString(POSITION_SYMBOL) == _Symbol)
trade.PositionClose(ticket);
}
}
5. Calcolare Indicatori Built-in
indicatori.mq5MQL5
// MA200 su Daily
double ma200 = iMA(_Symbol, PERIOD_D1, 200, 0, MODE_SMA, PRICE_CLOSE, 0);
// ATR a 14 periodi su H4
double atr14 = iATR(_Symbol, PERIOD_H4, 14, 1); // Shift=1: ultima candela chiusa
// RSI a 14 periodi su H4
double rsi14 = iRSI(_Symbol, PERIOD_H4, 14, PRICE_CLOSE, 1);
// Bollinger Bands
double bb_upper, bb_lower, bb_middle;
iBands(_Symbol, PERIOD_H4, 20, 0, 2.0, PRICE_CLOSE, bb_upper, bb_middle, bb_lower);
// MACD (valore della linea MACD)
double macd_main = iMACD(_Symbol, PERIOD_H4, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 1);
6. Position Sizing Automatico
position_sizing.mq5MQL5
// Calcola i lotti per rischiare esattamente rischioPercent% del capitale
double CalcolaLotti(double rischioPercent, int sl_punti)
{
double capitale = AccountInfoDouble(ACCOUNT_BALANCE);
double rischio_usd = capitale * rischioPercent / 100.0;
double tick_value = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
double tick_size = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE);
double valore_punto = tick_value / tick_size;
double lotti = rischio_usd / (sl_punti * valore_punto);
// Arrotonda al lotto minimo
double lotto_step = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);
lotti = MathFloor(lotti / lotto_step) * lotto_step;
return MathMax(lotti, SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN));
}
7. GlobalVariables: Comunicazione tra EA
Le GlobalVariables sono variabili condivise tra tutti gli EA attivi su MT5. Oracle v78 le usa per la comunicazione tra il componente UI principale e lo ZENITH EXECUTOR. Esempio:
global_variables.mq5MQL5
// EA Mittente (UI Oracle) scrive la dimensione del lotto calcolata
GlobalVariableSet("Oracle_Lotti", 0.05);
GlobalVariableSet("Oracle_Segnale", 1.0); // 1=BUY, -1=SELL, 0=nessuno
// EA Ricevente (Executor) legge e agisce
double lotti = GlobalVariableGet("Oracle_Lotti");
double segnale = GlobalVariableGet("Oracle_Segnale");
if(segnale == 1.0 && lotti > 0)
{
// Mostra popup ENTRA all’utente
// Apri BUY con conferma
}
8. Compilazione e Debug
Per compilare un EA in MT5: apri MetaEditor (tasto F4 da MT5), apri il file .mq5, premi F7 o il pulsante “Compila”. Gli errori di compilazione appaiono nel tab “Errors” in basso. Per il debug in tempo reale usa Print() — i messaggi appaiono nel tab “Journal” del Terminale MT5. Per debug avanzato usa il Debugger integrato (breakpoint, step-by-step) accessibile da MetaEditor.
9. Risorse per Approfondire MQL5
La documentazione ufficiale MQL5 è su docs.mql5.com — completa, in italiano parzialmente, con esempi per ogni funzione. Il forum MQL5 Community ha migliaia di thread su problemi specifici. Per costruire un EA sistematico con fondamento statistico, il libro di Manuel Trotta “Fare Trading con Excel” (Hoepli) insegna la logica statistica che poi si implementa in MQL5.
Domande Frequenti
MQL5 è difficile da imparare? ▼
Se conosci già un linguaggio di programmazione (anche Excel VBA o Python), MQL5 richiede 2–4 settimane per produrre un primo EA funzionante. La sintassi simile al C++ è inizialmente più formale rispetto a Python, ma le funzioni di trading built-in semplificano enormemente la gestione degli ordini. La difficoltà principale non è il linguaggio — è avere una strategia statistica solida da implementare.
Qual è la differenza tra MQL4 e MQL5? ▼
MQL4 e MQL5 non sono compatibili. MQL5 è più potente: supporta programmazione orientata agli oggetti, threading, più funzioni built-in, GlobalVariables avanzate. Gli EA scritti per MQL4 non compilano in MQL5 e viceversa. Oracle v78 usa MQL5 specificamente per le GlobalVariables inter-EA e per la velocità del tester multi-thread.
Posso usare MQL5 per automatizzare Oracle v78? ▼
Oracle v78 è già scritto in MQL5 — è un Expert Advisor completamente automatico. Non hai bisogno di scrivere codice per usarlo: installi il file .ex5 su MT5, inserisci la tua chiave di licenza e Oracle opera autonomamente. Il codice MQL5 è utile se vuoi capire come funziona internamente o se vuoi costruire le tue strategie.
Implicazioni Pratiche: dal Concetto al Sistema Operativo
La distanza tra la teoria statistica e il trading operativo è colmata solo dall’implementazione sistematica. Un trader può conoscere perfettamente la definizione di Profit Factor, Ulcer Index, edge statistico e mean reversion — ma se queste conoscenze non si traducono in regole operative codificate e rispettate meccanicamente, rimangono concetti accademici senza impatto sulla performance.
Oracle v78 rappresenta il punto di arrivo di questo processo: anni di ricerca statistica (in Python su dati XAUUSD H4), validazione su campioni out-of-sample separati, implementazione in MQL5 (8.293 righe di codice), e infine esecuzione meccanica su 65.587 trade reali senza deroghe alle regole. Il sistema ha una risposta precisa a ogni condizione di mercato: score sopra soglia + Ulcer Index > 80° percentile = apri il trade con 1% di rischio. Score sotto soglia = non operare. Non c’è spazio per l’interpretazione soggettiva.
Questo approccio sistematico ha un costo: la flessibilità di adattamento in tempo reale è zero. Oracle v78 non “sente” che il mercato è cambiato e non modifica il suo comportamento finché i parametri non vengono aggiornati attraverso un processo formale di ri-ottimizzazione. Questo è un vantaggio, non uno svantaggio: i trader discrezionali che “adattano” il loro sistema in tempo reale stanno quasi sempre razionalizzando bias comportamentali, non rispondendo a cambiamenti strutturali del mercato.
Il percorso consigliato per chi vuole passare dal trading discrezionale al trading sistematico: inizia usando Oracle v78 come strumento educativo — osserva come il sistema identifica le condizioni di ingresso, come gestisce le posizioni, come rispetta sistematicamente lo stop loss e il take profit. Poi, se ti interessa costruire il tuo sistema, applica gli stessi principi statistici (edge misurabile, validazione out-of-sample, position sizing fisso) al tuo strumento e timeframe preferiti. La differenza tra un trader sistematico e uno discrezionale non è nel mercato che tratta — è nel processo decisionale che usa.
La live gratuita su oracle.mtinvestments.it mostra Oracle v78 in operazione su MetaTrader 5 in tempo reale. Non è una presentazione: è il conto MT5 live con il sistema attivo, i trade aperti, lo storico completo e tutte le metriche visibili. È l’unico modo per verificare in modo indipendente quello che questo articolo descrive.
Conclusioni: la Statistica Come Bussola nel Mercato
I mercati finanziari sono uno dei pochi ambienti in cui intuizioni, esperienze passate e capacità analitiche individuali sono costantemente sfidate dall’incertezza fondamentale dei prezzi futuri. Nessun trader — sistemático o discrezionale — può eliminare questa incertezza. Ma è possibile costruire un processo decisionale che la gestisca in modo statisticamente coerente, che riduca i bias comportamentali e che crei un edge misurabile nel lungo periodo.
Oracle v78 con 65.587 trade reali non è la prova che il futuro sarà identico al passato. È la prova che un sistema con fondamento statistico solido, implementato correttamente e rispettato meccanicamente, può generare rendimenti positivi aggiustati per il rischio su un orizzonte temporale sufficientemente lungo. Il CAGR 14,3% con MDD 13,1% su 19 anni di dati reali è un risultato che si ottiene non per fortuna, ma per la combinazione di edge statistico genuino e disciplina esecutiva assoluta.
Il passo successivo è verificare questi dati in prima persona. La live gratuita su oracle.mtinvestments.it è aperta: nessun costo, nessun deposito richiesto, solo il sistema in azione su MT5 in tempo reale. Scrivi “ORACLE” su WhatsApp a Rossella (+39 380 635 8296) per ricevere la guida completa e iniziare il percorso di verifica.
Considerazioni Finali sul Trading Sistematico
Il trading sistematico richiede un cambiamento di prospettiva fondamentale: non si tratta di trovare il “segreto del mercato” o di avere intuizioni brillanti. Si tratta di costruire un processo statisticamente robusto, implementarlo in modo rigoroso e mantenerlo operativo con disciplina assoluta nel lungo periodo. Questi concetti — edge statistico, EV positivo, Profit Factor, win rate condizionato, position sizing fisso — non sono sofisticati nel senso di “difficili da capire”. Sono sofisticati nel senso di “richiedono di abbandonare le intuizioni naturali su come funzionano i mercati”.
L’intuizione naturale dice che bisogna avere ragione la maggior parte delle volte. La statistica dice che basta avere ragione abbastanza spesso rispetto al rapporto rischio/rendimento. L’intuizione naturale dice che più si analizza, meglio si capisce il mercato. La statistica dice che più si analizza senza un framework ipotetico, più si è esposti al data-snooping bias. L’intuizione naturale dice che i pattern tecnici visibili sul grafico sono significativi. La statistica dice che la maggior parte dei pattern tecnici non supera un test statistico formale su un campione adeguato.
Oracle v78 è il risultato di 19 anni di lavoro che ha progressivamente sostituito l’intuizione con la statistica: dall’analisi dell’Ulcer Index di Peter Martin (1987), alla scoperta del gate condizionale su XAUUSD H4, all’implementazione in MQL5, fino ai 65.587 trade reali verificabili. Non è un sistema perfetto — può avere drawdown del 13%, può avere periodi di lateralità di settimane, può perdere trade in sequenza. Ma ha edge statistico documentato, e con edge statistico positivo e gestione del rischio corretta, il lungo periodo è sempre favorevole.
Per chi vuole iniziare questo percorso: entra nella live gratuita su oracle.mtinvestments.it. Non per comprare qualcosa, ma per vedere con i propri occhi come si presenta un sistema con dati reali e metriche trasparenti. Confrontalo con ciò che il mercato degli “educatori trading” propone normalmente — segnali senza statistiche, rendimenti senza drawdown, promesse senza dati verificabili. La differenza sarà immediatamente evidente.
Considerazioni Finali sul Trading Sistematico
Il trading sistematico richiede un cambiamento di prospettiva fondamentale: non si tratta di trovare il “segreto del mercato” o di avere intuizioni brillanti. Si tratta di costruire un processo statisticamente robusto, implementarlo in modo rigoroso e mantenerlo operativo con disciplina assoluta nel lungo periodo. Questi concetti — edge statistico, EV positivo, Profit Factor, win rate condizionato, position sizing fisso — non sono sofisticati nel senso di “difficili da capire”. Sono sofisticati nel senso di “richiedono di abbandonare le intuizioni naturali su come funzionano i mercati”.
L’intuizione naturale dice che bisogna avere ragione la maggior parte delle volte. La statistica dice che basta avere ragione abbastanza spesso rispetto al rapporto rischio/rendimento. L’intuizione naturale dice che più si analizza, meglio si capisce il mercato. La statistica dice che più si analizza senza un framework ipotetico, più si è esposti al data-snooping bias. L’intuizione naturale dice che i pattern tecnici visibili sul grafico sono significativi. La statistica dice che la maggior parte dei pattern tecnici non supera un test statistico formale su un campione adeguato.
Oracle v78 è il risultato di 19 anni di lavoro che ha progressivamente sostituito l’intuizione con la statistica: dall’analisi dell’Ulcer Index di Peter Martin (1987), alla scoperta del gate condizionale su XAUUSD H4, all’implementazione in MQL5, fino ai 65.587 trade reali verificabili. Non è un sistema perfetto — può avere drawdown del 13%, può avere periodi di lateralità di settimane, può perdere trade in sequenza. Ma ha edge statistico documentato, e con edge statistico positivo e gestione del rischio corretta, il lungo periodo è sempre favorevole.
Per chi vuole iniziare questo percorso: entra nella live gratuita su oracle.mtinvestments.it. Non per comprare qualcosa, ma per vedere con i propri occhi come si presenta un sistema con dati reali e metriche trasparenti. Confrontalo con ciò che il mercato degli “educatori trading” propone normalmente — segnali senza statistiche, rendimenti senza drawdown, promesse senza dati verificabili. La differenza sarà immediatamente evidente.
Applicazione Avanzata: Combinare Teoria e Pratica Operativa
Capire i meccanismi statistici del trading è necessario ma non sufficiente. Il gap tra la teoria e la performance reale si colma attraverso l’implementazione sistematica e il monitoraggio continuo delle metriche. I concetti discussi in questo articolo — che si tratti di MQL5, di statistica applicata o di finanza comportamentale — sono tutti strumenti che Oracle v78 integra in un sistema operativo coerente: 8.293 righe di codice MQL5 che implementano 19 anni di ricerca statistica su XAUUSD H4.
I 65.587 trade reali di Oracle v78 sono il risultato di questo processo. Ogni trade è un test del sistema in condizioni reali di mercato: con spread reali, con slippage reale, con le interruzioni di connessione e i gap del weekend inclusi. Non c’è modo di falsificare un report MT5 di questa dimensione senza che le anomalie siano immediatamente visibili a chiunque esamini i dati. Questa è la vera verifica di un sistema di trading: non il backtest, non i testimonial, non le slide — il report MT5 con 36.000+ operazioni reali datate e verificabili.
La live gratuita su oracle.mtinvestments.it mostra questi dati in tempo reale. Scrivi “ORACLE” a Rossella su WhatsApp per ricevere la guida completa al sistema e iniziare il tuo percorso di verifica indipendente. Non esistono sistemi perfetti: esistono sistemi con dati reali e sistemi senza. Oracle v78 appartiene alla prima categoria.
Per chi vuole approfondire ulteriormente gli argomenti trattati in questo articolo, il blog di MTInvestments ha oltre 95 articoli su trading sistematico, statistica applicata ai mercati, MQL5 e finanza comportamentale. Ogni articolo è costruito sullo stesso principio: dati verificabili prima delle opinioni, statistica prima dell’analisi tecnica, sistema prima del discrezionale. Il percorso da seguire è il blog → la live gratuita → il Manuale da 27 € → l'Indicatore + EA. In questo ordine: prima capisci, poi vedi, poi decidi.
Applicazione Avanzata: Combinare Teoria e Pratica Operativa
Capire i meccanismi statistici del trading è necessario ma non sufficiente. Il gap tra la teoria e la performance reale si colma attraverso l’implementazione sistematica e il monitoraggio continuo delle metriche. I concetti discussi in questo articolo — che si tratti di MQL5, di statistica applicata o di finanza comportamentale — sono tutti strumenti che Oracle v78 integra in un sistema operativo coerente: 8.293 righe di codice MQL5 che implementano 19 anni di ricerca statistica su XAUUSD H4.
I 65.587 trade reali di Oracle v78 sono il risultato di questo processo. Ogni trade è un test del sistema in condizioni reali di mercato: con spread reali, con slippage reale, con le interruzioni di connessione e i gap del weekend inclusi. Non c’è modo di falsificare un report MT5 di questa dimensione senza che le anomalie siano immediatamente visibili a chiunque esamini i dati. Questa è la vera verifica di un sistema di trading: non il backtest, non i testimonial, non le slide — il report MT5 con 36.000+ operazioni reali datate e verificabili.
La live gratuita su oracle.mtinvestments.it mostra questi dati in tempo reale. Scrivi “ORACLE” a Rossella su WhatsApp per ricevere la guida completa al sistema e iniziare il tuo percorso di verifica indipendente. Non esistono sistemi perfetti: esistono sistemi con dati reali e sistemi senza. Oracle v78 appartiene alla prima categoria.
Per chi vuole approfondire ulteriormente gli argomenti trattati in questo articolo, il blog di MTInvestments ha oltre 95 articoli su trading sistematico, statistica applicata ai mercati, MQL5 e finanza comportamentale. Ogni articolo è costruito sullo stesso principio: dati verificabili prima delle opinioni, statistica prima dell’analisi tecnica, sistema prima del discrezionale. Il percorso da seguire è il blog → la live gratuita → il Manuale da 27 € → l'Indicatore + EA. In questo ordine: prima capisci, poi vedi, poi decidi.
⚡ Oracle v78 — 65.587 trade reali MT5
Dalla Teoria
ai 65.587 Trade Reali.
Oracle v78 applica i principi descritti in questo articolo su XAUUSD H4 con risultati verificabili: WR 42,1%, PF 1,44, CAGR 14,3%, MDD 13,1%. La live gratuita mostra il sistema in azione — schermata MT5 live.
65.587 trade reali MT5
WR 42,1% — PF 1,44
CAGR 14,3% — MDD 13,1%
Indicatore + EA €4.997
ENTRA NELLA LIVE GRATUITA →
Scrivi “SERIO” a Rossella su WhatsApp
Nessun costo. Risposta entro 2 ore. P.IVA IT14349331000