現在の価格を取得する構造体(MqlTick)

銘柄ごとの最新価格を保存する構造体です。現在の価格についての最もニーズのある情報を取得する為のものです。

struct MqlTick
 {
  datetime   time;         // 最新の価格更新の時間
  double       bid;           // 現在のBid価格
  double       ask;           // 現在のAsk価格
  double       last;         // 最後の取引の現在価格(Last)
  ulong       volume;       // 現在のLast価格の数量
  long         time_msc;     // ミリ秒単位の最新の価格更新の時間
  uint       flags;         // ティックフラグ
  double       volume_real;   // 現在のLast価格のより正確な数量
 };

MqlTick型の変数によって一回のSymbolInfoTick()変数の呼び出しでAsk、Bid、Last、Volumeの値を取得することができます。

各ティックは、前回のティックと比べデータが変わったかどうかに関わらず、いつも全てのパラメータが埋められます。ティックヒストリーで前回の数値を検索することなく、あらゆる瞬間の現在の価格状態をいつも見ることができます。例えば、ティックと共にBid価格だけ変わったが、構造体の中では新しい価格の他に、前回のAsk価格や数量など、他のパラメータも表示されます。

現在のティックのデータとどう変わったかを知るには、そのフラグを分析してください。

  • TICK_FLAG_BID – ティックがBid価格を変更した
  • TICK_FLAG_ASK  – ティックがAsk価格を変更した
  • TICK_FLAG_LAST – ティックが最終取引価格を変更した
  • TICK_FLAG_VOLUME – ティックが数量を変更した
  • TICK_FLAG_BUY – 買い取引の結果ティックが発生した
  • TICK_FLAG_SELL – 売り取引の結果ティックが発生した

例:

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());
//---
 }

こちらもご参照ください

構造体とクラスCopyTicks()SymbolInfoTick()