VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 16
声望: 0

我在用BacktestingEngine时,每次都发送停止单,并且希望每次调用on_trade时把trade.volume记录下来,结果发现volume为0,这个可能是什么原因呢?

Member
avatar
加入于:
帖子: 16
声望: 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()
Member
avatar
加入于:
帖子: 16
声望: 0

结果第一次调用on_trade就报错,显示self.pos 和trade_amount都为0

backtesting_on_trade
/ (abs(prev_amount) + trade_amount)
ZeroDivisionError: float division by zero

Member
avatar
加入于:
帖子: 4684
声望: 285

不知道你自己写的这个backtesting_on_trade具体怎么调用的了。要获取成交信息,策略的on_trade函数就能收到

Member
avatar
加入于:
帖子: 16
声望: 0

xiaohe wrote:

不知道你自己写的这个backtesting_on_trade具体怎么调用的了。要获取成交信息,策略的on_trade函数就能收到
谢谢回复啦,我发现我用的是米筐RB888合约做的回测,应该是收盘价出现了负数

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】