ITPub博客

首页 > 应用开发 > > VNPY参数优化功能v1版本中的一个更新参数批量生成方法

VNPY参数优化功能v1版本中的一个更新参数批量生成方法

作者:suliver 时间:2019-07-30 16:31:09 0 删除 编辑

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)




来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2370/viewspace-3151562/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: C++初始化顺序
请登录后发表评论 登录
全部评论

注册时间:2019-07-30

  • 博文量
    138
  • 访问量
    9096