A Estrutura para Retornar Preços Correntes (MqlTick)

Esta é uma estrutura para armazenar os últimos preços do ativo. Ela é projetada para recuperação rápida da maioria das informações solicitadas sobre preços correntes.

struct MqlTick
  {
   datetime     time;          // Hora da última atualização de preços
   double       bid;           // Preço corrente de venda
   double       ask;           // Preço corrente de compra
   double       last;          // Preço da última operação (preço último)
   ulong        volume;        // Volume para o preço último corrente
   long         time_msc;      // Tempo do "Last" preço atualizado em  milissegundos
   uint         flags;         // Flags de tick 
   double       volume_real;   // Volume para o preço Last atual com maior precisão
  };

A variável do tipo MqlTick permite obter valores de Preço de Compra, Preço de Venda, Preço Último e Volume com uma única chamada da função SymbolInfoTick().

Os parâmetros de cada tick são preenchidos independentemente se existem alterações comparadas com o tick anterior. Assim, é possível descobrir o preço correto para qualquer momento no passado, sem a necessidade de procurar os valores anteriores do histórico do tick. Por exemplo, mesmo que apenas altere o preço Bid durante a chegada do tick, a estrutura ainda contém outros parâmetros, bem como incluindo o preço Ask anterior, volume, etc.

Você pode analisar as flags dos ticks para descobrir quais dados foram alterados exatamente:

  • TICK_FLAG_BID — tick alterou o preço Bid
  • TICK_FLAG_ASK  — tick alterou o preço Ask
  • TICK_FLAG_LAST — tick alterou o último preço da oferta
  • TICK_FLAG_VOLUME — tick alterou o volume
  • TICK_FLAG_BUY — tick é resultado de uma compra
  • TICK_FLAG_SELL — tick é resultado de uma venda

Exemplo:

void OnTick()
  {
   MqlTick last_tick;
//---
   if(SymbolInfoTick(Symbol(),last_tick))
     {
      Print(last_tick.time,": Bid = ",last_tick.bid,
            " Ask = ",last_tick.ask,"  Volume = ",last_tick.volume);
     }
   else Print("SymbolInfoTick() falhou, erro = ",GetLastError());
//---
  }

Também Veja

Estruturas e Classes, CopyTicks(), SymbolInfoTick()