本篇文章給大家分享的是有關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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。