OrderGetInteger

Restituisce la proprietà richiesta di un ordine, preselezionato utilizzando OrderGetTicket o OrderSelect. Le proprietà degli ordini devono essere di tipo datetime, int. Ci sono 2 varianti della funzione.

1. Restituisce immediatamente il valore della proprietà.

long  OrderGetInteger(
   ENUM_ORDER_PROPERTY_INTEGER  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  OrderGetInteger(
   ENUM_ORDER_PROPERTY_INTEGER  property_id,       // Identificativo della proprietà
   long&                        long_var           // Qui si accetta il valore della proprietà
   );

Parametri

property_id

[in] Identificativo 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 del tipo long. Se la funzione fallisce, viene restituito 0.

Nota

Non confondere i correnti ordini pendenti con le posizioni, che sono anche visualizzati nella scheda "Trade" del "BoxAttrezzi" del terminale client.

Per l'interpretazione "netting" delle posizioni (ACCOUNT_MARGIN_MODE_RETAIL_NETTING e ACCOUNT_MARGIN_MODE_EXCHANGE), può esistere in qualsiasi momento una sola posizione per un simbolo. Questa posizione è il risultato di una o più operazioni. Non confondere le posizioni con gli ordini pendenti vigenti, che sono anche visualizzati nella scheda Trading della finestra BoxAttrezzi.

Se sono ammesse posizioni individuali (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING), per un simbolo possono essere aperte più posizioni.

Per garantire la ricezione di nuovi dati su un ordine, si consiglia di chiamare OrderSelect() giusto prima di fare riferimento ad essi.

Esempio:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- in un ciclo dalla lista di tutti gli ordini del conto
   int total=OrdersTotal();
   for(int i=0i<totali++)
     {
      //--- ottenere il ticket dell'ordine nella lista tramite l'indice del ciclo
      ulong ticket=OrderGetTicket(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)OrderGetInteger(ORDER_TYPE));
      PrintFormat("Integer properties of an active pending order %s #%I64u:"typeticket);
      
      //--- stampa tutte le proprietà integer dell'ordine selezionato sotto l'intestazione
      OrderPropertiesIntegerPrint(17);
     }
   /*
   risultato:
   Integer properties of an active pending order Buy Limit #2812945317:
   Ticket:          2812945317
   Time setup:      2024.09.04 19:17:16
   Type:            Buy Limit
   State:           Placed
   Time expiration0
   Time done:       0
   Time setup msc:  2024.09.04 19:17:16.686
   Time done msc:   0
   Type filling:    Return
   Type time:       Time GTC
   Magic:           0
   Reason:          Client
   Position ID:     0
   Position By ID:  0
   */
  }
//+------------------------------------------------------------------------------------------+
//| Visualizza le proprietà integer dell'ordine selezionato nel journal                      |
//+------------------------------------------------------------------------------------------+
void OrderPropertiesIntegerPrint(const uint header_width=0)
  {
   uint   w=0;
   string header="";
   long   value=0;
   
//--- visualizzare il ticket dell'ordine nel journal
   OrderPropertyPrint("Ticket:"header_widthORDER_TICKET);
   
//--- visualizzare l'ora di inserimento dell'ordine nel journal
   OrderPropertyPrint("Time setup:"header_widthORDER_TIME_SETUP);
   
//--- visualizzare il tipo di ordine nel journal
   OrderPropertyPrint("Type:"header_widthORDER_TYPE);
   
//--- visualizzare lo stato dell'ordine nel journal
   OrderPropertyPrint("State:"header_widthORDER_STATE);
   
//--- visualizzare l'ora della scadenza dell'ordine nel journal
   OrderPropertyPrint("Time expiration:"header_widthORDER_TIME_EXPIRATION);
   
//--- visualizzare l'ora di esecuzione/scadenza nel journal
   OrderPropertyPrint("Time done:"header_widthORDER_TIME_DONE);
   
//--- visualizzare l'ora di immissione di un ordine per l'esecuzione in millisecondi dal 01.01.1970 nel journal
   OrderPropertyPrint("Time setup msc:"header_widthORDER_TIME_SETUP_MSC);
   
//--- visualizzare lora dell'esecuzione/scadenza di un ordine in millisecondi dal 01.01.1970 nel journal
   OrderPropertyPrint("Time done msc:"header_widthORDER_TIME_DONE_MSC);
   
//--- visualizzare il tipo di esecuzione per residuo nel journal
   OrderPropertyPrint("Type filling:"header_widthORDER_TYPE_FILLING);
   
//--- visualizzare la durata dell'ordine nel journal
   OrderPropertyPrint("Type time:"header_widthORDER_TYPE_TIME);
   
//--- visualizzare l'ID dell'EA, che ha effettuato un ordine, nel journal
   OrderPropertyPrint("Magic:"header_widthORDER_MAGIC);
   
//--- visualizzare il motivo o la fonte dell'ordine nel journal
   OrderPropertyPrint("Reason:"header_widthORDER_REASON);
   
//--- visualizzare l'ID della posizione, impostata sull'ordine durante la sua esecuzione, nel journal
   OrderPropertyPrint("Position ID:"header_widthORDER_POSITION_ID);
   
//--- visualizzare l'ID della posizione opposta per gli ordini di tipo ORDER_TYPE_CLOSE_BY nel journal
   OrderPropertyPrint("Position By ID:"header_widthORDER_POSITION_BY_ID);
  }
