以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  [求助]VBA实现多策略后台交易  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=97873)

--  作者:du_zb
--  发布时间:2016/5/26 14:29:49
--  [求助]VBA实现多策略后台交易
假如我现在有多个策略,每个策略都是VBA开发的,希望同时运行,那我是不是要把这些策略写到同一个VBA工程里面?
专业人员一般是怎么做的呢?

--  作者:马良
--  发布时间:2016/5/26 15:38:47
--  
要写到同一个工程的。
多个策略要小心,注意防止冲突。建议初学用户从简单的开始入手

--  作者:du_zb
--  发布时间:2016/5/26 15:43:09
--  
谢谢。我现在一个策略基本上开发好了,准备再写一个策略,所以想问一下大家怎么做。
那一般会出现什么类型的冲突呢?
另外,更专业的做法是不是做个接口在金字塔外部做二次开发呢?

--  作者:yukizzc
--  发布时间:2016/5/27 10:00:28
--  

一些全局变量这种,还有GetHistoryData 对象这种取出的共享缓冲区,你多个品种同时做的时候通过数组类去做保存

看2楼的建议,简单的写几个,然后运行时候多调试测试。


--  作者:du_zb
--  发布时间:2016/5/27 12:44:50
--  
您好,我现在的策略就是多品种检测的,里面有个函数用到了GetHistoryData对象:
以下内容为程序代码:

1 Function FindTdayExtreme(sConCode,sMarketCode,CycType,t,HighOrLow,isTInclued)
2 \'寻找某合约前t周期的最高/低价
3 \'sConCode :合约代码
4 \'sMarketCode :市场代码
5 \'CycType :周期类型(0.1分钟;1.5分钟;2.15分钟;3.30分钟;4.60分钟;5.日线;6.周线;7.月线)
6 \'t :最高价/最低价的回溯周期数
7 \'HighOrLow :1.最高价;-1.最低价
8 \'isTInclued :是否包含当前周期(0.不包含;1.包含)
9
10     Set HisData=MarketData.GetHistoryData(sConCode,sMarketCode,CycType,t+1)
11     FindTdayExtreme=0
12     
13     \'检查是否数据不足
14     If HisData.Count<t+1 then
15         MsgBox sConCode & "历史数据不足,请补充!"
16         Exit Function
17     End If
18     
19     \'初始化
20     If HighOrLow=1 then
21         FindTdayExtreme=HisData.High(0)
22     ElseIf HighOrLow=-1 then
23         FindTdayExtreme=HisData.Low(0)
24     Else
25         MsgBox "不能识别参数:HighOrLow"
26         Exit Function
27     End If
28     
29     \'开始迭代最高/低价
30     For i=1 to t-1
31         If HighOrLow=1 then
32             FindTdayExtreme=Fun.Max(FindTdayExtreme,HisData.High(i))
33         Else
34             FindTdayExtreme=Fun.Min(FindTdayExtreme,HisData.Low(i))
35         End If
36     Next
37     
38 End Function

请问程序在调用这个函数的时候会出现您所说的共享缓冲区的问题吗?(我也不是很懂共享缓存区是什么意思)
另外,您说的通过数组类去保存具体是什么意思呢?

--  作者:马良
--  发布时间:2016/5/27 15:58:12
--  
看代码看不出问题的,你可以先用试试,做好运行日志记录,这样出现问题后也容易查找。
--  作者:du_zb
--  发布时间:2016/5/27 20:29:31
--  
请问运行日志主要记录哪方面的信息?
--  作者:yukizzc
--  发布时间:2016/5/29 22:03:22
--  

这种没有标准的。。。只能说你自己在运行后看如果发现和自己预期的有不同,可以通过在代码里加入msgout输出下关键信息。

共享那个意思就是,一个品种多个周期情况下,后面的会覆盖掉前者。你可以看下帮助信息里historydata对象,说明里面有说明的。


--  作者:du_zb
--  发布时间:2016/5/29 22:16:49
--  
谢谢!