MQL: come ottenere informazioni su una posizione

Marco FoxTrade

4 Giugno 2011 - 11:23

condividi
MQL: come ottenere informazioni su una posizione

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) 
 

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.