OrderGetTicket

Restituisce il Ticket di un ordine corrispondente e seleziona automaticamente l'ordine per un ulteriore lavoro con esso utilizzando le funzioni.

ulong  OrderGetTicket(
   int  index      // Numero nella lista degli ordini
   );

Parametri

index

[in] Numero di un ordine nella lista degli ordini pendenti.

Valore restituito

Valore del tipo ulong . Se la funzione fallisce, viene restituito 0.

Nota

Non confondere i correnti ordini pendenti con posizioni, che sono anche visualizzati nella scheda "Trade" del "BoxAttrezzi" del terminale client. Un ordine è una richiesta di condurre un' operazione, mentre una posizione è il risultato di uno o più affari.

For the "netting" interpretation of positions (ACCOUNT_MARGIN_MODE_RETAIL_NETTING and ACCOUNT_MARGIN_MODE_EXCHANGE), only one position can exist for a symbol at any moment of time. This position is a result of one or more deals. Do not confuse positions with valid pending orders, which are also displayed on the Trading tab of the Toolbox window.

If individual positions are allowed (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING), multiple positions can be open for one symbol.

La funzione OrderGetTicket() copia i dati di un ordine nell'ambiente del programma, e successive chiamate di OrderGetDouble(), OrderGetInteger(), OrderGetString() restituiscono i dati precedentemente copiati. Ciò significa che l'ordine stesso non esiste più (o il suo prezzo di apertura, Stop Loss/Take Profit o scadenza sono cambiati), ma i dati di questo ordine possono essere ancora ottenuti. Per garantire la ricezione di nuovi dati relativi ad un ordine, si consiglia di chiamare OrderGetTicket() giusto prima di fare riferimento ad essi.

Esempio:

voidOnStart()
  {
//---variabili per la restituzione di valori dalle proprietà dell'ordine
   ulong    ticket;
   double   open_price;
   double   initial_volume;
   datetime time_setup;
   string   symbol;
   string   type;
   long     order_magic;
   long     positionID;
//--- numero degli attuali ordini in corso
   uint     total=OrdersTotal();
//--- passa attraverso gli ordini in un ciclo
   for(uint i=0;i<total;i++)
     {
      //--- restituisce il ticket dell'ordine per la sua posizione nella lista
      if((ticket=OrderGetTicket(i))>0)
        {
         //--- restituisce le proprietà dell'ordine
         open_price    =OrderGetDouble(ORDER_PRICE_OPEN);
         time_setup    =(datetime)OrderGetInteger(ORDER_TIME_SETUP);
         symbol        =OrderGetString(ORDER_SYMBOL);
         order_magic   =OrderGetInteger(ORDER_MAGIC);
         positionID    =OrderGetInteger(ORDER_POSITION_ID);
         initial_volume=OrderGetDouble(ORDER_VOLUME_INITIAL);
         type          =EnumToString(ENUM_ORDER_TYPE(OrderGetInteger(ORDER_TYPE)));
         //--- prepara e mostra le informazioni sull'ordine
         printf("il #ticket %d %s %G %s at %G è stato impostato a %s",
                ticket,                 // ticket ordine
                type,                   // tipo
                initial_volume,         // volume piazzato
                symbol,                 // simbolo
                open_price,             // prezzo di apertura specificato
                TimeToString(time_setup)// tempo di piazzamento dell'ordine
                );
        }
     }
//---
  }

Vedi anche

OrdersTotal(), OrderSelect(), OrderGetInteger()