溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

VNPY參數(shù)優(yōu)化功能v1版本中的更新參數(shù)批量生成方法是什么

發(fā)布時(shí)間:2021-12-04 15:35:54 來(lái)源:億速云 閱讀:138 作者:柒染 欄目:編程語(yǔ)言

本篇文章給大家分享的是有關(guān)VNPY參數(shù)優(yōu)化功能v1版本中的更新參數(shù)批量生成方法是什么,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

VNPY的參數(shù)優(yōu)化功能,是策略優(yōu)化的重要功能。主要就是按照范圍生成批量的參數(shù)組合,然后成批跑完,選出最優(yōu)的方法的。

在ctaBaclesting.py中的addParameter方法提供了批量導(dǎo)入?yún)?shù)的方法。就是這樣一個(gè)參數(shù)一個(gè)參數(shù)填入。addParameter會(huì)按照1為初始,5為結(jié)束,2為步進(jìn),生成[1,3,5]參數(shù)隊(duì)列

setting.addParameter('barMins', 1,5,2)

但是有時(shí)候參數(shù)比較多,如果參數(shù)是已經(jīng)維護(hù)list這樣情況,就不好支持。我寫了個(gè)v2版本。傳入的是key,和一個(gè)參數(shù)定義,可以是tuple元祖,隊(duì)列l(wèi)ist,或者單個(gè)值。 

#----------------------------------------------------------------------
def addParameterV2(self, key, value):
    """增加優(yōu)化參數(shù)"""
    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,起始點(diǎn),終結(jié)點(diǎn),和步進(jìn) 比如,那么就和之前一樣的返回

setting.addParameterV2('barMins', (1,5,2))

setting.addParameterV2('barMins', (0,5,0.2))

2,  起始點(diǎn),終結(jié)點(diǎn),參數(shù)個(gè)數(shù)和是否int 比如

setting.addParameterV2('barMins', 1,5,3, "int") 會(huì)生成有3個(gè)整數(shù)參數(shù)的參數(shù)隊(duì)列[1, 3, 5];setting.addParameterV2('barMins', 1,5,4, "float")會(huì)生成浮點(diǎn)數(shù)參數(shù)組[1.0, 2.333333333333333, 3.6666666666666665, 5.0] 3,數(shù)列,就直接使用數(shù)列setting.addParameterV2('barMins', [3.5.6])
4,單個(gè)數(shù)字,就直接使用單個(gè)數(shù)字
setting.addParameterV2('barMins',4) 這樣修改后,就可以不用一個(gè)一個(gè)加入,如下批量加入。

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參數(shù)優(yōu)化功能v1版本中的更新參數(shù)批量生成方法是什么,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI