请管理员看看,我用MarketData 对象AlarmPleaceOrder方法,取不到 预警价格 和 交易账户 其他数据没问题,下面是源码:
Sub MARKETDATA_AlarmPleaceOrder(Name, Order, OrderType, Action, Volume, Price, Code, Market, Account)
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.OpenTextFile("D:\交易\myfile.txt",8,True)
a.WriteLine( "账户 " & Account & "下单类别"& Order &" 手数" & Volume &" 预警价格" & Price & " 时间" & now)
a.Close
End Sub
下面是myfile.txt中的记录(实盘):
账户 下单类别0 手数1 预警价格0 时间2013-1-28 9:35:01
账户 下单类别1 手数1 预警价格0 时间2013-1-28 11:16:00
账户 下单类别0 手数1 预警价格0 时间2013-1-29 9:34:01
账户 下单类别1 手数1 预警价格0 时间2013-1-29 15:13:01
百思不得其解,恳请指点!
[此贴子已经被作者于2013-1-30 0:15:41编辑过]
根据你的代码 预警账号没问题。预警价格为0 稍后看看是什么问题

此主题相关图片如下:123.png
没有出预警价格的原因很大可能是事件驱动型造成的,VBA效率比图表高;有下单之后,VBA立马去读取数据,但是此时图表的价格没有显示出来,导致读到价格为0,处理办法就是事件触发后,让VBA代码停顿一下就可以读到。
感谢管理员的关注,向金字塔工作人员的认真态度致敬!
本人初学,还请指点:
“让VBA代码停顿一下”怎么实现?
在
“Sub MARKETDATA_AlarmPleaceOrder(Name, Order, OrderType, Action, Volume, Price, Code, Market, Account)”
之后SLEEP吗?
经测试,加个SLEEP不解决问题,代码如下:Sub MARKETDATA_AlarmPleaceOrder(Name, Order, OrderType, Action, Volume, Price, Code, Market, Account)
call StockSleep(5000)
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.OpenTextFile("D:\交易\myfile.txt",8,True)
a.WriteLine( "账户 " & Account & "下单类别"& Order &" 手数" & Volume &" 预警价格" & Price & " 时间" & now)
a.Close
End Sub
Sub StockSleep(slSecond)
Set Wrap = CreateObject("DynamicWrapper")
Wrap.Register "KERNEL32.DLL", "Sleep","i=u","R=l"
Wrap.Sleep(slSecond)
End Sub