HistoryOrderGetInteger

Retorna a propriedade solicitada de uma ordem. A propriedade de operação deve ser de tipo datetime, int. Existem 2 variantes da função.

1. Imediatamente retorna o valor da propriedade.

long  HistoryOrderGetInteger(
   ulong                        ticket_number,     // Ticket (bilhete)
   ENUM_ORDER_PROPERTY_INTEGER  property_id        // Identificador de propriedade
   );

2. Retorna true ou false dependendo do sucesso da função. Se for bem sucedido, o valor da propriedade está situada dentro de uma variável de destino passado por referência pelo último parâmetro.

bool  HistoryOrderGetInteger(
   ulong                        ticket_number,     // Ticket (bilhete)
   ENUM_ORDER_PROPERTY_INTEGER  property_id,       // Identificador de propriedade
   long&                        long_var           // Aqui nós aceitamos o valor da propriedade
   );

Parâmetros

ticket_number

[in]  Ticket de ordem.

property_id

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

long_var

[out]  Variável do tipo long que aceita o valor da propriedade requerida.

Valor do Retorno

Valor do tipo long.

Observação

Não confundir ordens de um 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:

//+------------------------------------------------------------------+
//| Função Trade                                                     |
//+------------------------------------------------------------------+
void OnTrade()
  {
//--- receber ticket da última ordem do histórico comercial da semana
   ulong last_order=GetLastOrderTicket();
   if(HistoryOrderSelect(last_order))
     {
      //--- tempo de colocar um ordem em milissegundos desde 01.01.1970
      long time_setup_msc=HistoryOrderGetInteger(last_order,ORDER_TIME_SETUP_MSC);
      PrintFormat("Ordem #%d ORDER_TIME_SETUP_MSC=%i64 => %s",
                  last_order,time_setup_msc,TimeToString(time_setup_msc/1000));
      //--- execução/cancelamento de ordens em milissegundos desde 01.01.1970
      long  time_done_msc=HistoryOrderGetInteger(last_order,ORDER_TIME_DONE_MSC);
      PrintFormat("Ordem #%d ORDER_TIME_DONE_MSC=%i64 => %s",
                  last_order,time_done_msc,TimeToString(time_done_msc/1000));
     }
   else // notificação sobre falha
      PrintFormat("HistoryOrderSelect() falhou por #%d. Código de erro=%d",
                  last_order,GetLastError());
 
//---
  }
//+------------------------------------------------------------------+
//| Retorna o último ticket de ordem em histórico ou -1              |
//+------------------------------------------------------------------+
ulong GetLastOrderTicket()
  {
requisita o histórico para os últimos 7 dias
   if(!GetTradeHistory(7))
     {
      //--- notificar sobre chamada sem sucesso e retorno -1
      Print(__FUNCTION__," HistorySelect() retornou false");
      return -1;
     }
//--- 
   ulong first_order,last_order,orders=HistoryOrdersTotal();
//--- trabalhar com ordens se houver alguma
   if(orders>0)
     {
      Print("Ordens = ",orders);
      first_order=HistoryOrderGetTicket(0);
      PrintFormat("first_order = %d",first_order);
      if(orders>1)
        {
         last_order=HistoryOrderGetTicket((int)orders-1);
         PrintFormat("last_order = %d",last_order);
         return last_order;
        }
      return first_order;
     }
//--- nenhuma ordem encontrada, retornar -1
   return -1;
  }
//+---------------------------------------------------------------------------------+
//| Solicitações de histórico para os últimos dias e retorna false em caso de falha |
//+---------------------------------------------------------------------------------+
bool GetTradeHistory(int days)
  {
//--- define um período da semana para solicitar histórico da operação
   datetime to=TimeCurrent();
   datetime from=to-days*PeriodSeconds(PERIOD_D1);
   ResetLastError();
//--- fazer um pedido e verificar o resultado
   if(!HistorySelect(from,to))
     {
      Print(__FUNCTION__," HistorySelect=false. Código de erro=",GetLastError());
      return false;
     }
//--- histórico recebido com sucesso
   return true;
  }

Também Veja

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