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.

1 commento: