本篇文章给大家分享的是有关VNPY参数优化功能v1版本中的更新参数批量生成方法是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
VNPY的参数优化功能,是策略优化的重要功能。主要就是按照范围生成批量的参数组合,然后成批跑完,选出最优的方法的。
在ctaBaclesting.py中的addParameter方法提供了批量导入参数的方法。就是这样一个参数一个参数填入。addParameter会按照1为初始,5为结束,2为步进,生成[1,3,5]参数队列
setting.addParameter('barMins', 1,5,2)
但是有时候参数比较多,如果参数是已经维护list这样情况,就不好支持。我写了个v2版本。传入的是key,和一个参数定义,可以是tuple元祖,队列list,或者单个值。
#---------------------------------------------------------------------- def addParameterV2(self, key, value): """增加优化参数""" if isinstance(value, tuple): if len(value) == 4: if value[3] == "int": self.paramDict[key] = np.linspace(value[0], value[1], value[2]).astype(int).tolist() else: self.paramDict[key] = np.linspace(value[0], value[1], value[2]).tolist() elif len(value) == 3: l = [] param = value[0] while param <= value[1]: l.append(param) param += value[2] self.paramDict[key] = l elif isinstance(value, list): self.paramDict[key] = value else: self.paramDict[key] = [value]
使用方法:
1,起始点,终结点,和步进 比如,那么就和之前一样的返回
setting.addParameterV2('barMins', (1,5,2))
setting.addParameterV2('barMins', (0,5,0.2))
2, 起始点,终结点,参数个数和是否int 比如
setting.addParameterV2('barMins', 1,5,3, "int") 会生成有3个整数参数的参数队列[1, 3, 5];setting.addParameterV2('barMins', 1,5,4, "float")会生成浮点数参数组[1.0, 2.333333333333333, 3.6666666666666665, 5.0]
3,数列,就直接使用数列setting.addParameterV2('barMins', [3.5.6])
4,单个数字,就直接使用单个数字
setting.addParameterV2('barMins',4)
这样修改后,就可以不用一个一个加入,如下批量加入。
paradict = { 'lWindow':40, 'llDev': 8.0, 'MAWindows':(5,12,5,"int"), 'atrWindow':25, 'slMultiplier':(3.0,6.0,3), 'pRate':(0.002,0.010,5,"float"), 'bMins':[3,5,10], 'CDate':3, 'endsize':(1,4,1), 'endplus':(0,3,1) } for key,value in paradict.items(): setting.addParameterV2(key,value)
以上就是VNPY参数优化功能v1版本中的更新参数批量生成方法是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。