La Structure pour Retourner les Prix Courants (MqlTick)

C'est la structure pour le stockage des derniers prix du symbole. Elle est conçue pour récupérer rapidement les informations les plus courantes des prix.

struct MqlTick
  {
   datetime     time;          // Heure de la dernière mise à jour des prix
   double       bid;           // Prix Bid actuel
   double       ask;           // Prix Ask actuel
   double       last;          // Prix de la dernière transaction (Last)
   ulong        volume;        // Volume pour le prix Last actuel
   long         time_msc;      // Heure de la dernière mise à jour du prix en millisecondes
   uint         flags;         // Flags du tick
   double       volume_real;   // Volume for the current Last price with greater accuracy
  };

La variable de type MqlTick permet d'obtenir les valeurs Ask, Bid, Last et Volume avec un seul appel à la fonction SymbolInfoTick().

Les paramètres de chaque tick sont remplis indépendemment du fait de changements ou pas par rapport au dernier tick. Il est donc possible d'avoir un prix correct à tout moment dans le passé sans avoir besoin de rechercher les valeurs précédentes dans l'historique des ticks. Par exemple, même si seul le prix Bid change à l'arrivée d'un tick, la structure contient toujours les autres paramètres, incluant le dernier prix Ask, le dernier volume, etc.

Vous pouvez analyser les flags du tick pour savoir exactement quelles données ont été changées :

  • TICK_FLAG_BID —  le tick a changé le prix Bid
  • TICK_FLAG_ASK  — le tick a changé le prix Ask
  • TICK_FLAG_LAST — le tick a changé le prix Last
  • TICK_FLAG_VOLUME — le tick a changé le volume
  • TICK_FLAG_BUY — le tick est le résultat d'une transaction d'achat
  • TICK_FLAG_SELL — le tick est le résultat d'une transaction de vente

Exemple :

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("Echec de SymbolInfoTick(), erreur = ",GetLastError());
//---
  }

Voir aussi

Structures et Classes, CopyTicks(), SymbolInfoTick()