PositionGetString

A função retorna a propriedade solicitada de uma posição aberta, pré-selecionado usando PositionGetSymbol ou PositionSelect. A propriedade da operação deve ser do tipo string. Existem 2 variantes da função.

1. Imediatamente retorna o valor da propriedade.

string  PositionGetString(
   ENUM_POSITION_PROPERTY_STRING  property_id      // Identificador de propriedade
   );

2. Retorna true ou false dependendo do sucesso da execução da função. Se for bem sucedido, o valor da propriedade é colocada em uma variável de recebimento passada por referência no último parâmetro.

bool  PositionGetString(
   ENUM_POSITION_PROPERTY_STRING  property_id,     // Identificador de propriedade
   string&                    string_var         // Aqui recebemos o valor da propriedade
   );

Parâmetros

property_id

[in]  Identificador da propriedade da operação. O valor pode ser um dos valores da enumeração ENUM_POSITION_PROPERTY_STRING.

string_var

[out]  Variável de tipo string, que aceita o valor da propriedade requerida.

Valor retornado

Valor do tipo string. Se a função falhar, uma string vazia é retornada.

Observação

For the "netting" interpretation of positions (ACCOUNT_MARGIN_MODE_RETAIL_NETTING and ACCOUNT_MARGIN_MODE_EXCHANGE), only one position can exist for a symbol at any moment of time. This position is a result of one or more deals. Do not confuse positions with valid pending orders, which are also displayed on the Trading tab of the Toolbox window.

If individual positions are allowed (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING), multiple positions can be open for one symbol.

Para garantir o recebimento de novos dados sobre a posição, é recomendado chamar PositionSelect() logo antes referindo-se a eles.

Exemplo:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- no loop por todas as posições na conta
   int total=PositionsTotal();
   for(int i=0i<totali++)
     {
      //--- obtemos o ticket da próxima posição, selecionando automaticamente a posição para acessar suas propriedades
      ulong ticket=PositionGetTicket(i);
      if(ticket==0)
         continue;
      
      //--- obtemos o tipo da posição e imprimimos o cabeçalho para a lista de propriedades de string da posição
      string type=(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE ? "Buy" : "Sell");
      PrintFormat("String properties of an open position %s #%I64u:"typeticket);
      
      //--- imprimimos sob o cabeçalho todas as propriedades de string da posição selecionada
      PositionPropertiesStringPrint(15);
     }
   /*
   Resultado:
   String properties of an open position Buy #2810798881:
   Symbol:        EURUSD
   Comment:       Test PositionGetString
   External ID:   
   */
  }
//+------------------------------------------------------------------+
//| Imprime no log as propriedades de string da posição selecionada  |
//+------------------------------------------------------------------+
void PositionPropertiesStringPrint(const uint header_width=0)
  {
   uint   w=0;
   string header="";
   string value="";
   
//--- definimos o texto do cabeçalho e a largura do campo de cabeçalho
//--- se a largura do cabeçalho for passada para a função igual a zero, a largura será o tamanho da linha do cabeçalho + 1
   header="Symbol:";
   w=(header_width==0 ? header.Length()+1 : header_width);
//--- obtemos e imprimimos no log o símbolo da posição com um cabeçalho de largura definida
   if(!PositionGetString(POSITION_SYMBOLvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- imprimimos no log o valor do comentário da posição
   header="Comment:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!PositionGetString(POSITION_COMMENTvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- imprimimos no log o valor do identificador da posição no sistema externo
   header="External ID:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!PositionGetString(POSITION_EXTERNAL_IDvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
  }

Também Veja

PositionGetSymbol(), PositionSelect(), Propriedades de uma Posição