我看论坛里面说是写在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)

