Estructura para obtención de precios actuales (MqlTick)

Es la estructura para almacenar los últimos precios del símbolo. Sirve para recibir de una manera rápida la información más solicitada sobre los precios corrientes.

struct MqlTick
  {
   datetime     time;          // Hora de la última actualización de precios
   double       bid;           // Precio actual Bid
   double       ask;           // Precio actual Ask
   double       last;          // Precio actual de la última transacción (Last)
   ulong        volume;        // Volumen para el precio actual Last
   long         time_msc;      // Hora de la última actualización de los precios en milisegundos
   uint         flags;         // Banderas de los tics
   double       volume_real;   // Volumen para el precio actual Last con precisión aumentada
  };

La variable del tipo MqlTick permite obtener los valores Ask, Bid, Last y Volume sólo con una llamada a la función SymbolInfoTick().

Todos los parámetros de cada tic siempre se llenan, independientemente de si han cambiado los datos en comparación con el tic anterior. Esto permite tener siempre el estado actual de los precios en cualquier momento, sin buscar los valores anteriores en la historia de tics. Por ejemplo, con el tic solo ha podido cambiar el precio bid, pero en la estructura, aparte del nuevo precio, se mostrarán también todos los demás parámetros: el precio anterior ask, el volumen, etcétera.

Para saber qué datos precisamente han cambiado con el tic actual, analice sus banderas:

  • TICK_FLAG_BID — el tic ha cambiado el precio bid
  • TICK_FLAG_ASK  — el tic ha cambiado el precio ask
  • TICK_FLAG_LAST — el tic ha cambiado el precio de la última transacción
  • TICK_FLAG_VOLUME — el tic ha cambiado el volumen
  • TICK_FLAG_BUY — el tic ha aparecido como resultado de una transacción de compra
  • TICK_FLAG_SELL — el tic ha aparecido como resultado de una transacción de venta

Ejemplo:

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() failed, error = ",GetLastError());
//---
  }

Véase también

Estructuras y clases, CopyTicks(), SymbolInfoTick()