假如我现在有多个策略,每个策略都是VBA开发的,希望同时运行,那我是不是要把这些策略写到同一个VBA工程里面?
专业人员一般是怎么做的呢?
要写到同一个工程的。
多个策略要小心,注意防止冲突。建议初学用户从简单的开始入手
谢谢。我现在一个策略基本上开发好了,准备再写一个策略,所以想问一下大家怎么做。
那一般会出现什么类型的冲突呢?
另外,更专业的做法是不是做个接口在金字塔外部做二次开发呢?
一些全局变量这种,还有GetHistoryData 对象这种取出的共享缓冲区,你多个品种同时做的时候通过数组类去做保存
看2楼的建议,简单的写几个,然后运行时候多调试测试。
您好,我现在的策略就是多品种检测的,里面有个函数用到了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
请问程序在调用这个函数的时候会出现您所说的共享缓冲区的问题吗?(我也不是很懂共享缓存区是什么意思)
另外,您说的通过数组类去保存具体是什么意思呢?
看代码看不出问题的,你可以先用试试,做好运行日志记录,这样出现问题后也容易查找。
这种没有标准的。。。只能说你自己在运行后看如果发现和自己预期的有不同,可以通过在代码里加入msgout输出下关键信息。
共享那个意思就是,一个品种多个周期情况下,后面的会覆盖掉前者。你可以看下帮助信息里historydata对象,说明里面有说明的。