老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)

VNPY批量優(yōu)化參數(shù),并輸出到excel

VNPY中,優(yōu)化參數(shù)也經(jīng)常要批量去做,一個是一組不同策略批量對一個品種優(yōu)化,還有一個策略對應(yīng)不同憑證,下面是源代碼,放在example\CtaBacktesting文件夾下面,主要是參考了原來的優(yōu)化代碼。

還有就是輸出時候,由于優(yōu)化的時候,結(jié)果可能很多,默認(rèn)輸出30個到excel。


  • # encoding: UTF-8

  • import pandas as pd
  • from vnpy.trader.app.ctaStrategy.ctaBacktesting import BacktestingEngine, MINUTE_DB_NAME, OptimizationSetting
  • from vnpy.trader.app.ctaStrategy.strategy.strategyBollChannel import BollChannelStrategy


  • class BatchOptimization(object):
  •     def __init__(self):
  •         ""
  •     def calculateBacktesting(self,symbollist,strategylist, sort = 'totalNetPnl'):
  •         #填入品種隊列和策略隊列,返回結(jié)果resultlist, 為了輸出方便檢索,加入品種名稱,策略名稱和策略參數(shù)
  •         resultlist = []
  •         for symbol in symbollist:
  •             for strategy in strategylist:
  •                 result = self.runBacktesting(symbol,strategy,sort)
  •                 #加入品種名稱,策略名稱和策略參數(shù)
  •                 if isinstance(result,dict):
  •                     #如果返回的是dict,直接加入
  •                     result["Symbolname"] = str(symbol["vtSymbol"])
  •                     result["strategyname"] = str(strategy[0])
  •                     result["strategysetting"] = str(strategy[1])
  •                     resultlist.append(result)
  •                 else:
  •                     # 發(fā)現(xiàn)優(yōu)化回來的是一個包含元組的隊列,元組有三個組成,第一個排策略參數(shù),第二個回測目標(biāo)的值,第三策略參數(shù)全部運(yùn)行結(jié)果。
  •                     # 這里我們要的就是第三個,先插入這個dict,在dict插入symbolname,和strategysetting
  •                     for resultraw in result:
  •                         resultlist.append(resultraw[2])
  •                         resultlist[-1]["Symbolname"] = str(symbol["vtSymbol"])
  •                         resultlist[-1]["strategysetting"] = str(resultraw[0])
  •         return resultlist


  •     def runBacktesting(self, symbol, strategy, sort):
  •         #寫入測試品種和參數(shù), 返回回測數(shù)據(jù)集包含回測結(jié)果

  •         # 在引擎中創(chuàng)建策略對象
  •         # 創(chuàng)建回測引擎
  •         engine = BacktestingEngine()
  •         # 設(shè)置引擎的回測模式為K線
  •         engine.setBacktestingMode(engine.BAR_MODE)
  •         # 設(shè)置回測用的數(shù)據(jù)起始日期
  •         engine.setStartDate(symbol["StartDate"])
  •         engine.setSlippage(symbol["Slippage"]) # 1跳
  •         engine.setRate(symbol["Rate"]) # 傭金大小
  •         engine.setSize(symbol["Size"]) # 合約大小
  •         engine.setPriceTick(symbol["Slippage"]) # 最小價格變動
  •         engine.setCapital(symbol["Capital"])

  •         # 設(shè)置使用的歷史數(shù)據(jù)庫
  •         engine.setDatabase(MINUTE_DB_NAME, symbol["vtSymbol"])

  •         #調(diào)用優(yōu)化方法,可以集成優(yōu)化測試
  •         setting = OptimizationSetting() # 新建一個優(yōu)化任務(wù)設(shè)置對象
  •         setting.setOptimizeTarget(sort) # 設(shè)置優(yōu)化排序的目標(biāo)是策略凈盈利
  •         print strategy[1]
  •         for settingKey in strategy[1]:
  •             if isinstance(strategy[1][settingKey], tuple):
  •                 setting.addParameter(settingKey,strategy[1][settingKey][0],strategy[1][settingKey][1],strategy[1][settingKey][2])
  •             else:
  •                 setting.addParameter(settingKey,strategy[1][settingKey])
  •         #
  •         optimizationresult = engine.runParallelOptimization(strategy[0], setting)

  •         engine.output(u'輸出統(tǒng)計數(shù)據(jù)')
  •         # 如果是使用優(yōu)化模式,這里返回的是策略回測的dict的list,如果普通回測就是單個dict
  •         # 如果大于30 ,就返回三十之內(nèi),否則全部
  •         if len(optimizationresult) > 30:
  •             return optimizationresult[:30]
  •         else:
  •             return optimizationresult

  •     def toExcel(self, resultlist, path = "C:\data\datframe.xlsx"):
  •         #按照輸入統(tǒng)計數(shù)據(jù)隊列和路徑,輸出excel,這里不提供新增模式,如果想,可以改
  •         #dft.to_csv(path,index=False,header=True, mode = 'a')
  •         summayKey = resultlist[0].keys()
  •         # summayValue = result.values()

  •         dft = pd.DataFrame(columns=summayKey)
  •         for result_ in resultlist:
  •             new = pd.DataFrame(result_, index=["0"])
  •             dft = dft.append(new,ignore_index=True)
  •         dft.to_excel(path,index=False,header=True)
  •         print "回測統(tǒng)計結(jié)果輸出到" + path

  • if __name__ == "__main__":
  •     #創(chuàng)建品種隊列,這里可以用json導(dǎo)入,為了方便使用直接寫了。
  •     symbollist = [{
  •         "vtSymbol": 'm1809',
  •         "StartDate": "20180101",
  •         "Slippage": 1,
  •         "Size": 10,
  •         "Rate": 2 / 10000,
  •         "Capital": 10000
  •             },
  •         {
  •             "vtSymbol": 'rb1810',
  •             "StartDate": "20180101",
  •             "Slippage": 1,
  •             "Size": 10,
  •             "Rate": 2 / 10000,
  •             "Capital": 10000
  •         }
  •     ]

  •     # 這里是同一個策略,不同參數(shù)的情況,當(dāng)然可以有多個策略和多個參數(shù)組合
  •     Strategylist2 = []
  •     # 策略list,如果是元組,那么就是三個,按照第一個初始,第二個結(jié)束,第三個步進(jìn)
  •     settinglist =[
  •         {'bollWindow': (10,20,2)}]
  •     # 合并一個元組
  •     if settinglist != []:
  •         for para1 in settinglist:
  •             Strategylist2.append((BollChannelStrategy, para1))

  •     NT = BatchOptimization()
  •     resultlist = NT.calculateBacktesting(symbollist,Strategylist2,sort = 'totalNetPnl')
  •     #定義路徑
  •     path = "C:\Project\OptimizationResult.xlsx"
  •     NT.toExcel(resultlist,path)


  • 分享標(biāo)題:VNPY批量優(yōu)化參數(shù),并輸出到excel
    文章分享:http://www.xueling.net.cn/article/johdgi.html

    其他資訊

    在線咨詢
    服務(wù)熱線
    服務(wù)熱線:028-86922220
    TOP
    主站蜘蛛池模板: 国产aⅴ精品一区二区三区久久 | 风韵丰满熟妇啪啪区老老熟妇 | xvideos在线观看 | 高潮绝顶抽搐大叫久久精品 | 美景之屋3免费 | av在线播放网站 | aaa亚洲精品一二三区 | 国产精品国产三级国产午 | 欧洲MV日韩MV国产 | 国产免费拔擦拔擦8x在线牛 | 亚洲av日韩av高潮无码专区 | 欧美激情精品久久久久久大尺度 | 一区二区不卡在线视频 | 夜夜欢天天干 | 一级黄色大毛片 | 一级片的网址 | 国产极品无码色综合 | 亚洲一区二区三区在线网站 | 精品女同一区二区三区在线观看 | 国产精品区视频中文字幕 | 日本高清视频www在线观看 | 777米奇影视第四色 青青青在线视频观看 | 午夜三区| 国产成人无码免费视频麻豆 | 国产精品国产三级国产aⅴ无密码 | 国产老肥熟xxxx | 国产欧美日韩亚洲精品区 | 欧美a级v片在线观看 | 欧美精欧美乱码一二三四区 | 男人插女人的免费视频 | 亚洲美女高潮久久久久潘金莲 | 久久久99国产 | 三个男人躁我一个爽公交车上 | 国产精品人妻无码免费久久久 | 欧洲成在人线视频免费 | 久久精品国内 | 免费看国产一级特黄aaaa大片 | tobu8日本高清在线观看 | 日本免费一区二区三区不卡网 | 91超碰刺激偷拍 | 好吊妞www.84com只有这里才有精品 |