HistoryOrderGetInteger

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

1. Restituisce immediatamente il valore della proprietà.

long  HistoryOrderGetInteger(
   ulong                        ticket_number,     // Ticket
   ENUM_ORDER_PROPERTY_INTEGER  property_id        // Property identifier
   );

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  HistoryOrderGetInteger(
   ulong                        ticket_number,     // Ticket
   ENUM_ORDER_PROPERTY_INTEGER  property_id,       // Proprietà Identificatore
   long&                        long_var           // Qui si accetta il valore della proprietà
   );

Parametri

ticket_number

[in]  Order ticket.

property_id

[in] Identificatore della proprietà dell'ordine. Il valore può essere uno dei valori dell' enumerazione ENUM_ORDER_PROPERTY_INTEGER.

long_var

[out] Variabile di tipo long che accetta il valore della proprietà richiesta.

Valore restituito

Valore di tipo long.

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:

//+--------------------------------------------------------------------------------+
//| Funzione di Trade                                                              |
//+--------------------------------------------------------------------------------+
void OnTrade()
  {
//--- riceve i ticket dell'ultimo ordine dalla cronistoria di trading della settimana
   ulong last_order=GetLastOrderTicket();
   if(HistoryOrderSelect(last_order))
     {
      //--- orario di esecuzione dell'ordine in millisecondi dal 01.01.1970
      long time_setup_msc=HistoryOrderGetInteger(last_order,ORDER_TIME_SETUP_MSC);
      PrintFormat("Ordine #%d ORDER_TIME_SETUP_MSC=%i64 => %s",
                  last_order,time_setup_msc,TimeToString(time_setup_msc/1000));
      //--- orario di esecuzione/annullamento dell'ordine, in millisecondi dal 01.01.1970
      long  time_done_msc=HistoryOrderGetInteger(last_order,ORDER_TIME_DONE_MSC);
      PrintFormat("Ordine #%d ORDER_TIME_DONE_MSC=%i64 => %s",
                  last_order,time_done_msc,TimeToString(time_done_msc/1000));
     }
   else // notifica di fallimento
      PrintFormat("HistoryOrderSelect() fallito per #%d. Codice Errore=%d",
                  last_order,GetLastError());
 
//---
  }
//+--------------------------------------------------------------------------------+
//| Restituisce il ticket dell'ultimo ordine nella cronistoria oppure -1           |
//+--------------------------------------------------------------------------------+
ulong GetLastOrderTicket()
  {
//--- richiede la cronistoria per gli ultimi 7 giorni
   if(!GetTradeHistory(7))
     {
      //--- notifica sull'insuccesso della chiamata e restituisce -1
      Print(__FUNCTION__," HistorySelect() ha restituito false");
      return -1;
     }
//--- 
   ulong first_order,last_order,orders=HistoryOrdersTotal();
//--- lavora con gli ordini se ce ne sono
   if(orders>0)
     {
      Print("Ordini = ",orders);
      first_order=HistoryOrderGetTicket(0);
      PrintFormat("primo_ordine = %d",first_order);
      if(orders>1)
        {
         last_order=HistoryOrderGetTicket((int)orders-1);
         PrintFormat("ultimo_ordine = %d",last_order);
         return last_order;
        }
      return first_order;
     }
//--- nessun ordine trovato, restituisco -1
   return -1;
  }
//+-----------------------------------------------------------------------------------------+
//| Richiede la cronistoria per gli ultimi giorni e restituisce false in caso di fallimento |
//+-----------------------------------------------------------------------------------------+
bool GetTradeHistory(int days)
  {
//--- imposta il periodo di una settimana per richiedere la cronistoria di trading
   datetime to=TimeCurrent();
   datetime from=to-days*PeriodSeconds(PERIOD_D1);
   ResetLastError();
//---- fa una richiesta e controlla il risultato
   if(!HistorySelect(from,to))
     {
      Print(__FUNCTION__," HistorySelect=false. Error code=",GetLastError());
      return false;
     }
//--- cronitoria ricevuta con successo
   return true;
  }

Vedi anche

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