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
分區。
從給定價格的分配 volume 中perc
,將使用百分比
參數:
-
minmov
(預設值:0.01
)最小價格變動。用於劃分範圍high-low在可能的價格之間按比例分配volume
-
perc
(預設值:100.0
)(評估值:0.0 - 100.0
)分配給訂單執行價格以用於匹配的 volume 百分比