venerdì 30 dicembre 2011

Lezione n° 8 la funzione OrderSend

LA FUNZIONE OrderSend

Una delle istruzioni più importanti è OrderSend. Con Questo comando potete aprire un ordine in buy o sell. L’operazione per essere eseguita ha bisogno di 11 dati (7 obbligatori e 4 no) in ingresso come di seguito esposti:

·       simbolo
·       buy-sell
·       volume
·       prezzo
·       slittamento
·       stop loss
·       take profit
·       eventuale commento
·       numero ordine
·       scadenza
·       color arrow

Il primo parametro (simbolo in lettere es EURUSD) dovrà contenere il simbolo della valuta da tradare. Se la valuta è la stessa del grafico su cui è attaccato il TS allora possiamo indicare direttamente con symbol().
Il secondo parametro (Buy-Sell) indicherà se vogliamo effettuare un’operazione di acquisto “OP_BUY” o di vendita “OP_SELL”.
Possiamo anche usare un numero secondo la seguente tabella:

0
Buy
1
Sell
2
Buy limit
3
Sell limit
4
Buy stop
5
Sell stop


Il terzo parametro (volume) indicherà la quantità che vogliamo tradare, es 0,1 oppure 1 etc.
Il quarto parametro (prezzo) indicherà a quale prezzo vogliamo fare l’operazione. Puoi utilizzare solo l’ultimo prezzo di apertura, dovrai quindi indicare “ask”in caso di Buy o “bid” in caso di sell.
         Il quinto parametro (slittamento) indica il massimo scostamento di prezzo dell’ordine per comprare o vendere. Generalmente settare  a 3,
un valore inferiore può generare un errore.
         Il sesto parametro (stop-loss) indicherà  il  prezzo della valuta, al
di sotto della quale il TS chiuderà automaticamente l’operazione.
Facendo un esempio se vogliamo realizzare un ordine con uno stop loss pari a 50 pips, dovrai indicare il prezzo su cui attivare lo stop loss. Mi spiego meglio: sarà sufficiente che tu inserisca un piccolo codice. Questa parte merita un po’ più di attenzione ma con un esempio pratico sarà facile. Consideriamo la coppia più importante di valute EUR/USD, dove  ad esempio vale 1,3415,  il minimo movimento sarà quindi  pari a 0,0001 il famoso pip. Per usare il minimo movimento di una valuta ci serviremo della funzione Point. Per operazione in buy lo stop loss sarà dato dalla seguente formula: Ask-stoploss*Point.
Quindi avremo l’ ultimo prezzo, Ask (in acquisto) - lo stop loss * il minimo movimento della coppia(Point). Per chiarire  se la coppia
EUR/USD è pari a 1,3415, il prezzo con cui il sistema
dovrà chiudere l’operazione sarà:1,3415-50*0,0001=1,3415-0,005=1,3365. In caso di sell dovrai usare la seguente formula:  Bid+stoploss*Point. Quindi 1,3415+50*0,0001= 1,3565.

Il settimo dato (take profit) dovrà contenere il valore del  prezzo che dovrà dire al TS di chiudere l’ordine. Il metodo è uguale a quello precedente cambia solo il formulario.
Se abbiamo un  Buy  il take profit avrà la formula che segue: Ask+takeprofit*Point, quindi 1,3415+50*0.0001=1,3415+0,005=1,3465
Se abbiamo un sell il take profit avrà la formula che segue:
Bid-takeprofit*Point, quindi 1,3415-50*0,0001=1,3415-0,005=1,3365.
         L’ottavo dato (commenti) dovrà contenere un testo per esempio buy, sell oppure comprato venduto qualsiasi cosa. (non obbligatorio)
         Il nono dato dovrà contenere (numero ordine) dovrà contenere un numero identificativo dell’ordine. (non obbligatorio)
         Il decimo dato (scadenza) dovrà contenere la scadenza del nostro ordine. Nel caso in cui non ci sia il valore sarà pari a zero. (non obbligatorio)
         L’undicesimo dato (color arrow) dovrà contenere il colore della freccia che indicherà l’apertura dell’ordine. Possiamo per esempio impostare con Red per le vendite e Black per gli acquisti oppure Black e White. (non obbligatorio).

