OnBookEvent ?

 

請教一下 有人可以簡單解釋 OnBookEvent 是甚麼時候會發生嗎

查了英文和中文 幫助檔 還是不太了解 "市場深度改變" 是甚麼意思

還請高手幫忙 謝謝

-------------------------------------------------------------------------------

请教一下 有人可以简单解释 OnBookEvent 是什么时候会发生吗

查了英文和中文 帮助档 还是不太了解 "市场深度改变" 是什么意思 还请高手帮忙 谢谢

 

事件处理方法

 

OnTick

OnTick 事件处理器

OnTrade

OnTrade 事件处理器

OnTimer

OnTimer 事件处理器

OnChartEvent

OnChartEvent 事件处理器

OnBookEvent

OnBookEvent 事件处理器

 

void OnBookEvent(const string &symbol)
  {
   static ulong starttime=0;             // 测试开始时间
   static ulong tickcounter=0;           // 市场深度更新计数器
//--- 只有当我们自己订阅市场深度事件时处理它们
   if(!book_subscribed)
      return;
//--- 只为特定交易品种计算更新
   if(symbol!=_Symbol)
      return;
//--- 跳过第一个报价来清空队列和进行准备
   tickcounter++;
   if(tickcounter<ExtSkipFirstTicks)
      return;
//--- 记住开始时间
   if(tickcounter==ExtSkipFirstTicks
      starttime=GetMicrosecondCount();
//--- 请求市场深度数据
   MarketBookGet(symbol,book);
//--- 什么时候停止?  
   ulong endtime=GetMicrosecondCount()-starttime;
   ulong ticks  =1+tickcounter-ExtSkipFirstTicks;
// 从测试开始以后,已经过去多少毫秒?
   if(endtime>ExtCollectTime*1000*1000) 
     {
      PrintFormat("%I64u ticks for %.1f seconds: %.1f ticks/sec ",ticks,endtime/1000.0/1000.0,ticks*1000.0*1000.0/endtime);
      ExpertRemove();
      return;
     }
//--- 在评论字段中显示计数器
   if(endtime>0)
      Comment(StringFormat("%I64u ticks for %.1f seconds: %.1f ticks/sec ",ticks,endtime/1000.0/1000.0,ticks*1000.0*1000.0/endtime));
  }

 

BookEvent 事件在市场深度改变后通过客户端产生,通过 OnBookEvent函数执行,开始BookEvent程序特定交易对象,有必要通过 MarketBookAdd 函数为该事件订阅交易对象。

为从BookEvent中取消特定的交易品种,调用 MarketBookRelease 函数是有必要的。BookEvent事件是广播类型事件-它表示足以为一个事件订阅一个EA交易,而其他所有EA交易都有OnBookEvent事件,都会接收它。有必要分析交易品种的名称,以一个参量传递处理器。

原因: