Backtrader(十二)- 订单 Order -buy、sell、close
簡介
訂單代表著發送給經紀行的指令,觸發經紀行(用broker對象模擬經紀行)執行相關的動作。通常在策略類中的next方法中創建訂單。
下訂單(買賣)的方法
self.buy()、self.sell()、self.close()、self.order_target_size()、self.order_target_value()、self.order_target_percent() 等
buy()
def buy(self, data=None,size=None, price=None, plimit=None,exectype=None, valid=None, tradeid=0, oco=None,trailamount=None, trailpercent=None,parent=None, transmit=True,**kwargs):參數解釋:
data: 所要操作的行情數據,即標的資產數據。如果為None,則使用策略的self.datas[0]行情數據
size:下單量,size是一個正數。如果size=None,就會通過下單量管理者sizer確定下單量。
price:交易價格。默認值None適用于Market、Close訂單。由市場決定具體的交易價格,對于Limit、Stop、StopLimit訂單,必須顯式給price賦值,price值決定了交易的觸發點。對于 StopTrail、StopTrailLimit 訂單,是否顯式設置price,將決定不同的交易觸發點
plimit:只適用于StopLimit , StopTrailLimit 訂單。plimit 為限制價,而price為訂單執行觸發價格
exectype:此字段指明所創建訂單的類型,可取值如下:
bt.Order.Market 市價單(默認)
bt.Order.Close 收盤價單
bt.Order.Limit 限價單
bt.Order.Stop 止損單
bt.Order.StopLimit 止損限價單
bt.Order.StopTrail 止損跟蹤單
bt.Order.StopTrailLimit 止損跟蹤限價單
bt.Order.Historical:未知
valid:
可能的取值
None 生成的訂單不會過期,將一直在市場中等待滿足條件后執行或被手動取消
datetime.datetime / datetime.date 創建的訂單直到該日期時間有效。若超過該日期時間,且訂單仍未滿足執行條件,則訂單過期取消
Order.DAY / 0 / timedelta() 生成一個單日訂單,有效期為1天,單日未滿足執行條件,訂單就會過期取消,這個通常用于bar是分鐘級別的日內交易。對于日線級別的bar不適用
numeric value 對應于matplotlib中的日期時間格式的數值,作為訂單有效期截止時間
tradeid:這是backtrader應用的一個內部值,用于跟蹤相同資產上的重疊交易。當通知訂單狀態的變化時,此tradeid被發送回策略
** kwargs:用于其他broker可能支持的額外參數。backtrader將kwargs傳遞給創建的order對象,供這些broker使用,如Interactive Brokers支持:orderType、lmtPrice、auxPrice
返回值:
被創建的訂單對象
sell()
def sell(self, data=None,size=None, price=None, plimit=None,exectype=None, valid=None, tradeid=0, oco=None,trailamount=None, trailpercent=None,parent=None, transmit=True,**kwargs):參數:與buy完全相同
close()
介紹:
close方法首先檢查當前的持倉情況,然后根據持倉情況對應地使用buy或者sell方法來清空倉位,即平倉。也就是對長倉,用sell方法,對短倉用buy方法來平倉,如果用戶不指定具體的size值,size會被自動計算,完全平倉。如果指定來size值,且size比持倉量少,那么將實現部分平倉。
參數:與 buy 完全相同。
總結
以上是生活随笔為你收集整理的Backtrader(十二)- 订单 Order -buy、sell、close的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: zeek系列之:流量数据采集流量探针ze
- 下一篇: JAVA基于微信小程序的校园信息共享平台