中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

VNPY 批量策略回測和統計結果的excel輸出是怎樣的

發布時間:2022-01-15 14:56:59 來源:億速云 閱讀:164 作者:柒染 欄目:大數據

小編今天帶大家了解VNPY 批量策略回測和統計結果的excel輸出是怎樣的,文中知識點介紹的非常詳細。覺得有幫助的朋友可以跟著小編一起瀏覽文章的內容,希望能夠幫助更多想解決這個問題的朋友找到問題的答案,下面跟著小編一起深入學習“VNPY 批量策略回測和統計結果的excel輸出是怎樣的”的知識吧。

做VNPY這段時間,發現主要就是回測,和策略優化;然后就是有批量測試和參數集合效果導出excel分析要求。還有就是一個策略對不同品種效果驗證。

然后想想,就自己寫了一個BatchBackTest 類,其實很簡答,就是輸入品種隊列,和策略隊列,然后就會循環跑出結果,輸出到指定路徑excel。 還有就是策略是元組,是由一個策略和對應參數組合。

代碼如下。使用方法就是在 vnpy/example/CtaBacktesting 路徑下面新疆一個py,放入下面代碼就可以

  • # encoding: UTF-8

  • from vnpy.trader.app.ctaStrategy.ctaBacktesting import BacktestingEngine, MINUTE_DB_NAME

  • import pandas as pd

  • from vnpy.trader.app.ctaStrategy.strategy.strategyAtrRsi import AtrRsiStrategy

  • from vnpy.trader.app.ctaStrategy.strategy.strategyBollChannel import BollChannelStrategy

  • from vnpy.trader.app.ctaStrategy.strategy.strategyDoubleMa import DoubleMaStrategy

  • from vnpy.trader.app.ctaStrategy.strategy.strategyDualThrust import DualThrustStrategy

  • from vnpy.trader.app.ctaStrategy.strategy.strategyKingKeltner import KkStrategy

  • from vnpy.trader.app.ctaStrategy.strategy.strategyMultiSignal import MultiSignalStrategy

  • from vnpy.trader.app.ctaStrategy.strategy.strategyMultiTimeframe import MultiTimeframeStrategy


  • class BatchBackTest(object):

  •     def __init__(self):

  •         ""

  •     def calculateBacktesting(self,symbollist,strategylist):

  •         #填入品種隊列和策略隊列,返回結果resultlist, 為了輸出方便檢索,加入品種名稱,策略名稱和策略參數

  •         resultlist = []

  •         for symbol in symbollist:

  •             for strategy in strategylist:

  •                 result = self.runBacktesting(symbol,strategy)

  •                 #加入品種名稱,策略名稱和策略參數

  •                 result["Symbolname"] = str(symbol["vtSymbol"])

  •                 result["strategyname"] = str(strategy[0])

  •                 result["strategysetting"] = str(strategy[1])

  •                 resultlist.append(result)

  •         return resultlist



  •     def runBacktesting(self, symbol, strategy ):

  •         #寫入測試品種和參數, 返回回測數據集包含回測結果


  •         # 在引擎中創建策略對象

  •         # 創建回測引擎

  •         engine = BacktestingEngine()

  •         # 設置引擎的回測模式為K線

  •         engine.setBacktestingMode(engine.BAR_MODE)

  •         # 設置回測用的數據起始日期

  •         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"])


  •         # 設置使用的歷史數據庫

  •         engine.setDatabase(MINUTE_DB_NAME, symbol["vtSymbol"])

  •         #設置策略,策略元組中第一個是策略,第二個參數

  •         engine.initStrategy(strategy[0], strategy[1])

  •         engine.runBacktesting()

  •         df = engine.calculateDailyResult()

  •         result = []

  •         dfp,result = engine.calculateDailyStatistics(df)

  •         engine.output(u'輸出統計數據')

  •         # engine.showDailyResult(dfp, result)

  •         return result


  •     def toExcel(self, resultlist, path = "C:\data\datframe.xlsx"):

  •         #按照輸入統計數據隊列和路徑,輸出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 "回測統計結果輸出到" + path



  • if __name__ == "__main__":

  •     #創建品種隊列,這里可以用json導入,為了方便使用直接寫了。

  •     symbollist = [{

  •         "vtSymbol": 'm1809',

  •         "StartDate": "20180101",

  •         "Slippage": 1,

  •         "Size": 10,

  •         "Rate": 2 / 10000,

  •         "Capital": 10000

  •             },

  •         {

  •             "vtSymbol": 'rb0000',

  •             "StartDate": "20180101",

  •             "Slippage": 1,

  •             "Size": 10,

  •             "Rate": 2 / 10000,

  •             "Capital": 10000

  •         }]

  •     #這里定義策略,策略參數先為空;策略加參數是一個元組

  •     setting = {}

  •     Strategylist = [(AtrRsiStrategy, setting),

  •                     (BollChannelStrategy, setting),

  •                     (DoubleMaStrategy, setting),

  •                     (DualThrustStrategy, setting),

  •                     (KkStrategy, setting),

  •                     (MultiSignalStrategy, setting),

  •                     (MultiTimeframeStrategy, setting)]

  •     # 這里是同一個策略,不同參數的情況,當然可以有多個策略和多個參數組合

  •     Strategylist2 = []

  •     # 策略list

  •     settinglist =[

  •         {'kdlimit': 40, 'barmins': 9, 'cciWindow': 22},

  •         {'kdlimit': 30, 'barmins': 13, 'cciWindow': 20}]

  •     # 合并一個元組

  •     if settinglist != []:

  •         for para1 in settinglist:

  •             Strategylist2.append((BollChannelStrategy, para1))


  •     NT = BatchBackTest()

  •     resultlist = NT.calculateBacktesting(symbollist,Strategylist)

  •     #定義路徑

  •     path = "C:\Project\BackTestResult.xlsx"

  •     NT.toExcel(resultlist,path)

感謝大家的閱讀,以上就是“VNPY 批量策略回測和統計結果的excel輸出是怎樣的”的全部內容了,學會的朋友趕緊操作起來吧。相信億速云小編一定會給大家帶來更優質的文章。謝謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

威海市| 马山县| 彭州市| 昭苏县| 呼伦贝尔市| 衡东县| 耒阳市| 宜春市| 砀山县| 黑龙江省| 龙岩市| 如皋市| 会宁县| 阳城县| 出国| 邹平县| 育儿| 监利县| 环江| 诸城市| 永德县| 和林格尔县| 三河市| 阳江市| 罗平县| 齐齐哈尔市| 泸水县| 通渭县| 平邑县| 鱼台县| 安义县| 钟祥市| 延寿县| 武川县| 云林县| 江城| 荥经县| 濉溪县| 通州区| 临武县| 金山区|