以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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 是否自动添加时间 |