La funzione OrderSend: come aprire e chiudere le posizioni

Marco FoxTrade

13 Maggio 2011 - 20:46

Aprire posizioni con OrderSend in linguaggio MQL

La funzione OrderSend: come aprire e chiudere le posizioni

L’ apertura e la chiusura delle posizioni sono componenti essenziali di ogni Expert Advisor.
Per svolgere questi due compiti ci vengono incontro le funzioni OrderSend per l’ apertura
e OrderClose per la chiusura. Oggi ti mostrerò la prima.

OrderSend è una funzione con 7 parametri obbligatori e 4 facoltativi

int OrderSend ( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE )

Parametri obbligatori:
symbol: viene richiesta una stringa con il nome esatto del pair/indice su cui aprire la posizione, ad esempio EURUSD

cmd: è il tipo di operazione da effettuare, e accetta valori int da 0 a 5 con il seguente criterio

  • 0: ordine Buy
  • 1: ordine Sell
  • 2: ordine pendente Buy Limit
  • 3: ordine pendente Sell Limit
  • 4: ordine pendente Buy Stop
  • 5: ordine pendente Sell Stop

volume: lotto da utilizzare per l’ apertura, ad esempio 0.1. Il valore deve essere di tipo double

price: il prezzo a cui deve scattare l’ ordine. Bisogna porre attenzione a questo parametro, e tenere conto del
fatto che per le operazioni Long bisogna prendere come riferimento il prezzo Ask ( che rappresenta il prezzo
effettivo di acquisto ) e per le operazioni Short bisogna utilizzare invece il prezzo Bid ( che rappresenta
il prezzo di vendita ). Se non si tiene presente questo si può incorrere in un errore. Il tipo di dato deve essere double

slippage: è lo slippage tollerato per l’ apertura della posizione, ed è espresso in pips con un valore intero.

stop loss: è un valore a virgola mobile ( double ), e rappresenta il prezzo di stop loss per la posizione che stiamo inviando.
Lo stop scatterà al raggiungimento di questo valore da parte del Bid in caso di Long e dell’ Ask in caso di short

- take profit: come sopra, rappresenta il livello di prezzo al quale prendere profitto.

Questi erano i parametri indispensabili per l’ invio di un ordine; i successivi sono facoltativi, e contengono informazioni
che possono essere omesse nel caso non vi siano necessità particolari.

comment: è un valore di tipo stringa che può essere usato per aggiungere una nota nel campo Commenti nel riepilogo
degli ordini su Metatrader ( sia sugli ordini aperti/pendenti che sugli ordini storici ). Può essere utile
nel caso si stia tradando con più EA per distinguere le diverse operazioni che aprono.

magic: questo valore intero serve a dare un identificativo unico ad ogni posizione, cui ci si può riferire con
la funzione OrderMagicNumber().

expiration: l’ expiration time, passato come valore datetime, rappresenta il momento di scadenza dell’ operazione:
se l’ apertura non è avvenuta entro la data/ora segnata, il trade viene cancellato. E’ utilizzabile solo sugli
ordini pendenti. Per impostare correttamente questo valore è possibile prima creare una stringa in questo modo
string stringaScadenza=«2011.6.20 20:00»; // anno, mese, giorno, ore, minuti

e successivamente effettuare una conversione dal tipo stringa al tipo datetime con la funzione StrToTime()
datetime tempoScadenza=StrToTime(stringaScadenza);

passando quindi tempoScadenza come parametro.

color: questo ultimo parametro ci consente di disegnare una freccia sul punto di apertura. Tale freccia sarà del colore
desiderato. La via più comoda per specificarne uno è scrivere il colore tra doppi apici, ad esempio «Red».
A questo indirizzo puoi trovare una lista dei colori supportati.

Il valore di ritorno della funzione OrderSend è -1 se l’ operazione fallisce, oppure è un numero intero che rappresenta il
ticket number dell’ ordine aperto. Per conoscere nello specifico l’ eventuale errore che si presenta puoi utilizzare
la funzione GetLastError() e poi consultare questa pagina per vedere di cosa si tratta.

Note conclusive:
Nell’ utilizzo della funzione OrderSend è molto importante tenere presente che Metatrader considera il pip come il valore
di precisione più piccolo presente su un determinato cross
. Sui conti Fixed Spread, ad esempio, il valore su eurusd
corrisponderà a 0.0001, mentre su un conto a spread variabile sarà di 0.00001. Questo particolare rende necessaria
un’ attenzione in più quando si parla di slippage. Se impostiamo ad esempio slippage=4, su un conto Fixed avrai una
tolleranza di apertura di 0.0004 ( sempre su eurusd ) mentre su un conto a spread variabile avrai una tolleranza di
soli 0.00004, il che potrebbe facilmente compromettere l’ entrata dell’ ordine.

Nel prossimo articolo vedremo la funzione di chiusura ordine OrderClose.

Iscriviti a Money.it

Trading online
in
Demo

Fai Trading Online senza rischi con un conto demo gratuito: puoi operare su Forex, Borsa, Indici, Materie prime e Criptovalute.