vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 37
声望: 1

我看论坛里面说是写在on_trade里面, 但是demo策略 BollChannelStrategy 是写在on_bar上面. 目前遇到两个问题,请大神不吝赐教!

  1. buy,sell,cover,short 这些函数的第三个参数 stop 是不是专门用做止盈止损这种条件单的?
  2. 我的停止单即使价格达到了也没有触发, 不知道是不是代码逻辑写的有问题,代码如下:
    # 使用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)
Administrator
avatar
加入于:
帖子: 1868
声望: 85
  1. stop为True,则是下停止单
  2. 你的逻辑写法有点问题,每次下单后要收到交易所返回的成交回报pos才会发生变化,而你判断是否要下止损单的逻辑紧接在开仓逻辑后,此时还没收到成交回报,因此pos为0
© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3