Quindi per concludere una funzione completa sarà la seguente:

OrderSend(Symbol(),OP_SELL,lot,Bid,3,Bid+stop_loss*Point,Bid-take_profit*Point,"vendere",3284,0,Red);

Risulta evidente che prima di eseguire l’istruzione dobbiamo dichiarare le variabili stop_loss, take_profit e lot come variabili esterne.
Quindi:

extern int lot;
extern int stop_loss;
extern int take_profit;

int start()
  {
      OrderSend(Symbol(),OP_SELL,lot,Bid,3,Bid+stop_loss*Point,Bid-take_profit*Point,"vendere",3284,0,Red);
     
      return(0);
  }

Consiglio ma è quasi un obbligo di dichiarare una variabile che contenga il valore dell’istruzione OrderSend in modo da poterlo identificare facilmente:

num_ordine=OrderSend(Symbol(),OP_SELL,lot,Bid,3,Bid+stop_loss*Point,Bid-take_profit*Point,"vendere",3284,0,Red);
Se il contenuto della variabile è un numero < 0 allora l’operazione non è andata a buon fine e il programma genererà un errore.
L’errore può essere evidenziato con l’istruzione GetLastError().
Possiamo quindi mettere un’istruzione condizionale che controlli tale valore e se è < 0 blocca il programma e dice il tipo di errore.



Es:
if (num_ordine<0)
Print (“Err. N°”, GetLastError());
Break;

Nella prossima lezione vedremo come modificare un ordina aperto.



L’unico scopo di questo blog è di fornire elementi di studio, pertanto nulla può essere considerato come previsione certa e nulla mette al riparo dal rischio nelle operazioni di investimento in beni finanziari.Le strategie, operazioni e lezioni riportate in queste pagine sono solo date da studi personali e quindi non sono assolutamente garanzia di risultato. Ricordo che nessuno o nulla può garantire risultati certi al 100%. Il lettore si assume piena responsabilità delle proprie scelte, consapevole dei rischi connessi a qualsiasi forma di investimento in Borsa e nel forex. Gli esempi contenuti nel testo sono notizie e opinioni che possono essere modificate in qualsiasi momento senza preavviso e non costituiscono sollecitazione all’acquisto o alla vendita di beni finanziari. L’Autore declina ogni responsabilità su eventuali inesattezze dei dati riportati, danni, perdite economiche, danni diretti o indiretti derivanti dall’uso o dalla divulgazione delle informazioni contenute in questo blog.

mercoledì 28 dicembre 2011

7° Lezione dove scrivere il programma fase di compilazione ed esecuzione

DOVE SCRIVERE IL PROGRAMMA

          Il programma può essere scritto con un qualsiasi editor di testo anche con notepad. Io consiglio di scrivere direttamente nell'editor offerto da metatrader perchè ti permette, attraverso la colorazione delle parole, di capire se l'istruzione è scritta con la sintassi esatta. Ti anticipa sulla scrittura e puoi completare la stessa  con un doppio clic del mouse.

          Di seguito ti offro un video nel quale spiego come attivare l'editor con metatrader, come compilare il programma e come eseguirlo.



 

Ciao alla prossima Alex



















L’unico scopo di questo blog  è di fornire elementi di studio, pertanto nulla può essere considerato come previsione certa e nulla mette al riparo dal rischio nelle operazioni di investimento in beni finanziari.Le strategie, operazioni e lezioni riportate in queste pagine sono solo date da studi personali e quindi non sono assolutamente garanzia di risultato. Ricordo che nessuno o nulla può garantire risultati certi al 100%. Il lettore si assume piena responsabilità delle proprie scelte, consapevole dei rischi connessi a qualsiasi forma di investimento in Borsa e nel forex. Gli esempi contenuti nel testo sono notizie e opinioni che possono essere modificate in qualsiasi momento senza preavviso e non costituiscono sollecitazione all’acquisto o alla vendita di beni finanziari. L’Autore declina ogni responsabilità su eventuali inesattezze dei dati riportati, danni, perdite economiche, danni diretti o indiretti derivanti dall’uso o dalla divulgazione delle informazioni contenute in questo blog.

