我在用BacktestingEngine时,每次都发送停止单,并且希望每次调用on_trade时把trade.volume记录下来,结果发现volume为0,这个可能是什么原因呢?
我在用BacktestingEngine时,每次都发送停止单,并且希望每次调用on_trade时把trade.volume记录下来,结果发现volume为0,这个可能是什么原因呢?
def backtesting_on_trade(self, trade:TradeData):
trade_amount = trade.volume
if trade.direction.value == '多':
prev_amount = self.pos - trade_amount
else:
prev_amount = self.pos + trade_amount
print(prev_amount, trade_amount)
self.avg_holding_price = (abs(prev_amount)*self.avg_holding_price + trade_amount*trade.price)\
/ (abs(prev_amount) + trade_amount)
self.put_event()
结果第一次调用on_trade就报错,显示self.pos 和trade_amount都为0
backtesting_on_trade
/ (abs(prev_amount) + trade_amount)
ZeroDivisionError: float division by zero
不知道你自己写的这个backtesting_on_trade具体怎么调用的了。要获取成交信息,策略的on_trade函数就能收到
xiaohe wrote:
不知道你自己写的这个backtesting_on_trade具体怎么调用的了。要获取成交信息,策略的on_trade函数就能收到
谢谢回复啦,我发现我用的是米筐RB888合约做的回测,应该是收盘价出现了负数