OrderGetString

Restituisce la proprietà richiesta di un ordine, preselezionato utilizzando OrderGetTicket o OrderSelect. La proprietà dell'ordine deve essere di tipo stringa. Ci sono 2 varianti della funzione.

1. Restituisce immediatamente il valore della proprietà.

string  OrderGetString(
   ENUM_ORDER_PROPERTY_STRING  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  OrderGetString(
   ENUM_ORDER_PROPERTY_STRING  property_id,       // Identificativo della proprietà
   string&                     string_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_STRING.

string_var

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

Valore restituito

Valore di tipo stringa.

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à stringa dell'ordine selezionato
      string type=OrderTypeDescription((ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE));
      PrintFormat("String properties of an active pending order %s #%I64u:"typeticket);
      
      //--- stampare tutte le proprietà stringa dell'ordine selezionato sotto l'intestazione
      OrderPropertiesStringPrint(13);
     }
   /*
   risultato:
   String properties of an active pending order Sell Limit #2813781342:
   Comment:     Test OrderGetString
   Symbol:      EURUSD
   External ID
   */
  }
//+----------------------------------------------------------------------------------------------+
//| Visualizzare le proprietà stringa dell'ordine selezionato nel journal                        |
//+----------------------------------------------------------------------------------------------+
void OrderPropertiesStringPrint(const uint header_width=0)
  {
//--- visualizzare il commento nel journal
   OrderPropertyPrint("Comment:"header_widthORDER_COMMENT);
   
//--- visualizzare nel journal un simbolo per il quale è stato effettuato l'ordine
   OrderPropertyPrint("Symbol:"header_widthORDER_SYMBOL);
   
//--- visualizzare l'ID dell'ordine in un sistema esterno nel journal
   OrderPropertyPrint("External ID:"header_widthORDER_EXTERNAL_ID);
  }
//+------------------------------------------------------------------------------------------------+
//| Visualizzare il valore della proprietà stringa dell'ordine nel journal                         |
//+------------------------------------------------------------------------------------------------+
void OrderPropertyPrint(const string headeruint header_widthENUM_ORDER_PROPERTY_STRING property)
  {
   string value="";
   if(!OrderGetString(propertyvalue))
      PrintFormat("Cannot get property %s, error=%d"EnumToString(property), GetLastError());
   else
     {
      //--- 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"wheadervalue);
     }
  }
//+------------------------------------------------------------------+
//| 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);
     }
  }

Vedi anche

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