Durante lo sviluppo di un EA ti capiterà spesso di dover analizzare le posizioni aperte, chiuse o pendenti. Nel (...) CONTINUA A LEGGERE...
Dopo aver visto l’ utilità di OrderSelect vediamo adesso le principali funzioni che ci permettono di avere informazioni su (...) CONTINUA A LEGGERE...
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
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.
Riceverai nella tua casella una rassegna quotidiana dei migliori articoli.