Backtrader教程:經紀人 - 體積灌裝 - 灌裝機

  |  

backtrader經紀商類比在使用volume執行訂單時具有預設策略:

  • 忽略 volume

這是基於2個前提:

  • 在市場中交易的流動性足以一次性完全吸收買入/賣出訂單

  • 真正的 volume 匹配需要真正的狼

    一個簡單的例子是Fill or Kill 訂單。即使到了價格變動解析度,並且有足夠的 volume 來填充, backtrader 經紀人也無法知道市場上碰巧有多少額外的參與者來區分這樣的訂單是否會匹配以粘附在零件上 Fill ,或者訂單是否應該 Kill

但是經紀人可以接受 Volume 填充物,這些填充物決定了在給定時間點必須使用多少 volume 用於訂單匹配。

填料簽名

backtrader生態系統中的填充物可以是與以下簽名匹配的任何可調用的填充物:

callable(order, price, ago)

哪裡:

  • order 是將要執行的訂單

    此物件允許訪問data 作為操作目標的物件,創建大小/價格,執行價格/大小/剩餘大小和其他詳細資訊

  • price 訂單的執行時間

  • ago是按順序查找volume和價格元素的索引data

    在幾乎所有情況下,這將是0 (當前時間點),但在角落情況下,為了涵蓋 Close 訂單,這可能是 -1

    例如,要訪問欄 volume 執行以下操作:

    barvolume = order.data.volume[ago]
    

可調用可以是函數,也可以是支援該__call__ 方法的類的實例,例如:

class MyFiller(object):
    def __call__(self, order, price, ago):
        pass

向代理添加填充程式

最直接的set_filler方法是使用:

import backtrader as bt

cerebro = Cerebro()
cerebro.broker.set_filler(bt.broker.fillers.FixedSize())

第二種選擇是完全替換 ,broker儘管這可能僅適用於已重寫部分功能的 BrokerBack 子類:

import backtrader as bt

cerebro = Cerebro()
filler = bt.broker.fillers.FixedSize()
newbroker = bt.broker.BrokerBack(filler=filler)
cerebro.broker = newbroker

示例

backtrader源包含一個名為樣本的樣本,該樣本volumefilling允許測試一些集成的fillers(最初全部)

參考

backtrader.fillers.固定大小()

使用柱中 volume 百分比返回給定訂單的執行大小。

此百分比通過參數設置perc

參數:

  • size (預設值: None)要執行的最大大小。如果小於大小,則執行時柱的實際 volume 也是一個限制

    如果此參數的值計算結果為 False,則柱的整個 volume 將用於匹配訂單

backtrader.fillers.FixedBarPerc()

使用柱中 volume 百分比返回給定訂單的執行大小。

此百分比通過參數設置perc

參數:

  • perc (預設值: 100.0)(評估值: 0.0 - 100.0

    用於執行訂單的 volume 柱的百分比

backtrader.fillers.BarPointPerc()

返回給定訂單的執行大小。 volume 將均勻分佈在 high範圍內 -low 用於minmov 分區。

從給定價格的分配 volumeperc ,將使用百分比

參數:

  • minmov (預設值: 0.01

    最小價格變動。用於劃分範圍high-low在可能的價格之間按比例分配volume

  • perc (預設值: 100.0)(評估值: 0.0 - 100.0

    分配給訂單執行價格以用於匹配的 volume 百分比

推薦閱讀

相關文章

Backtrader教程:分析儀

無論是回溯測試還是交易,能夠分析交易系統的性能是瞭解是否不僅獲得了利潤,而且是否在風險太大的情況下實現了利潤,或者與參考資產(或無風險資產)相比,是否真的值得付出努力的關鍵。 這就是物件家族的用武之Analyzer 地:提供對所發生事件甚至實際發生的事情的分析。

Backtrader改進代碼

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

Backtrader教程:安裝

要求和版本 backtrader 是獨立的,沒有外部依賴關係(除非要繪圖) 基本要求是: Python 2.7 Python 3.2 / 3.3/ 3.4 / 3.5 pypy/pypy3 如果需要繪圖,則其他要求: Matplotlib >= 1.4.

Backtrader股票篩選

在尋找其他一些東西時,我在StackOverlow家族網站之一上遇到了一個問題:Quantitative Finance aka Quant StackExchange。問題: 它被標記為Python,因此值得一看的是 backtrader 是否能夠勝任這項任務。 分析儀本身 該問題似乎適合用於簡單的分析器。

BacktraderPyFolio 集成

注意 2017年2月 pyfolio API 已更改,不再 create_full_tear_sheet 具有 gross_lev 作為命名參數的參數。

Backtrader擴展數據饋送

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

Backtrader交叉回溯測試陷阱

在backtrader 社區中 ,傾向於重複的事情是,用戶解釋了複製在例如 TradingView 中獲得的回溯測試結果的意願,這些天非常流行,或者其他一些回溯測試平臺。

Backtrader教程:日期時間 - 管理

在 1.5.0 版之前, backtrader 使用直接的方法來進行時間管理,因為數據源計算的任何日期時間都只是按面值使用。 對於任何使用者輸入也是如此,例如可以提供給任何數據源的參數fromdate (或 sessionstart)的情況 考慮到直接控制凍結的數據源以進行回溯測試,這種方法很好。

Backtrader教程:數據饋送 - 雅虎

2017年5月,雅虎停止了現有的CSV格式歷史數據下載API。 一個新的API(這裡命名v7)很快被標準化並已實現。 這也帶來了實際CSV下載格式的變化。 使用 v7 API/格式 從版本1.9.49.116 開始,這是預設行為。

Backtrader開場作弊

“發佈”1.9.44.116 添加了對 Cheat-On-Open的支援。這似乎是那些全力以赴的人的需求功能,他們在酒吧 close 后進行了計算,但希望與 open 價格相匹配。 當開盤價跳空(上漲或下跌,取決於是否buysell有效)並且現金不足以進行全面運營時,這樣的用例就會失敗。這將強制代理拒絕該操作。