lunedì 26 dicembre 2011

6° Lezione istruzioni iterative WHILE e FOR

CICLO FOR

          Il ciclo while ha una struttura simile all'istruzione if , controlla il risultato di una condizione che se risulta vera esegue il codice tra parentesi:


int b=0;        //assegna alla variabile intera  b il valore 0
int start()   //inizio programma
  {
      while(b<=3)  // finchè la (condizione) è soddisfatta
                            //esegui il codice tra parentesi graffe
      {
          b++;          //aumenta di 1 la variabile b
          Print(b);    //stampa b
       }
   return(0);         //fine programma
  }

         Nota che nel programma appare il simbolo // che serve a inserire dei commenti personali al codice che non verranno letti in fase di compilazione
         Questo costrutto stamperà a video la sequenza da 1 a 4. La prima volta la variabile sarà 0 quindi <=3 e a video stamperà 1 per effetto dell'istruzione i++. La sequenza continua fino a quando b assumerà il valore 5 a questo punto la condizione non sarà più rispettata e il programma eseguirà l'istruzione immediatamente successiva alla parentesi graffa.


IL CICLO FOR

int b;                   //nuova variabile b
int start()            //inizio programma
  {
     for (b=0;b<=3; b++)     // inizio ciclo for
     {
       Print(b)       //stampa b
     }
  return(0);         //fine programma
  }

         Ad occhio si notano alcune differenze: la variabile b viene assegnata all'interno del ciclo, poi viene verificata la condizione e dal secondo ciclo viene incrementata b.
         Il costrutto stamperà la sequenza da 0 a 3
         Molto spesso le istruzioni for e while posso essere usate entrambe per svolgere la stessa funzione. Una delle differenze fondamentali è che con il ciclo while possiamo anche non sapere a priori quanto vale la variabile nel ciclo for invece no.
         Per chiudere con queste istruzioni un piccolo spazio va dedicato a break e  continue.
         L'istruzione break quando viene eseguita fa terminare il ciclo immediatamente.
         L'istruzione continue comanda di passare il controllo all'iterazione successiva senza uscire dal ciclo.
.
int b;
for(b=0;b<15;b++)
{
  if(b==5)continue;
  if(b==9)break;
Print(b);
}
        In questo stralcio di codice il ciclo funzionerà normalmente e se il valore è 5 il ciclo continua ma 5 non verrà stampato se il valore è 9 si uscirà dal ciclo.
Alla prossima Alex



L’unico scopo di questo blog  è di fornire elementi di studio, pertanto nulla può essere considerato come previsione certa e nulla mette al riparo dal rischio nelle operazioni di investimento in beni finanziari.Le strategie, operazioni e lezioni riportate in queste pagine sono solo date da studi personali e quindi non sono assolutamente garanzia di risultato. Ricordo che nessuno o nulla può garantire risultati certi al 100%. Il lettore si assume piena responsabilità delle proprie scelte, consapevole dei rischi connessi a qualsiasi forma di investimento in Borsa e nel forex. Gli esempi contenuti nel testo sono notizie e opinioni che possono essere modificate in qualsiasi momento senza preavviso e non costituiscono sollecitazione all’acquisto o alla vendita di beni finanziari. L’Autore declina ogni responsabilità su eventuali inesattezze dei dati riportati, danni, perdite economiche, danni diretti o indiretti derivanti dall’uso o dalla divulgazione delle informazioni contenute in questo blog.

giovedì 22 dicembre 2011

5° Lezione Istruzione if-else e swich-case

LE ISTRUZIONI

          Oggi introduciamo le istruzioni condizionali.



