VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 4
声望: 0

晚上调试策略,弄好了重新启动vnpy,点了链接ctp但是应该是服务器关掉了并没有出现连接正常的信息,
这个时候想直接启动策略,让CTP连接上了可以直接运行,但是点了启动之后,系统报错,好像是无法找到那个行情代码之类的话,因为CTP行情服务器没有启动,想着应该是正常,但是第二天没有自动启动策略,而是点停止策略也无法停止,点停止报错信息如下:

Traceback (most recent call last):
  File "c:\vnstudio\lib\site-packages\vnpy_ctastrategy\ui\widget.py", line 278, in stop_strategy
    self.cta_engine.stop_strategy(self.strategy_name)
  File "c:\vnstudio\lib\site-packages\vnpy_ctastrategy\engine.py", line 745, in stop_strategy
    self.sync_strategy_data(strategy)
  File "c:\vnstudio\lib\site-packages\vnpy_ctastrategy\engine.py", line 845, in sync_strategy_data
    save_json(self.data_filename, self.strategy_data)
  File "c:\vnstudio\lib\site-packages\vnpy\trader\utility.py", line 116, in save_json
    ensure_ascii=False
  File "c:\vnstudio\lib\json\__init__.py", line 179, in dump
    for chunk in iterable:
  File "c:\vnstudio\lib\json\encoder.py", line 431, in _iterencode
    yield from _iterencode_dict(o, _current_indent_level)
  File "c:\vnstudio\lib\json\encoder.py", line 405, in _iterencode_dict
    yield from chunks
  File "c:\vnstudio\lib\json\encoder.py", line 405, in _iterencode_dict
    yield from chunks
  File "c:\vnstudio\lib\json\encoder.py", line 438, in _iterencode
    o = _default(o)
  File "c:\vnstudio\lib\json\encoder.py", line 179, in default
    raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type ndarray is not JSON serializable

想着是不是有点异常,关闭vnpy后,重启服务器,然后重新连接好ctp接口之后,点击启动CTA策略,促发异常如下:

Traceback (most recent call last):
  File "c:\vnstudio\lib\site-packages\vnpy\trader\ui\mainwindow.py", line 282, in open_widget
    widget = widget_class(self.main_engine, self.event_engine)
  File "c:\vnstudio\lib\site-packages\vnpy_ctastrategy\ui\widget.py", line 38, in __init__
    self.cta_engine.init_engine()
  File "c:\vnstudio\lib\site-packages\vnpy_ctastrategy\engine.py", line 115, in init_engine
    self.load_strategy_data()
  File "c:\vnstudio\lib\site-packages\vnpy_ctastrategy\engine.py", line 834, in load_strategy_data
    self.strategy_data = load_json(self.data_filename)
  File "c:\vnstudio\lib\site-packages\vnpy\trader\utility.py", line 99, in load_json
    data = json.load(f)
  File "c:\vnstudio\lib\json\__init__.py", line 296, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "c:\vnstudio\lib\json\__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "c:\vnstudio\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "c:\vnstudio\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 57 column 20 (char 1215)

感觉就是策略引擎有问题,试了一下CTA策略回测
所有策略均无法运营,log里面只有这四行

13:28:59    初始化CTA回测引擎
13:28:59    策略文件加载完成
13:28:59    数据服务初始化成功
13:29:00    策略文件重载刷新完成

再无其他。始终无法启动CTA引擎

VNPY版本:2.9.0

Super Moderator
avatar
加入于:
帖子: 554
声望: 43

策略的参数只能使用string,int,bool,你这里把对象传进参数里了。导致持久化数据时,json文件出错了,之后就打不开了。删除用户名目录下.vntrader下cta_strategy_data.json文件,然后再重启试试。

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

郭易燔 wrote:

策略的参数只能使用string,int,bool,你这里把对象传进参数里了。导致持久化数据时,json文件出错了,之后就打不开了。删除用户名目录下.vntrader下cta_strategy_data.json文件,然后再重启试试。

好了,非常感谢!是这样的。

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

沪公网安备 31011502017034号

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