Dopo aver visto l’ utilità di OrderSelect vediamo adesso le principali funzioni che ci permettono di avere informazioni su una specifica operazione ( aperta, pendente, chiusa o cancellata ). Si tratta di funzioni molto semplici, cui sarà dedicata una breve trattazione, ma che si dimostrano spesso indispensabili per il corretto funzionamento di molti EA.
int OrdersTotal(): restituisce un numero intero che quantifica le operazioni aperte o pendenti attualmente presenti sull’ account corrente. A differenza delle funzioni seguenti il suo uso non è legato a nessun ordine, e può essere quindi utilizzato indipendente alla preesistenza di OrderSelect
double OrderTakeProfit(): ritorna, in formato double, il livello di take profit della posizione selezionata
double OrderStopLoss(): ritorna un double indicante il livello di prezzo su cui è settato lo stop loss della posizione selezionata
double OrderOpenPrice(): ritorna la quota di prezzo a cui è avvenuta l’ apertura della posizione selezionata
int OrderTicket(): ritorna il ticket number della posizione selezionata
double OrderLots(): ritorna un double, e indica il lotto a cui è stata aperta la posizione selezionata
datetime OrderExpiration(): indica, in formato datetime, la data e l’ora in cui l’ ordine sarà eliminato. Questa funzione ha utilità solamente negli ordini pendenti, che sono soggetti appunto, in via opzionale, ad una data\ora di scadenza
int OrderType(): funzione molto utile, ritorna un intero e ci indica il tipo di ordine che abbiamo selezionato. I possibili valori di ritorno sono sei, e vanno da zero a cinque
0 => posizione Buy
1 => posizione Sell
2 => posizione Buy Limit
3 => posizione Buy Stop
4 => posizione Sell Limit
5 => posizione Sell Stop
datetime OrderOpenTime(): restituisce un datetime contenente la data e l’ ora dell’ apertura dell’ ordine. Se l’ ordine non è ancora stato aperto ( quindi è pendente ) restituisce zero.
datetime OrderCloseTime(): restituisce un datetime contenente la data e l’ ora della chiusura dell’ ordine. Nel caso quest’ ultimo sia aperto o pendente restituirà zero.
Ti mostro ora un esempio di come utilizzare alcune di queste funzioni. Supponiamo di avere un ordine Long da chiudere
// controllo che ci siano ordini aperti
if(OrdersTotal>0)
//seleziono un ordine di cui ho il ticketnumber
Orderselect (numeroticket,SELECT_BY_TICKET);
//controllo che l' ordine sia aperto
if(OrderOpenTime!=0)
//controllo che la posizione sia in Long
if(OrderType()==0)
//se l' ordine è già stato aperto, lo chiudo
OrderClose(OrderTicket(),OrderLots(),Bid,slippage)
© RIPRODUZIONE RISERVATA