L'istruzione if-else (se-altrimenti) è un'istruzione condizionale ed esegue determinate istruzioni in base al risultato che restituisce. Un esempio chiarirà il concetto:

int voto=0;
int start()
{
   if (voto>=6)
   {
     Print("Sei promosso");
   }
   if (voto>=8 && voto<=10 )
   {
     Print("Sei bravo a scuola");
    }
   else
   {
     Print("Bocciato");
   }
   return(0);
  }



Ricorda di rispettare le parentesi graffe come nell'esempio. Sappi che la sintassi deve essere corretta altrimenti anche per una virgola il programma non viene compilato.
Nell'esempio analizziamo la variabile voto: Se la variabile è maggiore o uguale a 6 allora stampa sei promosso, se la variabile ha un numero compreso tra 8 e 10 stampa sei bravo altrimenti con l'istruzione else stampa sei bocciato.

Un'altra istruzione condizionale molto importante è il swich-case la sintassi è la seguente:

int voto=0;
int start()
{
    switch (voto)
      {
        case 0:
        Print("zero");
        break;
        case 1:
        Print("uno");
        break;
        .
        .
        .
        .
        .

        case 10:
        Print("dieci");
        break;
        default:
        Print("Voto non valido!");
        break;
        }
return(0);
  }



Da premettere che i puntini li ho messi per non scrivere tutto il codice. Questo stralcio di programma ci permette di esaminare e stampare  i voti da 0 a 10 e se la variabile voto non ha un numero compreso tra 0 e 10 stampa voto non valido con l'istruzione default.

Alla prossima Alex

Anteprima
L’unico scopo di questo blog  è di fornire elementi di studio, pertanto nulla può essere considerato come previsione certa e nulla mette al riparo dal rischio nelle operazioni di investimento in beni finanziari.Le strategie, operazioni e lezioni riportate in queste pagine sono solo date da studi personali e quindi non sono assolutamente garanzia di risultato. Ricordo che nessuno o nulla può garantire risultati certi al 100%. Il lettore si assume piena responsabilità delle proprie scelte, consapevole dei rischi connessi a qualsiasi forma di investimento in Borsa e nel forex. Gli esempi contenuti nel testo sono notizie e opinioni che possono essere modificate in qualsiasi momento senza preavviso e non costituiscono sollecitazione all’acquisto o alla vendita di beni finanziari. L’Autore declina ogni responsabilità su eventuali inesattezze dei dati riportati, danni, perdite economiche, danni diretti o indiretti derivanti dall’uso o dalla divulgazione delle informazioni contenute in questo blog.

martedì 20 dicembre 2011

4° Lezione: Elementi base di programmazione variabili e operatori

           La programmazione consente attraverso l’esecuzione di istruzioni il funzionamento di un programma.
       Le istruzioni sono delle “parole” che trasformano il linguaggio umano in linguaggio macchina.
      Attraverso un programma compilatore trasformiamo le istruzioni in un programma eseguibile .exe o nel nostro caso .mq4

      Gli elementi base per la programmazione sono:
  • Variabili
  • Operatori
  • Istruzioni
  • Input e Output

VARIABILI
Come sappiamo il computer ha due memorie principali
  • una fissa (hardisk)
  • una variabile (ram)
          Le variabili quando il pc è in funzione occupano una parte della ram.
         Si dividono principalmente in tre categorie:

  • string  cognome  (sequenza di caratteri alfanumerici) es. CGfa7
  • double lotto         (serie di numeri con virgola)              es. 25.33
  • int cellulare          (serie di numeri interi)                        es. 32655
Dopo averle dichiarate (vedremo più avanti che significa) possono essere utilizzate:
Es.   
  int a
  int b
  int c
  a= 12
  b= 3
  c=a+b
  Risultato della variabile c valore 15

