以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 高级功能研发区 (http://weistock.com/bbs/list.asp?boardid=5) ---- 求助,在读取tick数据时不能记录程序 (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=70775) |
-- 作者:kkk1234567 -- 发布时间:2014/10/9 15:57:29 -- 求助,在读取tick数据时不能记录程序 本人自制了一个记录五档行情的程序,在其他SUb处都能正常记录,但是在Sub MARKETDATA_ReportNotify(ReportData)下记录总是失败,求问题原因! 代码如下: Sub MARKETDATA_ReportNotify(ReportData)
application.MsgOut "运行到这里1" xlSheet.Cells(row+2, 1)=438 xlSheet.Cells(row+1, 2)=26550 row=row+1 application.MsgOut "运行到这里2" end sub 其中 在主程序中已经定义好文件,如下: Set xlApp = CreateObject("Excel.Application") \'创建EXCEL对象 Set xlBook = xlApp.Workbooks.Open("d:\\wudangjilu.xlsx") \'打开已经存在的EXCEL工件簿文件 xlApp.Visible = true \'设置EXCEL对象可见(或不可见) Set xlSheet = xlBook.Worksheets("sheet1") \'设置活动工作表 row=xlSheet.UsedRange.Rows.Count \'已经使用行数 col=xlSheet.UsedRange.Columns.Count 上述程序只要采用call Marketdata.RegReportNotify(“IF10”,"ZJ")注册的事件均只会运行到 application.MsgOut "运行到这里1"
运行不到 application.MsgOut "运行到这里2"
而当我自己调试着尝试主动调用时 call MARKETDATA_ReportNotify(1),程序会正常跑到application.MsgOut "运行到这里2" ,且记录完全正常!! 请问一下这问题出在哪里,谢谢了!!!
|
-- 作者:kkk1234567 -- 发布时间:2014/10/9 16:08:21 -- 目前解决办法为在程序运行完后,即VBAEND事件中,从内存中读取数据,数据能正常读取书写,但是一旦达到很大的数据,如160000条,很容易崩溃,因此还是需要在 Sub MARKETDATA_ReportNotify(ReportData)事件中逐条记录,请大家试试看能不能正常解决该问题。本人新手,谢谢你们的支持和帮助
[此贴子已经被作者于2014/10/9 16:08:49编辑过]
|
-- 作者:王锋 -- 发布时间:2014/10/9 18:18:35 -- 估计你的代码出在EXCEL问题上把,这个已经不属于我们金字塔的客服范畴了,建议你试试导出到文本文件 |
-- 作者:kkk1234567 -- 发布时间:2014/10/10 9:02:16 -- 导入到文本文件数据不好读取,后续处理不好做,因而需要导入到excle 为什么主动call能正常运行,金字塔事件自动触发却不行了,理论上来说除了500ms事件太短的原因外(即一个tick运行时另一个tick到了冲掉了后续程序)不会出现这种情况,但是我只写几个数据500ms应该完全够了的
|
-- 作者:王锋 -- 发布时间:2014/10/10 9:20:09 -- 分笔数据的量还有速度是很快的,EXCEL是受不了这些的,你还是考虑用文本吧 |