以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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是受不了这些的,你还是考虑用文本吧