//+---------------------------------------------------------------------------------------------+
//| Visualizzare il valore della proprietà integer dell'ordine nel journal                      |
//+---------------------------------------------------------------------------------------------+
void OrderPropertyPrint(const string headeruint header_widthENUM_ORDER_PROPERTY_INTEGER property)
  {
   string svalue="";
   long   lvalue=0;
   if(!OrderGetInteger(propertylvalue))
      PrintFormat("Cannot get property %s, error=%d"EnumToString(property), GetLastError());
   else
     {
      switch(property)
        {
         case ORDER_TICKET          :
         case ORDER_MAGIC           :
         case ORDER_POSITION_ID     :
         case ORDER_POSITION_BY_ID  :
           svalue=(string)lvalue;
           break;
           
         case ORDER_TIME_SETUP      :
         case ORDER_TIME_EXPIRATION :
         case ORDER_TIME_DONE       :
           svalue=(lvalue!=0 ? TimeToString((datetime)lvalueTIME_DATE|TIME_MINUTES|TIME_SECONDS) : "0");
           break;
           
         case ORDER_TIME_SETUP_MSC  :
         case ORDER_TIME_DONE_MSC   :
           svalue=(lvalue!=0 ? TimeMscToString(lvalue) : "0");
           break;
           
         case ORDER_TYPE            :
           svalue=OrderTypeDescription((ENUM_ORDER_TYPE)lvalue);
           break;
         case ORDER_STATE           :
           svalue=OrderStateDescription((ENUM_ORDER_STATE)lvalue);
           break;
         case ORDER_TYPE_FILLING    :
           svalue=OrderTypeFillingDescription((ENUM_ORDER_TYPE_FILLING)lvalue);
           break;
         case ORDER_TYPE_TIME       :
           svalue=OrderTypeTimeDescription((ENUM_ORDER_TYPE_TIME)lvalue);
           break;
         case ORDER_REASON          :
           svalue=OrderReasonDescription((ENUM_ORDER_REASON)lvalue);
           break;
         
         default                    :
           svalue="Unknown property";
           break;
        }
      
      //--- se la larghezza dell'intestazione passata alla funzione è uguale a zero, allora la larghezza sarà la dimensione della riga dell'intestazione + 1
      uint w=(header_width==0 ? header.Length()+1 : header_width);
      PrintFormat("%-*s%-s"wheadersvalue);
     }
  }
//+------------------------------------------------------------------+
//| 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: "+(string)type);
     }
  }
//+------------------------------------------------------------------+
//| Restituire la descrizione dello stato dell'ordine                |
//+------------------------------------------------------------------+
string OrderStateDescription(ENUM_ORDER_STATE state)
  {
   switch(state)
     {
      case ORDER_STATE_STARTED         :  return("Started");
      case ORDER_STATE_PLACED          :  return("Placed");
      case ORDER_STATE_CANCELED        :  return("Canceled");
      case ORDER_STATE_PARTIAL         :  return("Partial");
      case ORDER_STATE_FILLED          :  return("Filled");
      case ORDER_STATE_REJECTED        :  return("Rejected");
      case ORDER_STATE_EXPIRED         :  return("Expired");
      case ORDER_STATE_REQUEST_ADD     :  return("Request Add");
      case ORDER_STATE_REQUEST_MODIFY  :  return("Request Modify");
      case ORDER_STATE_REQUEST_CANCEL  :  return("Request Cancel");
      default                          :  return("Unknown state: "+(string)state);
     }
  }
//+------------------------------------------------------------------------------------------------------------+
//| Restituire la descrizione della politica di inserimento del volume dell'ordine                             |
//+------------------------------------------------------------------------------------------------------------+
string OrderTypeFillingDescription(const ENUM_ORDER_TYPE_FILLING type)
  {
   switch(type)
     {
      case ORDER_FILLING_FOK     :  return("Fill or Kill");
      case ORDER_FILLING_IOC     :  return("Immediate or Cancel");
      case ORDER_FILLING_BOC     :  return("Book or Cancel");
      case ORDER_FILLING_RETURN  :  return("Return");
      default                    :  return("Unknown type filling: "+(string)type);
     }
  }
//+------------------------------------------------------------------------------------+
//| Restituire la descrizione della data di scadenza dell'ordine                       |
//+------------------------------------------------------------------------------------+
string OrderTypeTimeDescription(const ENUM_ORDER_TYPE_TIME type)
  {
   switch(type)
     {
      case ORDER_TIME_GTC           :   return("Time GTC");
      case ORDER_TIME_DAY           :   return("Time Day");
      case ORDER_TIME_SPECIFIED     :   return("Time Specified");
      case ORDER_TIME_SPECIFIED_DAY :   return("Time Specified Day");
      default                       :  return("Unknown type time: "+(string)type);
     }
  }
//+------------------------------------------------------------------------------------------+
//| Restituire la descrizione del motivo del piazzamento dell'ordine                         |
//+------------------------------------------------------------------------------------------+
string OrderReasonDescription(const ENUM_ORDER_REASON reason)
  {
   switch(reason)
     {
      case ORDER_REASON_CLIENT   :  return("Client");
      case ORDER_REASON_MOBILE   :  return("Mobile");
      case ORDER_REASON_WEB      :  return("Web");
      case ORDER_REASON_EXPERT   :  return("Expert");
      case ORDER_REASON_SL       :  return("Stop Loss");
      case ORDER_REASON_TP       :  return("Take Profit");
      case ORDER_REASON_SO       :  return("Stop Out");
      default                    :  return("Unknown reason: "+(string)reason);
     }
  }
//+------------------------------------------------------------------+
//| Restituisce il tempo con millisecondi                            |
//+------------------------------------------------------------------+
string TimeMscToString(const long time_mscint flags=TIME_DATE|TIME_MINUTES|TIME_SECONDS)
  {
   return(TimeToString(time_msc/1000flags) + "." + IntegerToString(time_msc %10003, '0'));
  }

Vedi anche

OrdersTotal(), OrderGetTicket(), Proprietà degli Ordini