[Add] more log output for arbitrage algo

This commit is contained in:
vn.py 2019-06-16 15:25:06 +08:00
parent 0aa1bda8df
commit ab605767b6
2 changed files with 15 additions and 6 deletions

View File

@ -87,6 +87,7 @@ class ArbitrageAlgo(AlgoTemplate):
# Hedge if active symbol traded # Hedge if active symbol traded
if trade.vt_symbol == self.active_vt_symbol: if trade.vt_symbol == self.active_vt_symbol:
self.write_log("收到主动腿成交回报,执行对冲")
self.hedge() self.hedge()
self.put_variables_event() self.put_variables_event()
@ -102,11 +103,13 @@ class ArbitrageAlgo(AlgoTemplate):
# Cancel all active orders before moving on # Cancel all active orders before moving on
if self.active_vt_orderid or self.passive_vt_orderid: if self.active_vt_orderid or self.passive_vt_orderid:
self.write_log("有未成交委托,执行撤单")
self.cancel_all() self.cancel_all()
return return
# Make sure that active leg is fully hedged by passive leg # Make sure that active leg is fully hedged by passive leg
if (self.active_pos + self.passive_pos) != 0: if (self.active_pos + self.passive_pos) != 0:
self.write_log("主动腿和被动腿数量不一致,执行对冲")
self.hedge() self.hedge()
return return
@ -114,6 +117,7 @@ class ArbitrageAlgo(AlgoTemplate):
active_tick = self.get_tick(self.active_vt_symbol) active_tick = self.get_tick(self.active_vt_symbol)
passive_tick = self.get_tick(self.passive_vt_symbol) passive_tick = self.get_tick(self.passive_vt_symbol)
if not active_tick or not passive_tick: if not active_tick or not passive_tick:
self.write_log("获取某条套利腿的行情失败,无法交易")
return return
# Calculate spread # Calculate spread
@ -125,12 +129,16 @@ class ArbitrageAlgo(AlgoTemplate):
spread_ask_volume = min(active_tick.ask_volume_1, spread_ask_volume = min(active_tick.ask_volume_1,
passive_tick.bid_volume_1) passive_tick.bid_volume_1)
self.write_log(f"盘口价差,买:{spread_bid_volume}@{spread_bid_price}") msg = f"价差盘口,买:{spread_bid_price} ({spread_bid_volume}),卖:{spread_ask_price} ({spread_ask_volume})"
self.write_log(f"盘口价差,卖:{spread_ask_volume}@{spread_ask_price}") self.write_log(msg)
# Sell condition # Sell condition
if spread_bid_price > self.spread_up: if spread_bid_price > self.spread_up:
self.write_log("套利价差超过上限,满足做空条件")
if self.active_pos > -self.max_pos: if self.active_pos > -self.max_pos:
self.write_log("当前持仓小于最大持仓限制,执行卖出操作")
volume = min(spread_bid_volume, volume = min(spread_bid_volume,
self.active_pos + self.max_pos) self.active_pos + self.max_pos)
@ -142,7 +150,11 @@ class ArbitrageAlgo(AlgoTemplate):
# Buy condition # Buy condition
elif spread_ask_price < -self.spread_down: elif spread_ask_price < -self.spread_down:
self.write_log("套利价差超过下限,满足做多条件")
if self.active_pos < self.max_pos: if self.active_pos < self.max_pos:
self.write_log("当前持仓小于最大持仓限制,执行买入操作")
volume = min(spread_ask_volume, volume = min(spread_ask_volume,
self.max_pos - self.active_pos) self.max_pos - self.active_pos)

View File

@ -661,14 +661,11 @@ class BitmexWebsocketApi(WebsocketClient):
def on_position(self, d): def on_position(self, d):
"""""" """"""
if not d["currentQty"]:
return
position = PositionData( position = PositionData(
symbol=d["symbol"], symbol=d["symbol"],
exchange=Exchange.BITMEX, exchange=Exchange.BITMEX,
direction=Direction.NET, direction=Direction.NET,
volume=d["currentQty"], volume=d.get("currentQty", 0),
gateway_name=self.gateway_name, gateway_name=self.gateway_name,
) )