Programmazione Mql4 | il linguaggio di programmazione per Metatrader 4

cos'è la programmazione mql4

29 Giugno 2018

Ultimo Aggiornamento: 27 Ottobre 2023

MetaTrader 4, spesso abbreviato come MT4, è una delle piattaforme di trading più diffuse al mondo. Una delle ragioni del suo successo è la capacità di personalizzazione, in gran parte dovuta al suo linguaggio di programmazione interno, MQL4.

Questo linguaggio permette agli utenti di creare strumenti personalizzati, migliorare le funzionalità esistenti e ottimizzare la loro esperienza di trading. In questo articolo, esamineremo le basi della programmazione MQL4 e la sua importanza per gli utenti di MT4.

Cos’è la programmazione mql4

La programmazione mql4 (MetaQuotes Language 4) è un linguaggio di programmazione sviluppato da MetaQuotes Software Corp. per la piattaforma di trading MetaTrader 4 (MT4).

Esso è un linguaggio utilizzato per lo sviluppo di strategie di trading, che consentono di creare trading system (expert advisor), indicatori tecnici e script da utilizzare sulla piattaforma di trading MetaTrader 4.

Con il MetaQuotes Language 4 possiamo scrivere la nostra strategia di trading ed integrarla perfettamente alla piattaforma MetaTrader4.

L’obiettivo principale della programmazione mql4 è quindi l’automazione e la personalizzazione del trading, oltre che la facilitazione dell’analisi operativa. 

Mql4 è un linguaggio molto potente ma allo stesso tempo semplice, flessibile e di facile comprensione, che consente anche ai meno esperti in materia di riuscire a creare in poco tempo una semplice strategia di trading.

Come sviluppo e scrittura è molto simile alla programmazione C o C++, quindi chi ha già dimestichezza con queste tipologie di linguaggi sarà sicuramente avvantaggiato.

 

Cosa puoi creare con la programmazione mql4

Con il linguaggio mql4 è possibile sviluppare:

  • Trading System (Expert Advisor): sono programmi che permettono di automatizzare completamente la vostra strategia di trading. Qualsiasi strategia, semplice o complessa che sia, può essere gestita attraverso un trading system.
  • Indicatori: sono degli strumenti utili per analizzare il mercato sia per chi fa trading in modo discrezionale, sia per chi fa trading in maniera sistematica. Molte strategie di trading automatizzato si basano infatti sul movimento o sull’incrocio di uno o più indicatori. La piattaforma metatrader4 possiede già al suo interno degli indicatori standard, ma attraverso la programmazione mql4 possiamo personalizzarli oppure crearne di nuovi.
  • Script: sono dei piccoli programmi che consentono l’esecuzioni di azioni molto semplici, come ad esempio chiudere tutti gli ordini aperti. A differenza dagli EA , gli scripts vengono eseguiti una volta sola (su richiesta dell’utente); sono quindi degli strumenti molto utili per coloro che operano sui mercati in maniera discrezionale, perché possono automatizzare alcune parti della strategia operativa.
  • Librerie: Queste sono collezioni di funzioni personalizzate e tipi di dati che possono essere inclusi in altri programmi MQL4.

 

Le basi per iniziare a programmare in mql4

Per iniziare a programmare in mql4 dovrai aprire il programma MetaEditor (un’icona di un libro), che normalmente si trova nella barra degli strumenti della tua MT4.

Come abbiamo già detto, MQL4 è simile al linguaggio C in termini di sintassi, quindi come prima cosa dovrai iniziare a familiarizza con le seguenti componenti:

  • Variabili: Come int, double, string, ecc.
  • Operatori: +, -, *, /, %, ecc.
  • Strutture di controllo: if, else, for, while, switch, ecc.
  • Funzioni: Blocchi di codice riutilizzabili.

MetaEditor include una documentazione integrata per MQL4. Consulta regolarmente la documentazione mentre impari, poiché è una risorsa inestimabile.

meta editor: programmare in mql4

Schermata del MetaEditor all’interno della piattaforma Mt4.

 

Conoscere le funzioni predefinite

Devi sapere che MQL4 offre una vasta gamma di funzioni predefinite per eseguire operazioni come aprire e chiudere ordini, ottenere informazioni sugli account e recuperare dati storici.

Alcune funzioni comuni includono OrderSend(), OrderClose(), iMA(), e iRSI().

 

