PositionGetString

La funzione restituisce la proprietà richiesta di una posizione aperta, preselezionata usando PositionGetSymbol o PositionSelect. La proprietà della posizione deve essere di tipo stringa. Ci sono 2 varianti della funzione.

1. Restituisce immediatamente il valore della proprietà.

string  PositionGetString(
   ENUM_POSITION_PROPERTY_STRING  property_id      // Identificativo della proprietà
   );

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

bool  PositionGetString(
   ENUM_POSITION_PROPERTY_STRING  property_id,     // Identificativo della proprietà
   string&                        string_var       // Qui si accetta il valore della proprietà
   );

Parametri

property_id

[in] Identificativo della proprietà della posizione. Il valore può essere uno dei valori dell'enumerazione ENUM_POSITION_PROPERTY_STRING.

string_var

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

Valore restituito

Valore di tipo string. Se la funzione fallisce, viene restituita una stringa vuota.

Nota

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 dei nuovi dati sulla posizione, si raccomanda di chiamare PositionSelect() giusto prima di fare riferimento ad essi.

Esempio:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- in un ciclo per tutte le posizioni del conto
   int total=PositionsTotal();
   for(int i=0i<totali++)
     {
      //--- ottenere il ticket della posizione successiva selezionando automaticamente una posizione per accedere alle sue proprietà
      ulong ticket=PositionGetTicket(i);
      if(ticket==0)
         continue;
      
      //--- ottenere il tipo di posizione e visualizzare l'intestazione per la lista delle proprietà stringa di posizione
      string type=(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE ? "Buy" : "Sell");
      PrintFormat("String properties of an open position %s #%I64u:"typeticket);
      
      //--- stampare tutte le proprietà stringa della posizione selezionata sotto l'intestazione
      PositionPropertiesStringPrint(15);
     }
   /*
   risultato:
   String properties of an open position Buy #2810798881:
   Symbol:        EURUSD
   Comment:       Test PositionGetString
   External ID:   
   */
  }
//+----------------------------------------------------------------------------------------------------+
//| Visualizzare le proprietà stringa della posizione selezionata nel journal                          |
//+----------------------------------------------------------------------------------------------------+
void PositionPropertiesStringPrint(const uint header_width=0)
  {
   uint   w=0;
   string header="";
   string value="";
   
//--- 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="Symbol:";
   w=(header_width==0 ? header.Length()+1 : header_width);
//--- ottenere e visualizzare il simbolo della posizione con la larghezza dell'intestazione specificata nel journal
   if(!PositionGetString(POSITION_SYMBOLvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- visualizzare il commento della posizione nel journal
   header="Comment:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!PositionGetString(POSITION_COMMENTvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- visualizzare l'ID della posizione in un sistema esterno nel journal
   header="External ID:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!PositionGetString(POSITION_EXTERNAL_IDvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
  }

Vedi anche

PositionGetSymbol(), PositionSelect(), Proprietà delle Posizioni