OrderGetString

Retorna a propriedade solicitada de uma ordem, previamente selecionada usando OrderGetTicket ou OrderSelect. A propriedade da ordem deve ser do tipo string. Existem 2 variantes da função.

1. Imediatamente retorna o valor da propriedade.

string  OrderGetString(
   ENUM_ORDER_PROPERTY_STRING  property_id        // Identificador de propriedade
   );

2. A função vai retornar "true" ou "false", dependendo se deu certo ou não. Se der certo, o valor da propriedade será passado por referência para uma variável de destino, que você define no último parâmetro.

bool  OrderGetString(
   ENUM_ORDER_PROPERTY_STRING  property_id,       // Identificador de propriedade
   string&                     string_var         // Aqui nós aceitamos o valor de propriedade
   );

Parâmetros

property_id

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

string_var

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

Valor retornado

Valor do tipo string.

Observação

Não confunda ordens pendentes com posições, que também são exibidos na aba "negócios" da "caixa de ferramentas" do terminal do cliente.

Ao usar o registro de posições com "cobertura" (ACCOUNT_MARGIN_MODE_RETAIL_NETTING e ACCOUNT_MARGIN_MODE_EXCHANGE), para cada símbolo, em qualquer momento, pode estar aberta apenas a posição que resulte de uma ou mais operações. Não confunda as posições com as ordens pendentes ativas que aparecem na aba "Negociação" da janela "Caixa de ferramentas".

Ao usar a exibição independente de posições (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING), pode haver várias posições abertas ao mesmo tempo para cada símbolo.

Para garantir que os dados da posição estejam atualizados, é recomendável chamar OrderSelect() logo antes de acessá-los.

Exemplo:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- no loop pela lista de todas as ordens na conta
   int total=OrdersTotal();
   for(int i=0i<totali++)
     {
      //--- obtemos a ordem dos tickets na lista por índice de loop
      ulong ticket=OrderGetTicket(i);
      if(ticket==0)
         continue;
      
      //--- obtemos o tipo de ordem e geramos o cabeçalho da lista de propriedades de string da ordem selecionada
      string type=OrderTypeDescription((ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE));
      PrintFormat("String properties of an active pending order %s #%I64u:"typeticket);
      
      //--- imprimimos todas as propriedades de string da ordem selecionada sob o cabeçalho
      OrderPropertiesStringPrint(13);
     }
   /*
   Resultado:
   String properties of an active pending order Sell Limit #2813781342:
   Comment:     Test OrderGetString
   Symbol:      EURUSD
   External ID
   */
  }
//+------------------------------------------------------------------+
//| Imprime no log as propriedades de string da ordem selecionada    |
//+------------------------------------------------------------------+
void OrderPropertiesStringPrint(const uint header_width=0)
  {
//--- imprimimos no log o comentário
   OrderPropertyPrint("Comment:"header_widthORDER_COMMENT);
   
//--- imprimimos no log o símbolo com o qual a ordem foi colocada
   OrderPropertyPrint("Symbol:"header_widthORDER_SYMBOL);
   
//--- imprimimos no log o identificador da ordem no sistema externo
   OrderPropertyPrint("External ID:"header_widthORDER_EXTERNAL_ID);
  }
//+------------------------------------------------------------------+
//| Imprime no log o valor da propriedade de string da ordem         |
//+------------------------------------------------------------------+
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 a largura do cabeçalho passada para a função for zero, a largura será o tamanho da string do cabeçalho + 1
      uint w=(header_width==0 ? header.Length()+1 : header_width);
      PrintFormat("%-*s%-s"wheadervalue);
     }
  }
//+------------------------------------------------------------------+
//| Retorna a descrição do tipo de ordem                             |
//+------------------------------------------------------------------+
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);
     }
  }

Também Veja

OrdersTotal(), OrderGetTicket(), Propriedades de uma Ordem