Struttura del codice

  • Proprietà: Inizia definendo le proprietà del tuo programma con il comando #property.
  • Variabili Globali: Dichiarazione di variabili esterne (input dall’utente) e variabili globali.
  • OnInit: Funzione eseguita all’avvio dell’EA o dell’indicatore.
  • OnDeinit: Funzione eseguita quando l’EA o l’indicatore viene rimosso.
  • OnTick (per EA): Funzione eseguita ad ogni nuovo tick di prezzo.
  • OnCalculate (per indicatori): Funzione eseguita ad ogni nuovo bar o tick.

 

Implementazione della Logica:

  • Scrivi la logica di trading o calcolo all’interno delle funzioni appropriate.
  • Utilizza funzioni predefinite di MQL4 (come OrderSend, iMA, ecc.) per agevolare il processo.

 

Programmare in mql4: creazione del Primo Expert Advisor (EA):

Una volta che ti senti a tuo agio con l’ambiente di lavoro ed hai preso dimestichezza con la struttura del codice e le funzioni predefinite prova a creare un EA semplice. Ricorda di strutturarlo correttamente, utilizzando funzioni come OnInit(), OnDeinit(), e OnTick().

Qui di seguito troverai un esempio di un EA che acquista quando la media mobile semplice (SMA) di breve termine incrocia al di sopra una SMA a lungo termine e chiude la posizione quando accade l’opposto.

#property strict

// Periodi delle medie mobili
int FastMAPeriod = 5;
int SlowMAPeriod = 20;

// Buffer per valori delle medie mobili
double FastMABuffer[];
double SlowMABuffer[];

int OnInit()
{
// Inizializzazione dei buffer delle medie mobili
ArraySetAsSeries(FastMABuffer, true);
ArraySetAsSeries(SlowMABuffer, true);

// Indicatori
int fastMAHandle = iMA(Symbol(), 0, FastMAPeriod, 0, MODE_SMA, PRICE_CLOSE);
int slowMAHandle = iMA(Symbol(), 0, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE);

// Copia dei dati degli indicatori nei buffer
CopyBuffer(fastMAHandle, 0, 0, Bars, FastMABuffer);
CopyBuffer(slowMAHandle, 0, 0, Bars, SlowMABuffer);

return(INIT_SUCCEEDED);
}

void OnTick()
{
// Aggiorna i buffer
double currentFastMA = iMA(Symbol(), 0, FastMAPeriod, 0, MODE_SMA, PRICE_CLOSE);
double currentSlowMA = iMA(Symbol(), 0, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE);

double prevFastMA = FastMABuffer[1];
double prevSlowMA = SlowMABuffer[1];

if (currentFastMA > currentSlowMA && prevFastMA <= prevSlowMA)
{
// Incrocio verso l’alto: Acquisto
if(OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, 0, “BuyOrder”, 0, 0, Green) > 0)
{
Print(“Posizione BUY aperta a: “, Ask);
}
}
else if (currentFastMA < currentSlowMA && prevFastMA >= prevSlowMA)
{
// Incrocio verso il basso: Vendita
for(int i = OrdersTotal()-1; i >= 0; i–)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() == OP_BUY && OrderSymbol() == Symbol())
{
if(OrderClose(OrderTicket(), OrderLots(), Bid, 3, Red))
{
Print(“Posizione BUY chiusa a: “, Bid);
}
}
}
}
}

//+——————————————————————+

Revisione e Debugging:

  • Rivedi il tuo codice per eventuali errori logici o problemi di performance.
  • Utilizza il debugger di MetaEditor (se disponibile) o inserisci comandi di stampa (Print()) per tracciare le operazioni e identificare problemi.

Vuoi automatizzare la tua strategia ma non sai utilizzare la programmazione mql4 ?

Da oltre dieci anni noi di TradingFacile forniamo i migliori algoritmi di trading per operare sui mercati finanziari in modalità completamente automatica, massimizzando efficienza e profittabilità.

Se desideri automatizzare la tua strategia di trading o avere dei consigli su come ottimizzarla, contattaci a info@tradingfacile.net o iscriviti al sito compilando l’apposito form e riceverai al più presto assistenza dai nostri esperti.

 

RESTA AGGIORNATO:

Se avete trovato interessante questo articolo, vi invitiamo a condividerlo attraverso i vostri canali social e a seguire TradingFacile su piattaforme come Google News, Facebook e Youtube. Non esitate a esprimere le vostre opinioni o condividere le vostre esperienze attraverso i commenti sotto i nostri articoli.

Per rimanere sempre informati sulle ultime novità pubblicate sul nostro sito, potete attivare le notifiche oppure iscrivervi al Canale Telegram di TradingFacile.