www.sapienzafinanziaria.com Corso Sapienza Trading Automatico la formazione finanziaria è il miglior investimento per il tuo domani
Lezione n. 2 Edizione marzo 2015 Operatori condizionali e i cicli www.sapienzafinanziaria.com
Obiettivi di questa lezione Breve ripasso Introduzione di nuovi comandi utili Completamento e applicazione delle istruzioni condizionali Le istruzioni cicliche Le funzioni personalizzate
Breve Ripasso Abbiamo visto le funzioni speciali di un EA Conosciamo come dichiarare una variabile globale,locale,interna ed esterna Conosciamo l istruzione Comment() e Print() Sappiamo come commentare il codice con // o con /* e */ oppure come usare la tecnica del commento per disattivarne delle parti Poi abbiamo visto alcune cose importanti come le array, e in particolare le array della serie storica Open [], Close [], High [] e Low [] Sappiamo che esistono le funzioni Ask e Bid per le quotazioni istantanee Abbiamo visto l istruzione condizionale if-else
Nuove utili funzioni di MQL Digits restituisce il numero di decimali che vengono proposti per lo strumento finanziario corrente (dato di tipo int). Point restituisce l'entità del punto per lo strumento finanziario rappresentato (dato di tipo double). Il punto rappresenta la più piccola variazione possibile del prezzo, differisce dal Pip. Il Punto quindi non è il Pip, anche se in alcune circostanze i due valori possono coincidere. Bars restituisce il numero di barre presenti sul grafico (dato di tipo int).
L istruzione condizionale If-else if( CHIUSURA >= APERTURA ){ RANGE = CHIUSURA-APERTURA; else{ RANGE = APERTURA-CHIUSURA;
Istruzioni Condizionali con l operatore «switch» Questo operatore è un «selettore» che permette al programma di scegliere una delle tante alternative possibili. Per ogni alternativa, verrà utilizzata la costante predefinita. Le istruzioni switch permettono di evitare noiose sequenze di ifelse. Esse sono particolarmente utili quando in un programma si deve dare all utente la possibilità di scegliere tra più opzioni.
Sintassi con l operatore «switch» switch (espressione) { case constante1: istruzioni; break; case constante2: istruzioni; break; default: istruzioni; break;
Esempi con l operatore «switch» switch(temperatura) { case 0 : risultato = freddo ; break; case 7 : risultato = freddo ; break; case 20 : risultato = ok ; break; case 35 : risultato = caldo ; break; default : risultato = 1; break; Comment(risultato); int risultato; switch(digits) { case 2 : risultato = 1; break; case 3 : risultato = 10; break; case 4 : risultato = 1; break; case 5 : risultato = 10; break; default : risultato = 1; break; Comment(risultato);
I Cicli Statement Ciclici con operatore «while» L'elaborazione di lunghe serie di dati di solito richiede più ripetizioni delle stesse operazioni. È possibile organizzare un ciclo di tali operazioni l'operatore "while". while ( a <= 10) { b = a + 5; a++; Statement Ciclici con operatore «for» A differenza l'operatore «while», questo operatore permette di impostare delle condizioni di inizio e di fine per l'esecuzione delle iterazioni. for ( a=1; a<=10; a++ ) { b = a + 5;
Istruzioni Cicliche con l operatore «while» while ( Condizione ) { Blocco Istruzioni; Non appena il controllo viene passato all'operatore while : 1) finché la Condizione dell'operatore while è vera il controllo verrà passato al Blocco di Istruzioni del corpo ciclo; 2) non appena il blocco di istruzioni del corpo ciclo viene completato, il controllo viene passato di nuovo alla Condizione per testare se è vera oppure no. Se è vera si riparte di nuovo col Blocco Istruzioni Se la Condizione del gestore while è falsa, il controllo abbandona il ciclo e il programma continuerà eseguendo le istruzioni successive all operatore while.
Esempio con l istruzione ciclica «while» double prezzo_apertura; int i=0; while ( i < 5 ) { prezzo_apertura = Open[i]; Print("PREZZO APERTURA" + i + " = "+prezzo_apertura); i=i+1;
Istruzioni Cicliche con l operatore «for» for (Espressione1; Condizione; Espressione2) { Blocco Istruzioni; Non appena il controllo viene passato all'operatore for: 1) il programma esegue l Espressione1. Quindi 2) finché la Condizione è vera il controllo verrà passato al Blocco Istruzioni del corpo ciclo; 3) non appena il Blocco Istruzioni del corpo ciclo viene completato, il programma deve eseguire Espressione2 e passare il controllo alla Condizione per testare se è vera oppure no. Se è vera si riparte di nuovo col Blocco Istruzioni Se la condizione dell'operatore for è falsa, allora il ciclo verrà terminato e il programma continuerà eseguendo le istruzioni successive all operatore for.
Esempio con l operatore «for» double prezzo_apertura; for(int i=0; i<5; i++) { prezzo_apertura = Open[i]; Print("PREZZO APERTURA" + i + " = " + prezzo_apertura);
L operatore «break» L'operatore break termina l'esecuzione di un ciclo (quindi while e for). Lo scopo di questo operatore è quello di interrompere cicli infiniti o abbreviare i cicli di controllo una volta che si è trovata la condizione cercata.
L operatore «continue» L'operatore continue riporta il controllo all inizio del ciclo saltando le istruzioni successive. La finalità è opposta a quella dell'operatore break.
Le funzioni user defined In tutti i casi in cui un programmatore ha bisogno di creare ed utilizzare funzioni che non esistono può farlo definendo una o più funzioni user defined. double MyFunction(double a, double b) { double SOMMA = a + b; return(somma);
L operatore «RETURN» L'operatore return termina l'esecuzione di una funzione o metodo restituendo il valore risultato della funzione, e quindi riportando il controllo all'istruzione del flusso principale del programma. Si può utilizzare anche return (0) come terminazione forzata della funzione.
Conclusioni Con questa lezione abbiamo completato gli argomenti relativi ai comandi MQL fondamentali per impostare la logica di un EA. I «compiti per casa» sono : Studiare bene gli argomenti di questa lezione Esercitarsi creando nuovi semplici script o ripetendo quelli proposti Familiarizzare con i comandi MQL e con il METAEDITOR Concentrarsi più sugli aspetti della logica piuttosto che sul memorizzare i comandi