溫馨提示×

溫馨提示×

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

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

怎么理解Python的回測框架backtrader

發(fā)布時間:2021-11-02 14:58:55 來源:億速云 閱讀:251 作者:iii 欄目:編程語言

本篇內容介紹了“怎么理解Python的回測框架backtrader”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

backtrader屬于功能相對完善的本地版Python量化回測框架。既然業(yè)界好評如云,我們作為量化交易者理應集所有好用的工具于一身,就讓我們來體驗一下這個框架。

backtrader的使用方法在官方文檔上介紹的挺詳細的。大體分為兩步:

  • 創(chuàng)建一個策略,創(chuàng)建一個策略類,這個類要繼承自backtrader.Strategy,然后就可以自定義里面的方法。策略類中有一個類屬性params,用于定義一些在策略中可調參數值backtrader.indicators內置了許多指標的計算方法,比如移動平均線、MACD、RSI等等,使用時只需要實例化策略中會使用到的技術指標即可next函數中編寫交易策略,也就是進入市場和退出市場的邏輯

  • 創(chuàng)建一個策略決策引擎(原文是Cerebro,這里我用決策這個詞)把定義的策略注入到決策引擎之中把行情數據注入到決策引擎之中可視化方式反饋回測結果

以上是框架中核心的部分,當然了,其他還有很多可擴展的功能。

backtrader的數據加載非常靈活,此處我們使用DataFrame格式數據,如下所示:

"""
            High    Low   Open  Close     Volume  OpenInterest
trade_date                                                    
2017-01-03   8.12   8.07   8.07   8.12  179801.01             0
2017-01-04   8.16   8.09   8.13   8.15  166242.35             0
2017-01-05   8.23   8.13   8.15   8.17  222902.53             0
2017-01-06   8.19   8.12   8.18   8.13  128549.96             0
2017-01-09   8.15   8.08   8.13   8.13  136700.04             0
"""

構建策略的類是繼承backtrader.Strategy,然后根據自己的需要重寫其中的方法即可。比如__init__、log、notify_order、notify_trade、next等等。

關于策略中的指標,backtrader內置了很多類型,直接調用即可。比如移動平均線:

self.sma = bt.indicators.SimpleMovingAverage(
             self.datas[0], period=self.params.maperiod)

由于內置了talib模塊,也可以這么調用:

# 內置了talib模塊
self.sma = bt.talib.SMA(self.data,
    timeperiod=self.params.maperiod)

next方法中,我們實現一個簡單的雙均線策略作為交易的邏輯。比如買入條件是MA5上穿MA10;賣出條件是MA10下穿MA5。

關于策略回測,把數據和策略添加到Cerebro中之外,還有設置一些參數。比如broker的設置,像初始資金、交易傭金。也可以用addsizer設定每次交易買入的股數。

回測結束后返回得到執(zhí)行交易策略時積累的總資金。此處我們回測的是新希望 2017年1月1日到2020年1月1日期間的策略執(zhí)行效果,最終資金從10000變成了15941.95。

由于backtrader內置了Matplotlib,因此我們也可以可視化回測的效果,如下所示:

怎么理解Python的回測框架backtrader

“怎么理解Python的回測框架backtrader”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節(jié)

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

AI