Backtrader擴展數據饋送

  |  

GitHub 中的問題實際上是在推動文檔部分的完成,或者説明我瞭解 backtrader 是否具有我從最初時刻就設想的易用性和靈活性以及在此過程中做出的決定。

在本例中為問題 #9

這個問題最終似乎可以歸結為:

  • 最終使用者是否可以輕鬆地擴展現有機制,以 lines 的形式添加額外的資訊,這些資訊會傳遞到其他現有的價格資訊點,如 openhigh等?

據我所知,問題的答案是:是的

海報似乎有以下要求(來自第6期):

  • 正在解析為 CSV 格式的數據來源

  • 用於GenericCSVData 載入資訊

    此通用 csv 支援是為回應此問題#6 而開發的

  • 一個額外的欄位,顯然包含需要沿著解析的CSV數據傳遞的P / E資訊

讓我們以 CSV Data Feed 開發和通用 CSV Data Feed 示例帖子為基礎。

步驟:

  • 假設在解析的CSV數據中設置了P / E資訊

  • 用作GenericCSVData 基類

  • 擴展存在 linesopen/high/low/close/volumen/openinterestpe

  • 添加參數讓調用方確定 P/E 資訊的欄位置

結果:

from backtrader.feeds import GenericCSVData

class GenericCSV_PE(GenericCSVData):

    # Add a 'pe' line to the inherited ones from the base class
    lines = ('pe',)

    # openinterest in GenericCSVData has index 7 ... add 1
    # add the parameter to the parameters inherited from the base class
    params = (('pe', 8),)

工作已經完成...

稍後,在策略中使用此 data feed

import backtrader as bt

....

class MyStrategy(bt.Strategy):

    ...

    def next(self):

        if self.data.close > 2000 and self.data.pe < 12:
            # TORA TORA TORA --- Get off this market
            self.sell(stake=1000000, price=0.01, exectype=Order.Limit)
    ...

繪製額外的市盈率 line

顯然,在data feed中沒有對額外line的自動繪圖支援。

最好的選擇是在那個 line 上做一個SimpleMovingAverage,並將其繪製在一個單獨的軸上:

import backtrader as bt
import backtrader.indicators as btind

....

class MyStrategy(bt.Strategy):

    def __init__(self):

        # The indicator autoregisters and will plot even if no obvious
        # reference is kept to it in the class
        btind.SMA(self.data.pe, period=1, subplot=False)

    ...

    def next(self):

        if self.data.close > 2000 and self.data.pe < 12:
            # TORA TORA TORA --- Get off this market
            self.sell(stake=1000000, price=0.01, exectype=Order.Limit)
    ...

推薦閱讀

相關文章

Backtrader改進代碼

時不時地,帶有 backtrader 代碼的示例會在互聯網上彈出。在我看來,有幾個是中國人。最新的一個在這裡: 標題是: backtrader-學習筆記2,這顯然(感謝谷歌)翻譯成 backtrader- 學習筆記2。

Backtrader觀察員和統計

在 backtrader 內部運行的策略主要處理數據 和 指標。 數據被添加到Cerebro 實例中,並最終成為策略輸入的一部分(解析並用作實例的屬性),而指標由策略本身聲明和管理。

Backtrader在同一軸上列印

上一篇文章期貨和現貨補償,在同一空間上繪製原始數據和略微(隨機)修改的數據,但不是在同一軸上。 從該帖子中恢復第 1張圖片。 人們可以看到: 圖表的左側和右側有不同的刻度 當查看在原始數據周圍振蕩+- 50點的旋轉紅line(隨機數據)時,這一點最為明顯。

Backtrader擴展數據饋送

GitHub 中的問題實際上是在推動文檔部分的完成,或者説明我瞭解 backtrader 是否具有我從最初時刻就設想的易用性和靈活性以及在此過程中做出的決定。 在本例中為問題 #9。

Backtrader教程:過濾器 - 參考

工作階段篩檢程式 類 backtrader.filters。

Backtrader教程:Cerebro - 優化 - 改進

backtrader版本1.8.12.99改進了在多處理過程中管理data feeds和結果的方式。

Backtrader數據多時間幀

有時投資決策是使用不同的時間框架做出的: 每周評估趨勢 每天執行條目 或者5分鐘對60分鐘。 這意味著需要將多個時間幀的數據組合在 backtrader 中以支援此類組合。 對它的本機支持已經內置。

Backtrader現實咬合

上一篇文章設法複製了該BTFD 策略,發現真正的收益 16x 而不是 31x。 但正如複製期間所指出的: 不收取傭金 使用2x 槓桿不收取利息 這就提出了一個顯而易見的問題: 當收取傭金和利息時,這16x中有多少會存在? 幸運的是,前面的示例足夠靈活,可以對其進行試驗。

Backtrader教程:分析儀 - PyFolio

注意 從(至少)2017-07-25pyfolio 開始,API已更改,不再 create_full_tear_sheet 具有 gross_lev 作為命名參數的參數。

Backtrader開發指標

經過 backtrader 微調(因為它已經運行了一段時間),我決定不僅通過GitHub分享它,還告訴世界它在那裡,並在“Reddit”中發佈它的存在。 在評論了為什麼交易/演算法交易平臺會彈出,以及關於支持許多同時交易的即時交易的平臺的私人問題之後,我得出的結論是,我自己的孩子應該擁有自己的博客。 我們來了。