OPERATORI
          Lo scopo degli operatori nel programma è quello di eseguire i calcoli.
          Si dividono in quattro categorie:
  • Aritmetici o matematici
  • Di confronto
  • Logici
  • Assegnazione
         Gli operatori Aritmetici (Fig. 1) effettuano delle vere e proprie operazioni matematiche tra valori.
Fig. 1
Gli operatori di confronto (Fig. 2) hanno il compito di comparare dei valori e proseguire con l'istruzione successiva le la condizione è soddisfatta.

Fig. 2
Gli operatori logici (Fig.3) confrontano due valori e eseguono l'istruzione successiva se la condizione è rispettata.
Fig. 3
Gli operatori di assegnazione hanno il compito di attribuire ad esempio una variabile un valore.


Alla prossima con le principali istruzioni.
Alex

L’unico scopo di questo blog  è di fornire elementi di studio, pertanto nulla può essere considerato come previsione certa e nulla mette al riparo dal rischio nelle operazioni di investimento in beni finanziari.Le strategie, operazioni e lezioni riportate in queste pagine sono solo date da studi personali e quindi non sono assolutamente garanzia di risultato. Ricordo che nessuno o nulla può garantire risultati certi al 100%. Il lettore si assume piena responsabilità delle proprie scelte, consapevole dei rischi connessi a qualsiasi forma di investimento in Borsa e nel forex. Gli esempi contenuti nel testo sono notizie e opinioni che possono essere modificate in qualsiasi momento senza preavviso e non costituiscono sollecitazione all’acquisto o alla vendita di beni finanziari. L’Autore declina ogni responsabilità su eventuali inesattezze dei dati riportati, danni, perdite economiche, danni diretti o indiretti derivanti dall’uso o dalla divulgazione delle informazioni contenute in questo blog.

domenica 18 dicembre 2011

3° Lezione i Trading System Seconda Parte

          I Trading System (TS) operano attraverso l'analisi tecnica.
Il motivo è semplice: il software contiene istruzioni che fanno riferimento a dati precisi che sono espressi per esempio da un indicatore o dal prezzo di apertura, chiusura, valore max e min...

        Come abbiamo detto nel post precedente usare un TS ci evita di fare errori dovuti a stati d'animo. E' importante sapere che il nostro TS esegue le istruzioni come fosse un robot senza tenere conto per esempio di dati macroeconomici che possono arrivare in alcuni orari della giornata.

Le opzioni sono due:
  • Non far operare il TS in alcuni orari
  • Accettare alcune perdite inserendo nel TS gli stoploss
     Un esempio di dati importanti possono essere quelli relativi al tasso di interesse o di disoccupazione di uno stato.
     Questi dati si possono trovare facilmente su internet su vari siti io consiglio il seguente: http://www.forexfactory.com/calendar.php .
     E' un sito completo e riporta le notizie più importanti di ogni giorno. Le informazioni più rilevanti sono indicate con un'etichetta rossa. La priva volta che lo visitate ricordatevi di impostare l'orario in alto a sinistra.
     E' chiaro che le notizie relative a catastrofi (torri gemelle, fukushima) per esempio non sono preventivabili. In ogni caso consiglio sempre di costruire i software con l'ausilio di stoploss.

Il concetto fondamentale della lezione è che non bisogna fare affidamento totale ad un Trading System, infatti, nulla può sostituire il ragionamento di un individuo.

     Quanto detto sopra sembra in contrapposizione a quanto esposto sulla lezione N° 2. Invece quello che voglio dire è: guai ad affidare l'intero capitale che sia di 100 $ o 100.000$ ad un solo TS ma dividere la strategia d'investimento i più segmenti tra cui anche il "segmento umano".
A presto Alex

