VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 21
声望: 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
加入于:
帖子: 4500
声望: 320
  1. stop为True,则是下停止单
  2. 你的逻辑写法有点问题,每次下单后要收到交易所返回的成交回报pos才会发生变化,而你判断是否要下止损单的逻辑紧接在开仓逻辑后,此时还没收到成交回报,因此pos为0
Member
avatar
加入于:
帖子: 4
声望: 0

用Python的交易员 wrote:

  1. stop为True,则是下停止单
  2. 你的逻辑写法有点问题,每次下单后要收到交易所返回的成交回报pos才会发生变化,而你判断是否要下止损单的逻辑紧接在开仓逻辑后,此时还没收到成交回报,因此pos为0
Member
avatar
加入于:
帖子: 4
声望: 0

不是吧,下单运行之后pos确实为0,但是下一个bar就会有pos了,因此开仓后的下一个bar会止损或者止盈

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

您好, 这个问题您解决了吗?

Member
avatar
加入于:
帖子: 84
声望: 3

on_trade是交易所告诉你你的单子成交了,on_bar只是VNPY里面合成了一个bar之后的回调函数。send_order之后不是说就能成交,要等on_trade被调用才知道的

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

yuanhuei wrote:

on_trade是交易所告诉你你的单子成交了,on_bar只是VNPY里面合成了一个bar之后的回调函数。send_order之后不是说就能成交,要等on_trade被调用才知道的
那需要自己更新 self.pos么?

Member
avatar
加入于:
帖子: 4618
声望: 284

不需要

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

沪公网安备 31011502017034号

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