以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  高级功能研发区  (http://www.weistock.com/bbs/list.asp?boardid=5)
----  MarketData 对象的一个问题  (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=48261)

--  作者:ati3349
--  发布时间:2013/1/30 0:14:43
--  MarketData 对象的一个问题
请管理员看看,我用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编辑过]

--  作者:王锋
--  发布时间:2013/1/30 9:46:12
--  
你是通过何种方式进行预警的?
--  作者:ati3349
--  发布时间:2013/1/30 22:26:24
--  后台程式化交易
后台程式化交易
预警正常,下单正常
图片点击可在新窗口打开查看此主题相关图片如下:截图-1.jpg
图片点击可在新窗口打开查看

这是今天的记录:
账户 预警名称HTSCL01下单类别2 手数1 预警价格0 时间2013-1-30 9:33:11
账户 预警名称HTSCL01下单类别3 手数1 预警价格0 时间2013-1-30 15:13:11


--  作者:王锋
--  发布时间:2013/1/30 22:32:48
--  
明天客服测试一下
--  作者:rushtaotao
--  发布时间:2013/1/31 9:01:20
--  
测试中。。。请客户耐心等候
--  作者:rushtaotao
--  发布时间:2013/1/31 9:35:35
--  

根据你的代码 预警账号没问题。预警价格为0 稍后看看是什么问题


图片点击可在新窗口打开查看此主题相关图片如下:123.png
图片点击可在新窗口打开查看

--  作者:rushtaotao
--  发布时间:2013/1/31 9:41:16
--  

没有出预警价格的原因很大可能是事件驱动型造成的,VBA效率比图表高;有下单之后,VBA立马去读取数据,但是此时图表的价格没有显示出来,导致读到价格为0,处理办法就是事件触发后,让VBA代码停顿一下就可以读到。


--  作者:ati3349
--  发布时间:2013/1/31 13:41:02
--  感谢管理员的关注

感谢管理员的关注,向金字塔工作人员的认真态度致敬!

 

本人初学,还请指点:

“让VBA代码停顿一下”怎么实现?

Sub MARKETDATA_AlarmPleaceOrder(Name, Order, OrderType, Action, Volume, Price, Code, Market, Account)

之后SLEEP吗?


--  作者:王锋
--  发布时间:2013/1/31 13:45:59
--  
问题技术部门正在处理
--  作者:ati3349
--  发布时间:2013/2/1 11:24:46
--  加个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