以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  [求助] vba里事件的处理机制,多个timer的处理机制  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=137582)

--  作者:lwp00751206
--  发布时间:2016/8/5 11:23:09
--  [求助] vba里事件的处理机制,多个timer的处理机制
请教高手,vba里的OrderStatus,OrderStatusEx ,OrderStatusEx2  这3个事件会不会同步被激活,还是有分先后,如果被同步激活,在金字塔的系统中是采取同步多线程处理还是异步处理,还有,当事件被激活后,如果在执行此事件的代码还没完成前新的激活条件又来到,这个事件的机制是忽略目前的条件等待上次完全执行完,还是怎么处理?当类似的事件被激活时,如果还有别的定时器正处于循环执行状态,这两者之间的代码关系是怎么相互影响的,例如:已经有运行了1个timer在执行一部分代码,但同时又有MarketData_ReportNotify 事件和 Orde_OrderStatus事件被激活,此时这3者是如何相互影响的,是同步各自分开执行还是有先后等待关系?
       还有一个问题需要请教,如果开了多个timer,这多个timer是如何相互影响的,是同步各自分开执行还是有先后等待关系?

--  作者:du_zb
--  发布时间:2016/8/5 11:30:20
--  
似乎是一个一个排着队处理的
--  作者:王锋
--  发布时间:2016/8/5 12:17:23
--  

楼上回答正确。

更多的讨论请参考 http://www.weistock.com:8080/vip/forum.php?mod=viewthread&tid=1917&extra=page%3D1


--  作者:lwp00751206
--  发布时间:2016/8/5 12:35:51
--  
感谢各位的帮助,我还想请教一下,OrderStatus这个事件会不会出现丢失,还有,如果出现丢失如何确认订单是否撤单成功,我看了所有的函数,只有OrderStatus这个事件里能得到各种交易状态,还有没有其他途径实时得到交易状态?还有OrderStatus这个事件如果遇到阻塞,当阻塞过后能不能得到延时数据还是就会产生丢失
--  作者:lwp00751206
--  发布时间:2016/8/5 12:41:19
--  
举个例子: 比如通过 MarketData_ReportNotify事件触发了一轮程序,在此程序还完全没执行完之前,OrderStatus这个事件的触发条件出现了,但因为 MarketData_ReportNotify事件的机制是不会被打断的,此时的OrderStatus会等待MarketData_ReportNotify事件执行完再补执行或是直接产生丢失
--  作者:王锋
--  发布时间:2016/8/5 13:04:14
--  
OrderStatus 这个事件不会丢失的,如果前面的程序正在阻塞,系统会将OrderStatus事件塞进队列中,带前面的任务处理完毕后再来处理。
--  作者:lwp00751206
--  发布时间:2016/8/5 13:06:56
--  
当出现回报丢失的意外情况时,有没有什么办法重新得到已经丢失的回报信息
--  作者:lwp00751206
--  发布时间:2016/8/5 13:08:26
--  
OrderStatus这个事件的过程中会不会被打断
--  作者:王锋
--  发布时间:2016/8/5 13:09:45
--  
6楼我已经说的很详细了,回报是不会丢失的,只要金字塔软件还能继续工作,回报的事件是一定能传递给VBA的。
--  作者:王锋
--  发布时间:2016/8/5 13:11:43
--  

如果你的策略遇到了问题,建议你使用日志记录的方式,将运行的状态以及变量的变化情况写盘写日志。这样遇到问题后通过日志来查找代码中的逻辑问题。

 

参考

Document 对象

 

DebugFile(Path, Text, Time)

Path    日志保存全路径,比如"C:\\OrderLog.Txt"

Text    日志记录数据内容

Time    是否自动添加时间