我看论坛里面说是写在on_trade里面, 但是demo策略 BollChannelStrategy 是写在on_bar上面. 目前遇到两个问题,请大神不吝赐教!
- buy,sell,cover,short 这些函数的第三个参数 stop 是不是专门用做止盈止损这种条件单的?
- 我的停止单即使价格达到了也没有触发, 不知道是不是代码逻辑写的有问题,代码如下:
# 使用bar.close_price 作为当前市价最新价 def on_5min_bar(): self.cancel_all() if 达到开多条件: # 计算多单止损和止盈价格, 开多之后下停止委托单 self.long_stop_lose = 开多止损价格 self.long_stop_win = 开多止盈价格 if self.pos == 0: self.buy(bar.close_price, self.fixed_size) elif self.pos > 0: # 开多之后下止盈,止损停止委托单 self.sell(self.long_stop_lose, abs(self.pos), True) self.sell(self.long_stop_win, abs(self.pos), True) elif self.pos < 0 : # 平掉空单 self.cover(bar.close_price, abs(self.pos)) # 开多单 self.buy(self.close_price, self.fixed_size) if 达到开空条件: # 计算空单止损和止盈价格, 开空之后下停止委托单 self.short_stop_lose = 空单止损价格 self.short_stop_win = 空单止盈价格 if self.pos == 0: self.short(bar.close_price, self.fixed_size) elif self.pos < 0: # 开空之后下止盈,止损停止委托单 self.cover(self.short_stop_lose, abs(self.pos), True) self.cover(self.short_stop_win, abs(self.pos), True) elif self.pos > 0 : # 平掉多单 self.sell(bar.close_price, abs(self.pos)) # 开空单 self.short(self.close_price, self.fixed_size)