在self.buy(bar.close_price + 5, self.fixed_size) 后面加上
print("开仓"),
在self.sell(long_stop, abs(self.pos), stop=True)加上
print("平多仓")
输出来应该是一次“开仓”一次“平多单”,为什么一直输出“开多仓”,然后再输出“平多仓”
在self.buy(bar.close_price + 5, self.fixed_size) 后面加上
print("开仓"),
在self.sell(long_stop, abs(self.pos), stop=True)加上
print("平多仓")
输出来应该是一次“开仓”一次“平多单”,为什么一直输出“开多仓”,然后再输出“平多仓”
委托记录没有错,一开一平,但是就是打印输出有问题
那就是打印输出语句放的位置问题了,自己检查吧
if self.pos == 0:
self.intra_trade_high = bar.high_price
self.intra_trade_low = bar.low_price
if self.atr_value > self.atr_ma:
if self.rsi_value > self.rsi_buy:
self.buy(bar.close_price + 5, self.fixed_size)
print("开多仓")
elif self.rsi_value < self.rsi_sell:
self.short(bar.close_price - 5, self.fixed_size)
print("开空仓")
elif self.pos > 0:
self.intra_trade_high = max(self.intra_trade_high, bar.high_price)
self.intra_trade_low = bar.low_price
long_stop = self.intra_trade_high * \
(1 - self.trailing_percent / 100)
self.sell(long_stop, abs(self.pos), stop=True)
print("平多仓")
elif self.pos < 0:
self.intra_trade_low = min(self.intra_trade_low, bar.low_price)
self.intra_trade_high = bar.high_price
short_stop = self.intra_trade_low * \
(1 + self.trailing_percent / 100)
self.cover(short_stop, abs(self.pos), stop=True)
print("平空仓")
self.put_event()
放到了开仓函数和平仓函数的后面
注意,这里打印的内容是下单操作,每次on_bar调用头部的cancel_all会全部撤掉未成交委托,你要看成交记录的话,应该在on_trade里打印
成交记录里面能对上的,不懂回测的逻辑让你见笑啦,谢谢解答