Introduzione al Linguaggio di Programmazione MQL4

In questa pagina cercherò di spiegarti e mostrarti come puoi padroneggiare, facilmente e rapidamente, i principi necessari per creare un Expert Advisor scrivendo il codice MQL4. Essa è destinata ai principianti e non verranno utilizzati esempi complessi, ma verrà spiegata la struttura base di un Expert Advisor utilizzabile sulla piattaforma di trading (automatico e manuale) MetaTrader 4. Prima ancora di parlare della struttura di un EA, però, spiegherò brevemente alcuni concetti basilari relativi alla programmazione in MQL4.

  1. CONCETTI DI BASE
  2. DICHIARAZIONE DI UNA VARIABILE
  3. STRUTTURA DI UN EXPERT ADVISOR
  4. STRUTTURA GENERALE DEL CODICE DI UN EA
  5. PROGRAMMAZIONE AVANZATA

CONCETTI DI BASE

Innanzitutto ti consiglio di commentare sempre il tuo codice, in quanto è fondamentale spiegarlo per essere in grado in qualunque momento di comprendere la logica che esso contiene.

  • Tick - L'evento principale delle quotazioni nei mercati finanziari è la variazione dei prezzi. Questo è il motivo per cui il tick è un evento importante che fa funzionare i meccanismi di base dei programmi MQL4. La maggior parte dei programmi esegue il codice ogni nuovo tick prodotto o inviato dal broker.
  • Costanti e Variabili - Come suggerisce il termine, una costante è qualcosa di invariante nel tempo, un valore fisso. A differenza della costante, una variabile è un oggetto del codice di programmazione che può modificare il suo valore. È impossibile scrivere un programma senza utilizzare oggetti inalterabili (costanti) e/o oggetti che possono essere modificati durante l'esecuzione del programma (variabili).

DICHIARAZIONE DI UNA VARIABILE

Come possiamo dichiarare una variabile? Come possiamo inizializzarla? Una scelta sbagliata del tipo di una variabile può rallentare il programma o addirittura portare ad un malfunzionamento.

Nel linguaggio MQL4, utilizzato per la MetaTrader 4, ci sono i seguenti tipi di dati:

  • int: per le variabili di tipo INTERO
  • double: per le variabili di tipo REALE
  • bool: per le variabili di tipo LOGICO
  • string: per le variabili di tipo STRINGA
  • color: per le variabili di tipo di COLORE
  • datetime: per le variabili di tipo DATA E ORA.

La dichiarazione è la prima cosa che deve essere fatta con qualsiasi variabile all'interno di un programma. Nella dichiarazione di una variabile, il suo tipo deve sempre essere specificato. L'inizializzazione delle variabili indica l'assegnazione del loro primo valore.Tutte le variabili possono essere inizializzate.
Se non esiste un valore iniziale impostato in modo esplicito, ad una variabile viene assegnato il valore dello zero (0) oppure, se essa è di tipo string, viene inizializzata come una stringa vuota di caratteri. Una volta spiegato ciò, addentriamoci nella struttura del nostro Expert Advisor.

STRUTTURA DI UN EXPERT ADVISOR

Un Expert Advisor (EA) è un programma scritto in MQL4 che specifica le condizioni per eseguire un'operazione a mercato o rimanerne fuori. Fondamentalmente, la struttura di un Expert Advisor può essere formata da un grande numero di blocchi, a seconda dell'obiettivo che si vuole raggiungere ma, per rendere questa cosa facilmente comprensibile, faremo un esempio molto semplice generato in MetaEditor.

L'intero EA può essere diviso visivamente in 4 parti, ognuna delle quali è responsabile di una determinata parte del lavoro da svolgere. All'inizio abbiamo il codice di un Expert Advisor "vuoto", con un tipo di modello che dovrà essere riempito e compilato in seguito.

STRUTTURA GENERALE DEL CODICE DI UN EA

Le prime cinque righe (righe da 1 a 5) rappresentano dei commenti che contengono:

  • il nome dell' EA (nome del file)
  • il nome del produttore
  • il sito web del produttore

Qui si può scrivere tutto ciò che si vuole. Questo testo non verrà mostrato da nessuna parte e può anche essere ignorato. Le informazioni che contiene sono solo dirette al programmatore.

Le linee immediatamente successive rappresentano il Blocco Parametri. Queste informazioni consentono l'inserimento di tutti quei parametri che caratterizzano il funzionamento dell' EA. Si avranno parametri numerici, variabili interne ed esterne, e così via.

Il blocco relativo alla funzione OnInit o Init. Questa funzione non necessita dell'inserimento di alcun parametro ma restituisce un valore di inizializzazione ai parametri dichiarati nel blocco precedente. Se un programma contiene la descrizione della funzione speciale OnInit, questa verrà eseguita al momento dell'avvio dello stesso. Se non c'è una funzione OnInit, nessuna azione verrà eseguita all'avvio del programma.

Il blocco relativo alla funzione OnDeinit o Deinit è quello successivo. Ha un parametro che specifica la causa della chiusura dell' EA. Quando un trader rimuove l' EA da un grafico, il client terminal esegue una volta la funzione speciale OnDeinit. L'esecuzione di questa funzione è necessaria per la corretta conclusione del funzionamento di un EA. Durante il suo funzionamento, ad esempio, un EA può creare oggetti grafici e variabili globali, e questa funzione può contenere codice per eliminare quelli non più necessari. Una volta completata l'esecuzione di OnDeinit, il controllo viene restituito al client terminal. 

Il blocco relativo alla funzione OnTick (che sostituisce la funzione Start) è l'ultimo. Si può dire che questo blocco è il "cervello" dell' EA, dal momento che comprende tutte le funzioni responsabili delle transazioni che verranno eseguite a mercato a seconda delle condizioni in esso specificate.
È inutile definire la funzione OnTick in un indicatore o uno script personalizzato, perché per loro non viene generato l'evento Tick.
L'evento Tick è generato solo per gli Expert Advisor, ma ciò non significa che sia sempre necessario definirlo, in quanto gli EA potrebbero anche funzionare per:

  • eventi legati al tempo, OnTimer (che vengono generati dal timer di sistema solo per Expert Advisors e Indicatori)
  • eventuali cambiamenti sul grafico, OnChartEvent (ad esempio si può impostare che l' EA attivi una determinata operazione al movimento del mouse, ecc..)

PROGRAMMAZIONE AVANZATA

Come detto prima, la struttura di un EA può essere molto più complessa ed essere composta da un gran numero di blocchi, contrariamente a quanto spiegato in questo breve articolo. In ogni caso è sempre utile avere un'infarinatura generale sui concetti di programmazione che consentono di comprendere a fondo in che modo si possano effettivamente trasformare in operazioni automatiche le cose che si vedono sul grafico.
Di certo la struttura del linguaggio MQL4 non è particolarmente complicata, ma necessita pur sempre di buona volontà e studio e, soprattutto, di un minimo di conoscenze nei due ambiti specifici relativi al trading automatico, ovvero:

  • concetti relativi all'analisi tecnica su cui spesso si basano gli Expert Advisor
  • basi fondamentali della programmazione