MQL4
- MQL4: Guida Introduttiva per Principianti
MQL4 (MetaQuotes Language 4) è un linguaggio di programmazione di alto livello sviluppato da MetaQuotes Software Corp., specificamente progettato per lo sviluppo di indicatori tecnici, script, e consulenti esperti (Expert Advisors - EA) per la piattaforma di trading MetaTrader 4 (MT4). MT4 è una delle piattaforme di trading più popolari al mondo, utilizzata per il trading di Forex, CFD, e futures. Questo articolo fornirà una guida completa per principianti a MQL4, coprendo la sua sintassi, le sue applicazioni e le risorse disponibili per l'apprendimento.
Cos'è MQL4 e a cosa serve?
MQL4 è un linguaggio procedurale basato su C++, ma semplificato per adattarsi alle esigenze specifiche del trading algoritmico. La sua funzione principale è automatizzare le strategie di trading e analizzare i mercati finanziari. Permette ai trader di:
- **Creare indicatori tecnici personalizzati:** Implementare formule matematiche e algoritmi per visualizzare informazioni sul grafico dei prezzi, come medie mobili, RSI, MACD, Bande di Bollinger, ecc.
- **Sviluppare script:** Eseguire azioni una tantum, come chiudere tutte le posizioni aperte, calcolare il rischio, o esportare dati.
- **Costruire consulenti esperti (EA):** Automatizzare completamente le strategie di trading, gestendo l'apertura, la chiusura e la modifica degli ordini in base a regole predefinite. Gli EA possono operare 24 ore su 24, 7 giorni su 7, senza intervento umano (anche se è *sempre* consigliabile una supervisione).
- **Eseguire Backtesting:** Testare le performance di una strategia di trading su dati storici per valutarne la redditività e ottimizzare i parametri.
Ambiente di Sviluppo: MetaEditor
L'ambiente di sviluppo integrato (IDE) per MQL4 è chiamato MetaEditor. Si accede direttamente dalla piattaforma MetaTrader 4 tramite il pulsante "MetaEditor" nella barra degli strumenti. MetaEditor offre diverse funzionalità utili:
- **Editor di codice:** Con evidenziazione della sintassi, completamento automatico del codice e controllo degli errori.
- **Debugger:** Permette di eseguire il codice passo dopo passo per identificare e correggere bug.
- **Compilatore:** Converte il codice MQL4 in file eseguibili (.ex4) che possono essere caricati e utilizzati in MT4.
- **Help file:** Una documentazione completa del linguaggio MQL4, inclusi tutti i comandi, le funzioni e le variabili predefinite.
- **Navigator:** Permette di gestire i file di programma (indicatori, script, EA) e di aggiungerli ai grafici.
Sintassi di Base di MQL4
MQL4 condivide molte somiglianze con il C++ e altri linguaggi di programmazione procedurali. Ecco alcuni elementi fondamentali della sua sintassi:
- **Variabili:** Dichiarate con un tipo di dato (es. `int`, `double`, `string`, `bool`).
* `int`: Numeri interi (es. 10, -5, 0) * `double`: Numeri a virgola mobile (es. 3.14, -2.5, 0.0) * `string`: Testo (es. "Ciao mondo!", "EURUSD") * `bool`: Valori booleani (true o false)
- **Operatori:** Per eseguire operazioni matematiche, logiche e di confronto. (es. `+`, `-`, `*`, `/`, `==`, `!=`, `>`, `<`, `&&`, `||`).
- **Funzioni:** Blocchi di codice riutilizzabili che eseguono un compito specifico.
- **Condizioni:** Istruzioni `if`, `else if`, `else` per eseguire codice in base a determinate condizioni.
- **Cicli:** Istruzioni `for`, `while`, `do-while` per ripetere un blocco di codice più volte.
- **Commenti:** Utilizzati per spiegare il codice. I commenti a riga singola iniziano con `//`, mentre i commenti a più righe sono racchiusi tra `/*` e `*/`.
Struttura di un Programma MQL4
Un programma MQL4 (indicatori, script, EA) ha una struttura di base simile:
```mql4 //+------------------------------------------------------------------+ //| NomeProgramma.mq4 | //| Copyright 2023, Il Tuo Nome | //| https://tuosito.com | //+------------------------------------------------------------------+
- property copyright "Copyright 2023, Il Tuo Nome"
- property link "https://tuosito.com"
- property version "1.00"
//+------------------------------------------------------------------+ //| Funzione di inizializzazione (solo per indicatori ed EA) | //+------------------------------------------------------------------+ int OnInit()
{ // Codice di inizializzazione return(INIT_SUCCEEDED); }
//+------------------------------------------------------------------+ //| Funzione principale (per script) o funzione di tick (per EA) | //+------------------------------------------------------------------+ void OnStart() //Per Script
{ //Codice dello script }
void OnTick() //Per Expert Advisor
{ //Codice dell'Expert Advisor eseguito ad ogni tick }
//+------------------------------------------------------------------+ //| Funzione di deinizializzazione (solo per indicatori ed EA) | //+------------------------------------------------------------------+ void OnDeinit(const int reason)
{ // Codice di deinizializzazione }
```
- **Proprietà:** Definiscono informazioni sul programma, come copyright, link e versione.
- **OnInit():** Funzione chiamata all'inizializzazione del programma (indicatori ed EA).
- **OnStart():** Funzione chiamata all'esecuzione di uno script.
- **OnTick():** Funzione chiamata ad ogni nuovo tick di prezzo (EA). È il cuore di un Expert Advisor.
- **OnDeinit():** Funzione chiamata alla deinizializzazione del programma (indicatori ed EA).
Tipi di Programmi MQL4
- **Indicatori:** Visualizzano informazioni sul grafico dei prezzi. Devono avere le funzioni `OnInit()`, `OnCalculate()` (dove avviene il calcolo dei valori dell'indicatore) e `OnDeinit()`.
- **Script:** Eseguono azioni una tantum. Devono avere la funzione `OnStart()`.
- **Expert Advisors (EA):** Automatizzano le strategie di trading. Devono avere le funzioni `OnInit()`, `OnTick()` e `OnDeinit()`.
Funzioni Predefinite Utili
MQL4 fornisce una vasta gamma di funzioni predefinite per accedere ai dati di mercato, gestire gli ordini e eseguire calcoli. Alcune delle più utili includono:
- `iClose(Symbol(), Period(), Shift)`: Restituisce il prezzo di chiusura di una candlestick.
- `iHigh(Symbol(), Period(), Shift)`: Restituisce il prezzo massimo di una candlestick.
- `iLow(Symbol(), Period(), Shift)`: Restituisce il prezzo minimo di una candlestick.
- `iOpen(Symbol(), Period(), Shift)`: Restituisce il prezzo di apertura di una candlestick.
- `iTime(Symbol(), Period(), Shift)`: Restituisce il tempo di una candlestick.
- `OrderSend(Symbol(), OrderType(), Volume(), Price(), Slippage(), StopLoss(), TakeProfit(), Comment(), MagicNumber(), Expiration(), ArrowColor())`: Invia un ordine al mercato.
- `OrderClose(OrderTicket(), Volume(), Price(), Slippage(), Color())`: Chiude un ordine esistente.
- `AccountBalance()`: Restituisce il saldo del conto.
- `MarketInfo(Symbol(), MODE_TICKVALUE)`: Restituisce il valore del tick per un determinato simbolo.
Esempio Semplice: Indicatore Media Mobile
Ecco un esempio di codice MQL4 per creare un semplice indicatore di media mobile:
```mql4
- property copyright "Copyright 2023, Il Tuo Nome"
- property link "https://tuosito.com"
extern int MAPeriod = 20; // Periodo della media mobile
double MA[];
int OnInit()
{ ArrayResize(MA, 0); return(INIT_SUCCEEDED); }
int OnCalculate(const int rates_total,
const int prev_calculated, const int begin, const double &price[]) { int limit; double sum; double ma;
limit = MathMin(rates_total, MAPeriod);
sum = 0.0; for(int i = 0; i < limit; i++) { sum += price[i]; }
ma = sum / limit;
ArrayResize(MA, rates_total); for(int i = 0; i < rates_total; i++) { MA[i] = ma; }
return(rates_total); }
```
Questo indicatore calcola una media mobile semplice (SMA) con un periodo definito dall'utente (MAPeriod). Il risultato viene memorizzato nell'array `MA` e visualizzato sul grafico.
Esempio Semplice: Script per Chiudere Tutte le Posizioni
Ecco un esempio di codice MQL4 per creare uno script che chiude tutte le posizioni aperte:
```mql4
- property copyright "Copyright 2023, Il Tuo Nome"
- property link "https://tuosito.com"
void OnStart()
{ int total = OrdersTotal(); for(int i = 0; i < total; i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == 0) //Solo posizioni sul simbolo corrente e senza Magic Number { if(OrderType() == OP_BUY) { OrderClose(OrderTicket(), OrderLots(), Bid, 3, clrRed); } else if(OrderType() == OP_SELL) { OrderClose(OrderTicket(), OrderLots(), Ask, 3, clrGreen); } } } } Print("Tutte le posizioni chiuse."); }
```
Questo script itera attraverso tutte le posizioni aperte e chiude quelle sul simbolo corrente che non hanno un magic number associato.
Risorse per l'Apprendimento
- **Documentazione Ufficiale MQL4:** [1](https://www.mql5.com/en/docs)
- **MQL5 Community:** [2](https://www.mql5.com/en) (Forum, articoli, indicatori e EA gratuiti)
- **Babypips:** [3](https://www.babypips.com/) (Tutorial di base sul Forex e concetti di trading)
- **YouTube:** Cercare tutorial su MQL4 per trovare guide video.
Considerazioni Finali
MQL4 è un potente linguaggio di programmazione che può migliorare significativamente le capacità di trading di un individuo. Richiede tempo e impegno per essere appreso, ma i benefici in termini di automazione, analisi e backtesting possono essere notevoli. Inizia con esempi semplici, sperimenta e utilizza le risorse disponibili per costruire le tue strategie di trading automatizzate. Ricorda sempre di testare accuratamente qualsiasi EA o indicatore prima di utilizzarlo con denaro reale.
Analisi Tecnica Indicatori Tecnici Expert Advisor Backtesting Forex CFD Futures MetaTrader 4 MQL5 Trading Algoritmico Script MQL4 Media Mobile RSI (Relative Strength Index) MACD (Moving Average Convergence Divergence) Bande di Bollinger Fibonacci Retracements Ichimoku Cloud Volume Trading Order Management Risk Management Money Management Candlestick Patterns Support and Resistance Trend Lines Chart Patterns Volume Profile Market Depth
Piattaforme di trading futures consigliate
Piattaforma | Caratteristiche dei futures | Registrazione |
---|---|---|
Binance Futures | Leva fino a 125x, contratti USDⓈ-M | Registrati ora |
Bybit Futures | Contratti perpetui inversi | Inizia a fare trading |
BingX Futures | Trading copia | Unisciti a BingX |
Bitget Futures | Contratti garantiti con USDT | Apri un conto |
BitMEX | Piattaforma di criptovalute, leva fino a 100x | BitMEX |
Unisciti alla nostra community
Iscriviti al canale Telegram @strategybin per ulteriori informazioni. Migliori piattaforme di guadagno – registrati ora.
Partecipa alla nostra community
Iscriviti al canale Telegram @cryptofuturestrading per analisi, segnali gratuiti e altro!