giovedì 23 gennaio 2014

SWITCH

L'istruzione if serve per far eseguire una operazione ad una funzione se si verifica una certa condizione.
Se le condizioni da verificare sono più di una si possono utilizzare degli if nidificati (cioè uno interno all'altro) tipo:

if (condizione 1)
       allora esegui istruzione 1
         else
                if( condizione 2)
                      allora esegui istruzione 2



e cosi a secondo di quante sono le condizioni da verificare

E' ovvio che se sono molti l'istruzione if non è la più efficace tra le varie ipotesi

A questo proposito si può utilizzare l'istruzione switch


switch (espressione)
{
case  1 : istruzione ; break ;
case  2 :  istruzione ; break ;
.....

default: istruzione ; break;
}




Il valore dell'espressione viene confortato con delle costanti se c'è uguaglianza viene eseguita istituzione corrispondente che potrebbe pure essere un blocco di istruzioni.


switch ( A)
{
case ' B' :
              print ( " A è uguale a:", B);
              break ;

case 'C' :

              print ( " A è uguale a:", C);
              break ;
[....]
}



lunedì 20 gennaio 2014

Ciclo While

Il ciclo while a differenza del ciclo for viene utilizzato quando non si ha certezza del numero di iterazioni che si vuole far compiere al blocco di istruzioni.
La sintassi è la seguente:


while (condizione)
  
 {

       (blocco istruzioni);

  }


esempio


int a = 0;

while (a < 5)

  {
        
      Print(" il valore di "a " è:", a);

                 a++;
   
  }


Il risultato alla fine è il seguente:






giovedì 16 gennaio 2014

I Cicli FOR e WHILE

Può capitare che necessitiamo di far avvenire un'istruzione o un blocco di istruzioni più volte fino al verificarsi di una certa condizione. In questo caso possiamo usare due istruzioni fondamentali di ciclo: l'istruzione for e l'istruzione While.

Istruzione for permette di far eseguire un'istruzione o il blocco di istruzioni almeno una o n volte.
Prevede l'utilizzo di una variabile intera di controllo che viene inizializzata all'inizio e che può essere incrementata o decrementata ogni volta che viene eseguita l'istruzione. Il ciclo si ferma solo quando la variabile di controllo assume un determinato valore specificato all'interno dell'istruzione for

for ([ variabile di controllo inizializzata];[condizione di stop ciclo]; 
           [incremento o decremento variabile di controllo])

         { blocco istruzioni};


Esempio:



for ( int a = 0; a<5; a++)

      { Print("Il valore di a =:", a); }


Il risultato sarà:









lunedì 13 gennaio 2014

Condizione IF

Come tutti i normali linguaggi di programmazione esistono delle istruzioni condizionali, ovvero istruzioni che permettono di eseguire una singola istruzione o un blocco se è verificata una certa condizione.
La più comune istruzione condizionale è "IF" , spesso, ma non necessariamente, seguita dalla istruzione "ELSE" che comporta la esecuzione di una diversa operazione nel caso la condizione non sia verificata.


IF (condizione da verificare)

 {istruzione da eseguire se condizione IF vera}

ELSE

 {istruzione da eseguire se condizione IF false}

esempio:

[...]

IF (a>10)

    b= a+1;

ELSE

    b = a -1;


se a = 11 l'istruzione IF è vera e b = 12;
se a = 9 l'istruzione IF è falsa e b = 8.



 

giovedì 9 gennaio 2014

Passaggio di parametri alle funzioni e ritorno di valore

Una funzione all'interno di un programma in MQL è un blocco di codice che può sia inizializzare delle variabili che verranno usate all'interno della funzione, sia accettare dei valori che vengono passati dall'esterno:


void  Addizione (int a, int b)

  {
         
          int C = A+B;

  }

In questo caso ne A ne B vengo inizializzati ma prendono i valori che vengono passati dell'esterno:

[...]

Addizione (3,5);

[...]


Le funzioni possono anche restituire un parametro che verra eventualmente utilizzato poi dal corpo del programma principale. 
In questo caso quando si chiama la funzione bisogna definire il tipo del parametro che si aspetta di ricevere.


int Addizione (3,5);


mettendo "int" di fronte al nome di funzione che richiama il blocco ci aspettiamo che la funzione ritorni un valore intero, se verrà restituito un valore diverso al momento della compilazione il compilatore darà errore.


int  Addizione (int a, int b)

  {
         
          int C = A+B;

         return (C);

  }

Ora la funzione presenta "int" di fronte al nome, significa che la funzione deve restituire un valore intero. Inoltre nel blocco della funzione c'è il comando return che ha come compito specificare quale valore verrà restituito.

lunedì 6 gennaio 2014

Istruzioni e Funzioni

Un programma in MQL, come ogni codice di programmazione, è costituito da una successione di istruzioni. Un' istruzione può essere una assegnazione, una operazione logica o matematica, un confronto o un ciclo. Ogni istruzione esegue una operazione completa ed ogni istruzione termina con il punto e virgola (";")

int A = 5 ;  


Quella scritta sopra è una istruzione di dichiarazione e assegnazione: nella stessa istruzione viene dichiarata la variabile "A" di tipo intero (int) e a questa variabile viene assegnato il valore 5.
Spesso è necessario creare una serie di istruzioni che debbano essere eseguite in blocco tutte assieme e magari più volte dal programma. In questo caso questo blocco di istruzioni viene delimitato da parentesi graffe e viene chiamato Funzione


Void Addizione

  {
          int A = 5;
          int B = 2;
          int C = A+B;
 }


L'insieme di istruzioni contenute dentro la funzione, che qui viene chiamata Addizione,  hanno come scopo quello di fare una operazione di addizione tra due variabili.
Le variabili vengono prima dichiarate e poi inizializzate con i valori 5 e 2.
Poi le variabili vengono sommate tra loro e il risultato viene assegnato alla variabile C precedentemente dichiarata di tipo "int".




giovedì 2 gennaio 2014

Come aprire il MetaEditor

Con il linguaggio MQL e la piattaforma Metatrader  è possibile non solo creare Trading System, che nel caso specifico vengono chiamata Expert Advisor, ma anche fare altro.
Si possono cerare Indicatori personalizzati (Custom Indicator), programmi che vengono eseguiti una volta sola (Script) e librerie.
Tutto ciò avviene tramite l’Editor di Metatrader.
L’editor, chiamato MetaEditor, è l’interfaccia che permette alla piattaforma di trasformare i comandi di MQL in linguaggio macchina e farli eseguire.
Per aprire l’interfaccia MetaEditor è sufficiente cliccare nel menù di Metatrader il piccolo rombo giallo con il punto esclamativo dentro che vedete nella figura.




Vi comparirà la schermata di cui sotto.


Per iniziare a scrivere il vostro programma dovete cliccare New dentro il menù file in alto a sinistra.





Il MetaEditor vi chiederà cosa vorrete creare, se un Expert Advisor, un indicatore ecc ecc.



Scegliete e cliccate su Next.
Ecco che ora l’editor è pronto per accettare il vostro codice e successivamente compilarlo.