以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  MARKETDATA_ReportNotify请教  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=55925)

--  作者:klc
--  发布时间:2013/8/29 11:59:13
--  MARKETDATA_ReportNotify请教

在练习编写vba的高频交易程序,在测试中发现MARKETDATA_ReportNotify好像一个tick调用两次,是不是有什么原因(或者是我用了双数据)?

 

另外,MARKETDATA_ReportNotify的调用是不是阻塞的?就是说一个行情通知中的代码尚未处理完毕,后面的通知是不是会一直排队?如果执行的时间太长,后面的行情tick的排队会不会乱?

我编写的程序,通常每tick的处理时间在0.01秒以内,正常情况下肯定是执行得过来的,但可能在某些关键时候(例如第一个tick进行初始化、或出信号等时候),需要执行6、7秒,那么执行未完成的过程中,后续的tick的通知,是被丢弃了,还是同步调用处理,还是排队等待处理?如果是排队,有没有消息队列长度限制?另外排队会不会先后次序乱掉?


--  作者:王锋
--  发布时间:2013/8/29 12:21:01
--  

1,调用两次很正常的。

2,默认是排队处理的,如果你希望中间能插杂其他的事件处理,可以调用  PeekAndPump 方法


--  作者:z7c9
--  发布时间:2013/8/29 12:30:48
--  
为什么同一个tick要调用2次?
--  作者:王锋
--  发布时间:2013/8/29 12:38:24
--  

比如只是委托手数变化也会调用一次

另外,刷新时的机制很复杂,偶尔出现调用两次也正常的


--  作者:klc
--  发布时间:2013/8/29 13:40:36
--  
基本上都是调用两次,不过没影响,我会判断下相同品种的MinuteData的count,知道是不是有新的tick来,这样可以避免某些变量的计算重复两次
--  作者:klc
--  发布时间:2013/8/29 17:54:31
--  
是不是可以这样理解,只要我不调用PeekAndPump,后续的通知就自然会排队
--  作者:王锋
--  发布时间:2013/8/29 21:34:33
--  
是的
--  作者:klc
--  发布时间:2013/9/1 11:13:03
--  
谢谢,明白了