HistoryOrderGetString

Retorna a propriedade solicitada de uma ordem. A propriedade da ordem deve ser do tipo string. Existem 2 variantes da função.

1. Imediatamente retorna o valor da propriedade.

string  HistoryOrderGetString(
   ulong                       ticket_number,     // Ticket (bilhete)
   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  HistoryOrderGetString(
   ulong                       ticket_number,     // Ticket (bilhete)
   ENUM_ORDER_PROPERTY_STRING  property_id,       // Identificador de propriedade
   string&                     string_var         // Aqui nós aceitamos o valor de propriedade
   );

Parâmetros

ticket_number

[in]  Ticket da ordem.

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 do tipo string.

Valor retornado

Valor do tipo string.

Observação

Não confunda as ordens do histórico de negociação com as ordens pendentes que aparecem no separador "Comércio (Trade) da barra de "caixa de ferramentas" (Toolbox). A lista de ordens que foram cancelados ou levaram a uma transação, pode ser visto na aba "Histórico" da "caixa de ferramentas" do terminal do cliente.

Exemplo:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- solicitamos o histórico de operações e ordens
   if(!HistorySelect(0TimeCurrent()))
     {
      Print("HistorySelect() failed. Error "GetLastError());
      return;
     }
     
//--- em um loop pela lista de todos os pedidos históricos da conta
   int total=HistoryOrdersTotal();
   for(int i=0i<totali++)
     {
      //--- obtemos a ordem dos tickets na lista por índice de loop
      ulong ticket=HistoryOrderGetTicket(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)HistoryOrderGetInteger(ticketORDER_TYPE));
      PrintFormat("String properties of an history order %s #%I64u:"typeticket);
      
      //--- imprimimos todas as propriedades de string da ordem selecionada sob o cabeçalho
      HistoryOrderPropertiesStringPrint(ticket16);
     }
   /*
   Resultado:
   String properties of an history order Buy #2646074112:
   Comment:        [tp 1.09137]
   Symbol:         EURUSD
   External ID:    
   String properties of an history order Buy #2646131906:
   Comment:        
   Symbol:         EURUSD
   External ID:    
   */
  }
//+------------------------------------------------------------------+
//| Imprime no log as propriedades de string                         |
//| da ordem histórica escolhida                                     |
//+------------------------------------------------------------------+
void HistoryOrderPropertiesStringPrint(const long ticketconst 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="Comment:";
   w=(header_width==0 ? header.Length()+1 : header_width);
//--- recebemos e imprimimos no log um comentário com um cabeçalho da largura definida
   if(!HistoryOrderGetString(ticketORDER_COMMENTvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- imprimimos no log o símbolo com o qual a ordem foi colocada
   header="Symbol:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetString(ticketORDER_SYMBOLvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- imprimimos no log o identificador da ordem no sistema externo
   header="External ID:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetString(ticketORDER_EXTERNAL_IDvalue))
      return;
   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

HistorySelect(), HistoryOrdersTotal(), HistoryOrderSelect(), Propriedades de uma Ordem