vn.py官网
开源量化社区
Member
avatar
加入于:
帖子: 2
声望: 0

付费课程里面有一个组合策略中,合成bars的案例,进过简单修改,然后实盘启动的实盘出现错误。
时间,信息
14:31:00.166,"test: 触发异常已停止
Traceback (most recent call last):
File ""c:\vnstudio\lib\site-packages\vnpy\app\portfolio_strategy\engine.py"", line 326, in call_strategy_func
func(params)
File ""C:\Users\APP\strategies\momforusdt.py"", line 210, in on_tick
):
File ""c:\vnstudio\lib\site-packages\vnpy\trader\utility.py"", line 423, in generate
self.on_bar(bar)
TypeError: on_bar() takes 1 positional argument but 2 were given

这是策略中的代码:

 def on_tick(self, tick: TickData):
      """
      Callback of new tick data update.
      """
      if (
          self.last_tick_time
          and self.last_tick_time.minute != tick.
      ):
          bars = {}
          for vt_symbol, bg in self.bgs.items():
              bars[vt_symbol] = bg.generate()
          self.on_bars(bars)
      bg: BarGenerator = self.bgs[tick.vt_symbol]
      bg.update_tick(tick)
      self.last_tick_time = tick.datetime
  def on_bars(self, bars: Dict[str, BarData]):
      """"""
      for vt_symbol, bg in self.bgs.items():
          bar = bars[vt_symbol]
          bg.update_bar(bar)

这个是 utility.py 420行的代码


  def generate(self) -> Optional[BarData]:
      """
      Generate the bar data and call callback immediately.
      """
      bar = self.bar
      if self.bar:
          bar.datetime = bar.datetime.replace(second=0, microsecond=0)
          self.on_bar(bar)
      self.bar = None
      return bar
Member
avatar
加入于:
帖子: 3033
声望: 174

你策略初始化的时候是不是粘贴的cta策略的on_bar函数,没有去掉self这个参数

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

解决了吗?同问

Member
avatar
加入于:
帖子: 3033
声望: 174

请参考2楼

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

xiaohe wrote:

你策略初始化的时候是不是粘贴的cta策略的on_bar函数,没有去掉self这个参数
课程原版代码,除了原代码自带的BUG,无任何修改,回测环境没问题,实盘环境会报这个错。

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

ke wrote:

xiaohe wrote:

你策略初始化的时候是不是粘贴的cta策略的on_bar函数,没有去掉self这个参数
课程原版代码,除了原代码自带的BUG,无任何修改,回测环境没问题,实盘环境会报这个错。
作业2 demo_strategy,唯一改动删除了三个参数
description

Member
avatar
加入于:
帖子: 3033
声望: 174

那请贴一下你的报错截图

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

沪公网安备 31011502017034号