Capitolo 4 – Come Programmare Expert Advisor con MQL4

0
3942

In questo articolo cercherò di spiegarti e mostrarti come puoi padroneggiare, facilmente e rapidamente, i principi necessari per creare Expert Advisor scrivendo il codice MQL4. È destinato ai principianti e non verranno utilizzati esempi complessi, bensì verrà spiegata la struttura base di un Expert Advisor utilizzabile sulla piattaforma di trading MetaTrader.

Prima ancora di parlare di struttura però, spiego brevemente alcuni concetti basilari relativi alla programmazione in MQL4 ed in genere.

Per consultare l’indice della guida completa, visita l’introduzione alla guida sugli EA di MT4.

Concetti di base

Innanzitutto non dimenticare di commentare il tuo codice, in quanto è essenziale spiegare il codice ed essere in grado in qualunque momento di seguire 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 continuo, un valore fisso. A differenza della costante, una variabile è un oggetto del codice di programmazione che può modificare il suo contenuto. È impossibile scrivere un programma senza utilizzare oggetti inalterabili (costanti) e / o oggetti che possono essere modificati durante l’esecuzione del programma (variabili).

Come dichiarare 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 a un malfunzionamento.

In metatrader ci sono i seguenti tipi di dati:

  • int: per dichiarare le variabili di tipo intero
  • double: per dichiarare numeri reali
  • bool: per dichiarare valori logici
  • string: valori di tipo stringa
  • color: valori del tipo di colore
  • datetime: valori di data e ora.

La Dichiarazione delle variabili è 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 di un valore.

Tutte le variabili possono essere inizializzate. Se non esiste un valore iniziale impostato in modo esplicito, la variabile viene inizializzata su zero (0) oppure, se la variabile è di tipo string, viene inizializzata come una stringa vuota di caratteri.

Una volta spiegato questi termini, addentriamoci nella struttura o scheletro del nostro Expert Advisor.

Expert Advisor e la sua struttura

Un Expert Advisor (EA) è un programma scritto in MQL 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 renderlo più facile da capire farò 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. Lascia che ti spieghi usando l’esempio precedente. Abbiamo un codice di un Expert Advisor “vuoto”, un tipo di modello Expert Advisor che dovrà essere compilato in seguito.

Ti descrivo ora brevemente la struttura generale del codice di un Expert Advisor.

La struttura generale del codice di un Expert Advisor

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

  • il nome del EA (nome del file)
  • il nome del produttore
  • il suo sito web

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

Le linee successive rappresentano il blocco parametri. Queste informazioni consentono l’inserimento di tutti quei parametri che caratterizzano il funzionamento del EA. Si avranno parametri numerici, variabili interne ed esterne, ecc.

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, verrà eseguita al momento dell’avvio dello stesso. Se non c’è una funzione OnInit, nessuna azione verrà eseguita all’avvio del programma.

La funzione OnDeinit o deinit è la successiva. Ha un parametro che specifica la causa della chiusura del EA. Quando un trader rimuove EA da un grafico, il terminal client esegue una volta la funzione speciale OnDeinit. L’esecuzione di questa funzione è necessaria per la corretta conclusione del funzionamento di un EA. Durante il funzionamento, ad esempio, può creare oggetti grafici e variabili globali. La funzione può contenere codice per eliminare oggetti e variabili non necessari. Una volta completata l’esecuzione di OnDeinit, il controllo viene restituito al client terminal.

L’ultima funzione è OnTick (che sostituisce start). Si può dire che questo blocco è il “cervello” del EA, dal momento che comprende tutte le funzioni responsabili delle transazioni che verrano 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 un Tick.

L’evento Tick è generato solo per gli Expert Advisor, ma ciò non significa che sia sempre necessario definirlo in quanto gli Expert Advisor potrebbero anche funzionare per:

  • eventi legati al tempo, OnTimer (che viene generato dal timer di sistema solo per Expert Advisors e indicatori)
  • oppure per eventuali cambiamenti sul grafico, OnChartEvent (ad esempio si può impostare che attivi una determinata operazione al movimento del mouse, ecc..)

Programmazione avanzata

Come ho detto prima, la struttura 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 su concetti di programmazione che ti possono permettere di comprendere a fondo come effettivamente si possano trasformare in operazioni automatiche ciò che tu hai effettivamente visto sul grafico.

Di certo la struttura del linguaggio Mql4 non è particolarmente complicata ma necessita di buona volontà e studio e soprattutto di un minimo di base nei due ambiti specifici relativi al trading automatico ovvero:

  • concetti relativi all’analisi tecnica su cui spesso si basano gli expert advisor
  • fondamentali di programmazione

Nel caso in cui non è però tua intenzione partire da zero nello studio di un linguaggio di programmazione, ti consiglio di leggere alcuni articoli su come creare un Expert Advisor per Mt4 o per Mt5 seza saper programmare. Buona lettura!