下面这个generate_trade_pairs应该是生成交易对的,没完全看明白,程序是怎么判断两个交易是一对的。如果有加仓,开和平仓并不是相邻的,显示会不会有BUG。
因为我编写的策略有加仓,感觉显示出来的交易对有问题
\vnpy\app\cta_backtester\ui\widget.py
def generate_trade_pairs(trades: list) -> list:
""""""
long_trades = []
short_trades = []
trade_pairs = []
for trade in trades:
trade = copy(trade)
if trade.direction == Direction.LONG:
same_direction = long_trades
opposite_direction = short_trades
else:
same_direction = short_trades
opposite_direction = long_trades
while trade.volume and opposite_direction:
open_trade = opposite_direction[0]
close_volume = min(open_trade.volume, trade.volume)
d = {
"open_dt": open_trade.datetime,
"open_price": open_trade.price,
"close_dt": trade.datetime,
"close_price": trade.price,
"direction": open_trade.direction,
"volume": close_volume,
}
trade_pairs.append(d)
open_trade.volume -= close_volume
if not open_trade.volume:
opposite_direction.pop(0)
trade.volume -= close_volume
if trade.volume:
same_direction.append(trade)
return trade_pairs