L’unico scopo di questo blog  è di fornire elementi di studio, pertanto nulla può essere considerato come previsione certa e nulla mette al riparo dal rischio nelle operazioni di investimento in beni finanziari.Le strategie, operazioni e lezioni riportate in queste pagine sono solo date da studi personali e quindi non sono assolutamente garanzia di risultato. Ricordo che nessuno o nulla può garantire risultati certi al 100%. Il lettore si assume piena responsabilità delle proprie scelte, consapevole dei rischi connessi a qualsiasi forma di investimento in Borsa e nel forex. Gli esempi contenuti nel testo sono notizie e opinioni che possono essere modificate in qualsiasi momento senza preavviso e non costituiscono sollecitazione all’acquisto o alla vendita di beni finanziari. L’Autore declina ogni responsabilità su eventuali inesattezze dei dati riportati, danni, perdite economiche, danni diretti o indiretti derivanti dall’uso o dalla divulgazione delle informazioni contenute in questo blog.

venerdì 16 dicembre 2011

2° Lezione Trading System forex Prima Parte

     Un Trading System (TS) è un sistema software che permette l'acquisto o la vendita di un bene finanziario in automatico.




I  vantaggi di usare un TS sono essenzialmente dati da tre fattori:
  • Fattore Psicologico: evitare l'acquisto o la vendita del bene finanziario sulla base di un'emozione.
  • Fattore Tempo: puoi sfruttare il mercato 24 ore al giorno (tranne la pausa di fine settimana)
  • Fattore Back Test: puoi testare il tuo software nel passato e vedere come si è "comportato"
     Su tutte le pubblicazioni, blog, ebook etc troverai la seguente affermazione: "L'80-90% dei trader perdono i soldi per effetto delle emozioni." Ti sarà capitato di avere una posizione aperta che magari sta guadagnando e per avidità non la chiudi per guadagnare il massimo, ma poi una notizia un fattore imprevedibile ti fa perdere tutto in un attimo. Peggio il contrario una posizione in perdita non la si chiude perché magari pensi che dopo un pò ritorni a guadagnare.
     Ebbene ho una buona notizia: se hai un buon TS puoi eliminare le emozioni e lasciare decidere a lui le operazioni da fare.
     L'altro fattore importante è il tempo, infatti, il tuo software può funzionare 24 su 24 e aprire e chiudere le posizioni per te anche la notte. Bello no!
     I back Test consento di provare il software nel passato. Anche se i risultati passati non sono garanzia di quelli futuri con questa procedura almeno puoi vedere se il software applica bene le regole che tu gli imponi.
I TS che si possono costruire sono tre:
  • Expert Advisor (EA)
  • Indicatori
  • Script
     Gli EA (Fig. 1) sono dei programmi che automatizzano il trading in base alle istruzioni che contengono. Essi posso aprire, modificare e chiudere un ordine più volte. Si possono servire di indicatori. Solitamente hanno bisogno dei valori di input (Fig. 2)

Fig. 1

Fig. 2

      Gli indicatori (Fig. 3) sono dei software che non effettuano operazioni di trading. La loro funzione è di dare delle informazioni elaborate con l'ausilio dell'analisi tecnica. ( Es la media mobile è uno di quelli che offre metatrader).

Fig. 3
     Gli script hanno il compito di eseguire una sola funzione. Vengono eseguiti una sola volta a chiamata. Non possono utilizzare al loro interno indicatori.
Ciao Alex

 L’unico scopo di questo blog  è di fornire elementi di studio, pertanto nulla può essere considerato come previsione certa e nulla mette al riparo dal rischio nelle operazioni di investimento in beni finanziari.Le strategie, operazioni e lezioni riportate in queste pagine sono solo date da studi personali e quindi non sono assolutamente garanzia di risultato. Ricordo che nessuno o nulla può garantire risultati certi al 100%. Il lettore si assume piena responsabilità delle proprie scelte, consapevole dei rischi connessi a qualsiasi forma di investimento in Borsa e nel forex. Gli esempi contenuti nel testo sono notizie e opinioni che possono essere modificate in qualsiasi momento senza preavviso e non costituiscono sollecitazione all’acquisto o alla vendita di beni finanziari. L’Autore declina ogni responsabilità su eventuali inesattezze dei dati riportati, danni, perdite economiche, danni diretti o indiretti derivanti dall’uso o dalla divulgazione delle informazioni contenute in questo blog.