HistoryOrderGetDouble

Restituisce la proprietà richiesta dell'ordine. La proprietà dell'ordine deve essere di tipo double. Ci sono due varianti della funzione.

1. Restituisce immediatamente il valore della proprietà.

double  HistoryOrderGetDouble(
   ulong                       ticket_number,     // Ticket
   ENUM_ORDER_PROPERTY_DOUBLE  property_id        // Identificativo della proprietà
   );

2. Restituisce true o false, a seconda del successo della funzione. In caso di successo, il valore della proprietà è posto in una variabile di destinazione passata per riferimento dall ultimo parametro.

bool  HistoryOrderGetDouble(
   ulong                       ticket_number,     // Ticket
   ENUM_ORDER_PROPERTY_DOUBLE  property_id,       // Identificativo della proprietà
   double&                     double_var         // Qui si accetta il valore della proprietà
   );

Parametri

ticket_number

[in]  Ticket dell'ordine.

property_id

[in] Identificativo della proprietà dell'ordine. Il valore può essere uno dei valori dell' enumarazione ENUM_ORDER_PROPERTY_DOUBLE.

double_var

[out] Variabile del tipo double che accetta il valore della proprietà richiesta.

Valore restituito

Valore del tipo double.

Nota

Non confondere gli ordini della cronistoria di trading con gli attuali ordini pendenti che vengono visualizzati nella scheda "Trade" della barra "BoxAttrezzi". L'elenco degli ordini che sono stati cancellati o hanno portato ad una transazione, possono essere visualizzati nella scheda "Cronistoria" del "BoxAttrezzi" del terminale client.

Esempio:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- cronologia delle operazioni e degli ordini
   if(!HistorySelect(0TimeCurrent()))
     {
      Print("HistorySelect() failed. Error "GetLastError());
      return;
     }
     
//--- in un ciclo dalla lista di tutti gli ordini della cronologia sul conto
   int total=HistoryOrdersTotal();
   for(int i=0i<totali++)
     {
      //--- ottenere il ticket dell'ordine nella lista tramite l'indice del ciclo
      ulong ticket=HistoryOrderGetTicket(i);
      if(ticket==0)
         continue;
      
      //--- ottenere il tipo di ordine e visualizzare l'intestazione per la lista delle proprietà reali dell'ordine selezionato
      string type=OrderTypeDescription((ENUM_ORDER_TYPE)HistoryOrderGetInteger(ticketORDER_TYPE));
      PrintFormat("Double properties of an history order %s #%I64u:"typeticket);
      
      //--- stampare tutte le proprietà reali dell'ordine selezionato sotto l'intestazione
      HistoryOrderPropertiesDoublePrint(ticket16);
     }
   /*
   risultato:
   Double properties of an history order Sell #2810847541:
   Volume initial0.50
   Volume current0.00
   Price open:     1.10491
   StopLoss:       0.00000
   TakeProfit:     0.00000
   Price current:  1.10491
   StopLimit:      0.00000
   Double properties of an history order Buy Limit #2811003507:
   Volume initial1.00
   Volume current1.00
   Price open:     1.10547
   StopLoss:       0.00000
   TakeProfit:     0.00000
   Price current:  1.10591
   StopLimit:      0.00000
   */
  }
//+------------------------------------------------------------------+
//| Visualizzare le proprietà reali dell'ordine                      |
//| della cronologia selezionata nel journal                         |
//+------------------------------------------------------------------+
void HistoryOrderPropertiesDoublePrint(const long ticketconst uint header_width=0)
  {
   uint   w=0;
   string header="";
   double value=0;
   
//--- ottenere il simbolo dell'ordine e il numero di decimali per il simbolo
   string symbol = HistoryOrderGetString(ticketORDER_SYMBOL);
   int    digits = (int)SymbolInfoInteger(symbolSYMBOL_DIGITS);
   
//--- definire il testo dell'intestazione e la larghezza del campo dell'intestazione
//--- se la larghezza dell'intestazione viene passata alla funzione uguale a zero, allora la larghezza sarà la dimensione della riga dell'intestazione + 1
   header="Volume initial:";
   w=(header_width==0 ? header.Length()+1 : header_width);
//--- ottenere e visualizzare nel journal il volume iniziale quando si effettua un ordine con un'intestazione della larghezza specificata
   if(!HistoryOrderGetDouble(ticketORDER_VOLUME_INITIALvalue))
      return;
   PrintFormat("%-*s%-.2f"wheadervalue);
   
//--- visualizzare il volume dell'ordine non evaso nel journal
   header="Volume current:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticketORDER_VOLUME_CURRENTvalue))
      return;
   PrintFormat("%-*s%-.2f"wheadervalue);
   
//--- visualizzare il prezzo, specificato nell'ordine, nel journal
   header="Price open:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticketORDER_PRICE_OPENvalue))
      return;
   PrintFormat("%-*s%-.*f"wheaderdigitsvalue);
   
//--- visualizzare il livello dello StopLoss nel journal
   header="StopLoss:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticketORDER_SLvalue))
      return;
   PrintFormat("%-*s%-.*f"wheaderdigitsvalue);
 
//--- visualizzare il livello del TakeProfit nel journal
   header="TakeProfit:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticketORDER_TPvalue))
      return;
   PrintFormat("%-*s%-.*f"wheaderdigitsvalue);
 
//--- visualizzare il prezzo corrente tramite simbolo dell'ordine nel journal
   header="Price current:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticketORDER_PRICE_CURRENTvalue))
      return;
   PrintFormat("%-*s%-.*f"wheaderdigitsvalue);
 
//--- visualizzare nel journal il prezzo dell'ordine StopLimit, quando l'ordine StopLimit viene attivato
   header="StopLimit:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticketORDER_PRICE_STOPLIMITvalue))
      return;
   PrintFormat("%-*s%-.*f"wheaderdigitsvalue);
  }
//+------------------------------------------------------------------+
//| Restituire la descrizione del tipo di ordine                     |
//+------------------------------------------------------------------+
string OrderTypeDescription(const ENUM_ORDER_TYPE type)
  {
   switch(type)
     {
      case ORDER_TYPE_BUY              :  return("Buy");
      case ORDER_TYPE_SELL             :  return("Sell");
      case ORDER_TYPE_BUY_LIMIT        :  return("Buy Limit");
      case ORDER_TYPE_SELL_LIMIT       :  return("Sell Limit");
      case ORDER_TYPE_BUY_STOP         :  return("Buy Stop");
      case ORDER_TYPE_SELL_STOP        :  return("Sell Stop");
      case ORDER_TYPE_BUY_STOP_LIMIT   :  return("Buy Stop Limit");
      case ORDER_TYPE_SELL_STOP_LIMIT  :  return("Sell Stop Limit");
      default                          :  return("Unknown order type");
     }
  }

Vedi anche

HistorySelect(), HistoryOrdersTotal(), HistoryOrderSelect(), Proprietà Ordini