Come si usano le funzioni su MetaTrader con Mql4

Funzioni MQL4

In questo articolo introdurremo il concetto di Funzione. Nella realizzazione di uno script, un indicatore o un Expert Advisor spesso potrebbe verificarsi il caso in cui alcune operazioni debbano essere ripetute più volte.

In una struttura sequenziale, senza l’utilizzo delle funzioni, sarebbe necessario riscrivere le stesse funzioni di codice ogni qualvolta se ne senta la necessità cosa che oltre ad essere noiosa non fa altro che appesantire il codice rallentando le nostre operazioni di trading.

Per questa ragione è nato il concetto di funzioni. Le funzioni sono blocchi di codice che vengono elaborati solo quando la funzione viene richiamata. Se la funzione non viene chiamata, in gergo tecnico “invocata”, il codice all’interno viene ignorato e il flusso dei dati passa oltre, alle righe successive.

In caso venga invocata, la funzione esegue i comandi che vi sono all’interno e una volta svolti i suoi compiti cessa l’utilizzo e il programma ritorna al punto immediatamente successivo alla chiamata, in maniera sequenziale.

Il concetto sembra ostico, ma con il tempo imparerete a lavorare bene con le funzioni. Ma quali sono i vantaggi dell’utilizzo delle funzioni?

Le funzioni consentono di creare codici snelli di facile lettura e velocemente modificabili. Immaginiamo di scrivere un Expert Advisor al cui interno viene evocata per tre volte una media mobile come parametro per il trading. Con l’utilizzo delle funzioni dobbiamo scrivere la porzione di codice una sola volta e poi evocarla tre volte nell’apposita sezione. Ma il vantaggio maggiore si ha in caso di modifica.

In un codice senza funzioni dovremmo apportare modifiche a tre porzioni di codice, con l’utilizzo delle funzioni dovremmo intervenire in una sola parte del nostro lavoro rendendo il nostro lavoro molto versatile.

Bene dopo questa introduzione entriamo nel dettaglio facendo qualche esempio.

Una funzione, come nel caso delle variabili, deve essere dichiarata con un identificatore e segue la sintassi:

Esempio pratico:

Cosa abbiamo fatto?

Abbiamo per prima cosa definito l’identificatore della funzione, è il nome che verrà invocato nella dichiarazione di chiamata quando vorremo utilizzare questa porzione di codice. Il corpo della funzione viene racchiuso tra le parentesi graffe. A terminare a funzione il comando di uscita return; che termina l’esecuzione rimandando alla funzione speciale int start().

Una volta definita la funzione questa deve essere in qualche modo invocata per fare ciò porteremo un esempio più concreto e utile:

Nell’esempio abbiamo creato tre funzioni, una chiamata segnale, una compra e l’altra vendi.

Iniziamo ad analizzare la prima. Per prima cosa vengono definite le variabili con i criteri di analisi; assegnando agli identificatori i valori delle medie mobili; dopo di che le istruzioni if definiscono i criteri di entrata. Una volta verificate le condizioni qualora soddisfatte, vengono evocate le relative funzioni attraverso return , in caso di posizione long con return(compra) viene invocata ed eseguita la funzione compra, in caso di posizione short con return(vendi) viene invocata ed eseguita la funzione vendi.

Le funzioni compra e vendi, una volta evocate avviano l’ordine come descritto e poi rimandano alla funzione che le ha chiamate con il comando di chiusura return(0); .

In questa maniera gli esempi hanno solo uno scopo illustrativo, ma credo diano un idea ben precisa del concetto di funzioni e sulla loro effettiva utilità.

Ora immaginiamo di voler modificare i criteri di entrata nel mercato. Ora è sufficiente modificare la funzione segnale come desiderato, e le modifiche sono attive per tutto il nostro Expert Advisor, la stessa cosa se volessimo applicare un ordine pendente al posto di uno a mercato, come nell’esempio, basterebbe modificare le funzioni compra e vendi e il gioco è fatto.

Bene questa introduzione alle funzioni è terminata, presto approfondiremo il concetto specificando le funzioni speziali, e le funzioni di trading.

Apri un conto di trading

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *