返回当前价格结构 (MqlTick)

该构造是存储交易类型的最新价位,它能最快检索有关当前价格的最需要信息。

struct MqlTick
  {
   datetime     time;          // 价格更新的最近时间
   double       bid;           // 当前卖价
   double       ask;           // 当前买价
   double       last;          // 最后交易的价格(Last)
   ulong        volume;        // 当前最后价格的交易量
   long         time_msc;      // 价格最后一次更新的时间,以毫秒计算
   uint         flags;         // 报价标识
   double       volume_real;   // 精确度更高的当前最后价格的交易量
  };

通过单一调用 SymbolInfoTick() 函数,MqlTick type 变量允许获得要价, 开价, 最后价和成交量的值。

无论与之前报价相比是否有变化都会填充每个报价参数。因此,可以找出过去任何时刻的正确价格,无需在报价历史搜索之前的值。例如,即使报价到达期间只有卖价变化,该结构仍然包含其他参数,包括之前的买价,交易量等等。

您可以分析报价标识,找出具体更改了哪个数据:

  • TICK_FLAG_BID – 更改卖价
  • TICK_FLAG_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()