欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → [求助]VBA实现多策略后台交易

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3499人关注过本帖树形打印复制链接

主题:[求助]VBA实现多策略后台交易

帅哥哟,离线,有人找我吗?
du_zb
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:209 积分:0 威望:0 精华:0 注册:2016/4/22 15:46:27
[求助]VBA实现多策略后台交易  发帖心情 Post By:2016/5/26 14:29:49 [只看该作者]

假如我现在有多个策略,每个策略都是VBA开发的,希望同时运行,那我是不是要把这些策略写到同一个VBA工程里面?
专业人员一般是怎么做的呢?

 回到顶部
帅哥哟,离线,有人找我吗?
马良
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:1516 积分:229 威望:0 精华:0 注册:2012/3/30 12:40:56
  发帖心情 Post By:2016/5/26 15:38:47 [只看该作者]

要写到同一个工程的。
多个策略要小心,注意防止冲突。建议初学用户从简单的开始入手

 回到顶部
帅哥哟,离线,有人找我吗?
du_zb
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:209 积分:0 威望:0 精华:0 注册:2016/4/22 15:46:27
  发帖心情 Post By:2016/5/26 15:43:09 [只看该作者]

谢谢。我现在一个策略基本上开发好了,准备再写一个策略,所以想问一下大家怎么做。
那一般会出现什么类型的冲突呢?
另外,更专业的做法是不是做个接口在金字塔外部做二次开发呢?

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2016/5/27 10:00:28 [只看该作者]

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
du_zb
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:209 积分:0 威望:0 精华:0 注册:2016/4/22 15:46:27
  发帖心情 Post By: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

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

 回到顶部
帅哥哟,离线,有人找我吗?
马良
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:1516 积分:229 威望:0 精华:0 注册:2012/3/30 12:40:56
  发帖心情 Post By:2016/5/27 15:58:12 [只看该作者]

看代码看不出问题的,你可以先用试试,做好运行日志记录,这样出现问题后也容易查找。

 回到顶部
帅哥哟,离线,有人找我吗?
du_zb
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:209 积分:0 威望:0 精华:0 注册:2016/4/22 15:46:27
  发帖心情 Post By:2016/5/27 20:29:31 [只看该作者]

请问运行日志主要记录哪方面的信息?

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2016/5/29 22:03:22 [只看该作者]

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
du_zb
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:209 积分:0 威望:0 精华:0 注册:2016/4/22 15:46:27
  发帖心情 Post By:2016/5/29 22:16:49 [只看该作者]

谢谢!

 回到顶部