VeighNa量化社区
你的开源社区量化交易平台
c787297017's Avatar
Member
离线
26 帖子
声望: 1

ce597ab4a6e94c07 wrote:

c787297017 wrote:

c787297017 wrote:

我尝试在porfolio_strategy中添加止盈逻辑,大体思路如下:

  1. 在on_x_bars中记录开仓的vt_orderids,
    vt_orderids = self.buy(vt_symbol, price, target_pos)
     self.open_orderids.extend(vt_orderids)
  2. 将update_trade认为是trade的回调函数,类似于cta_strategy中的on_trade, 所以重写该方法如下

    def update_trade(self, trade: TradeData) -> None:
         """
         可认为是trade的回调函数
         """
         super().update_trade(trade)
    
         # 追踪成交的开仓单,下止盈单
         if trade.vt_orderid in self.open_orderids:
              self.sell(trade.vt_symbol, price, trade.volume) # 多单的止盈单

    简单回测发现止盈单能够正常运行,请问各位觉得有什么问题吗?

或许在update_trade中还应该添加针对self.targets的管理
比如: self.targets[trade.vt_symbol] = 0

我是实盘测试了,在多策略组合里面,是收到不到on_trade的成交回报的。 你确定你的update_trade函数能够收到trade:TradeData数据吗

多谢回复
我在回测的时候是可以通过update_trade收到TradeData的,实盘我还没有尝试,实盘的时候收不到吗?如果收不到你是怎么追踪成交数据而进行一些操作的呢?比如基于TradeData下止盈止损单之类的操作

c787297017 wrote:

我尝试在porfolio_strategy中添加止盈逻辑,大体思路如下:

  1. 在on_x_bars中记录开仓的vt_orderids,
    vt_orderids = self.buy(vt_symbol, price, target_pos)
     self.open_orderids.extend(vt_orderids)
  2. 将update_trade认为是trade的回调函数,类似于cta_strategy中的on_trade, 所以重写该方法如下

    def update_trade(self, trade: TradeData) -> None:
         """
         可认为是trade的回调函数
         """
         super().update_trade(trade)
    
         # 追踪成交的开仓单,下止盈单
         if trade.vt_orderid in self.open_orderids:
              self.sell(trade.vt_symbol, price, trade.volume) # 多单的止盈单

    简单回测发现止盈单能够正常运行,请问各位觉得有什么问题吗?

或许在update_trade中还应该添加针对self.targets的管理
比如: self.targets[trade.vt_symbol] = 0

我尝试在porfolio_strategy中添加止盈逻辑,大体思路如下:

  1. 在on_x_bars中记录开仓的vt_orderids,
    vt_orderids = self.buy(vt_symbol, price, target_pos)
     self.open_orderids.extend(vt_orderids)
  2. 将update_trade认为是trade的回调函数,类似于cta_strategy中的on_trade, 所以重写该方法如下

    def update_trade(self, trade: TradeData) -> None:
         """
         可认为是trade的回调函数
         """
         super().update_trade(trade)
    
         # 追踪成交的开仓单,下止盈单
         if trade.vt_orderid in self.open_orderids:
              self.sell(trade.vt_symbol, price, trade.volume) # 多单的止盈单

    简单回测发现止盈单能够正常运行,请问各位觉得有什么问题吗?

郭易燔 wrote:

可以在gitee或者github代码平台上fork官方的仓库,然后在代码平台上管理自己的代码

多谢哈,我目前计划的是减少跟随官方版本的升级,实在需要升级的话就fork官方版本,上传我的本地版本,然后做merge,兄弟你说的也是这个意思吧?

请问大佬在8楼中提到的“在MainEngine”中添加的部分,对应到现在的2.9.0版本,是应该添加在vnpy\trader\engine.py中的class OmsEngine中吗?因为观察到这个版本中的MainEngine中没有register_event方法,只有OmsEngine中有

我在策略的开发过程中涉及到了不少修改vnpy官方代码的地方,但与此同时官方的代码也在不断迭代,这样的话后续我本地代码想要跟上官方升级会遇到比较多的兼容性问题,请问有什么好的管理代码方式吗

© 2015-2022 微信 18391752892
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

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