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

1. 升级到vnpy 2.5.0后,只要选择spread_trading功能,就报如下错误:

难道包含新版本去掉价差交易功能了吗?

(VN Studio) D:\ProgramFiles\vnstudio>python -m vnstation
qt.network.ssl: QSslSocket: cannot resolve SSL_CTX_set_ciphersuites
qt.network.ssl: QSslSocket: cannot resolve SSL_set_psk_use_session_callback
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_set_psk_use_session_callback
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_set_psk_use_session_callback
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_set_psk_use_session_callback
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_set_psk_use_session_callback

(VN Studio) D:\ProgramFiles\vnstudio>python -m vnstation
qt.network.ssl: QSslSocket: cannot resolve SSL_CTX_set_ciphersuites
qt.network.ssl: QSslSocket: cannot resolve SSL_set_psk_use_session_callback
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_set_psk_use_session_callback
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_set_psk_use_session_callback
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_set_psk_use_session_callback
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_set_psk_use_session_callback
Traceback (most recent call last):
  File "D:\ProgramFiles\vnstudio\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "D:\ProgramFiles\vnstudio\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "D:\ProgramFiles\vnstudio\lib\site-packages\vnstation\__main__.py", line 4, in <module>
    cli()
  File "D:\ProgramFiles\vnstudio\lib\site-packages\click\core.py", line 1137, in __call__
    return self.main(*args, **kwargs)
  File "D:\ProgramFiles\vnstudio\lib\site-packages\click\core.py", line 1062, in main
    rv = self.invoke(ctx)
  File "D:\ProgramFiles\vnstudio\lib\site-packages\click\core.py", line 1668, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "D:\ProgramFiles\vnstudio\lib\site-packages\click\core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "D:\ProgramFiles\vnstudio\lib\site-packages\click\core.py", line 763, in invoke
    return __callback(*args, **kwargs)
  File "D:\ProgramFiles\vnstudio\lib\site-packages\vnstation\cli.py", line 28, in runtrader
    run_trader(s)
  File "D:\ProgramFiles\vnstudio\lib\site-packages\vnstation\cli.py", line 89, in run_trader
    module = importlib.import_module(d["module"])
  File "D:\ProgramFiles\vnstudio\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'vnpy_spreadtrading'

2. 如何解决?

打开文件Lib\site-packages\vnstation\info.py,找到APP_INFO列表,做如下修改(见注释):

APP_INFO = [
    {
        "name": "CtaStrategy",
        "module": "vnpy_ctastrategy",
        "class": "CtaStrategyApp",
        "description": "CTA自动交易模块"
    },
    {
        "name": "CtaBacktester",
        "module": "vnpy_ctabacktester",
        "class": "CtaBacktesterApp",
        "description": "CTA回测研究模块"
    },
    {
        "name": "SpreadTrading",
        # "module": "vnpy_spreadtrading",                         # 目前的vnpy的python中并不存在vnpy_spreadtrading目录
        "module": "vnpy.app.spread_trading",                     # 把价差模块重新指向原来的目录
        "class": "SpreadTradingApp",
        "description": "多合约价差套利模块"
    },
    {
        "name": "AlgoTrading",
        "module": "vnpy.app.algo_trading",
        "class": "AlgoTradingApp",
        "description": "算法委托执行交易模块"
    },
    {
        "name": "OptionMaster",
        "module": "vnpy.app.option_master",
        "class": "OptionMasterApp",
        "description": "期权波动率交易模块"
    },
    {
        "name": "PortfolioStrategy",
        "module": "vnpy.app.portfolio_strategy",
        "class": "PortfolioStrategyApp",
        "description": "多合约组合策略模块"
    },
    {
        "name": "ScriptTrader",
        "module": "vnpy.app.script_trader",
        "class": "ScriptTraderApp",
        "description": "脚本策略交易模块"
    },
    {
        "name": "MarketRadar",
        "module": "vnpy.app.market_radar",
        "class": "MarketRadarApp",
        "description": "市场扫描雷达模块"
    },
    {
        "name": "ChartWizard",
        "module": "vnpy.app.chart_wizard",
        "class": "ChartWizardApp",
        "description": "实时K线图表模块"
    },
    {
        "name": "RpcService",
        "module": "vnpy.app.rpc_service",
        "class": "RpcServiceApp",
        "description": "RPC服务器模块"
    },
    {
        "name": "ExcelRtd",
        "module": "vnpy.app.excel_rtd",
        "class": "ExcelRtdApp",
        "description": "EXCEL RTD模块"
    },
    {
        "name": "DataManager",
        "module": "vnpy_datamanager",
        "class": "DataManagerApp",
        "description": "历史数据管理模块"
    },
    {
        "name": "DataRecorder",
        "module": "vnpy.app.data_recorder",
        "class": "DataRecorderApp",
        "description": "实盘行情记录模块"
    },
    {
        "name": "RiskManager",
        "module": "vnpy_riskmanager",
        "class": "RiskManagerApp",
        "description": "事前风险管理模块"
    },
    {
        "name": "WebTrader",
        "module": "vnpy_webtrader",
        "class": "WebTraderApp",
        "description": "Web服务器模块"
    },
    {
        "name": "PortfolioManager",
        "module": "vnpy.app.portfolio_manager",
        "class": "PortfolioManagerApp",
        "description": "投资组合管理模块"
    },
    {
        "name": "PaperAccount",
        "module": "vnpy.app.paper_account",
        "class": "PaperAccountApp",
        "description": "模拟交易账户模块"
    },
]

3. 这样修改正确吗?

按照2来修改Info.py,保存后,重新启动就再次选择spread_trading模块了,没有报错了。
不知道这个问题这样解决是否合适?存在两种可能性:

  1. 官方打算升级spread_trading模块,还没有完成,发布的时候疏漏造成的;
  2. 需要另外补充安装spread_trading模块,然后启动时才可以选择spread_trading模块,有意为之?
Administrator
avatar
加入于:
帖子: 4502
声望: 321

pip install spread_trading安装即可,这个模块我们和VNStudio一起发布了的

Administrator
avatar
加入于:
帖子: 4502
声望: 321

另外请注意每次升级都分两个步骤:

  1. 升级vnstation包
  2. 升级vnpy包

所以请查下是否运行了1没有运行到2

Member
avatar
加入于:
帖子: 420
声望: 173

用Python的交易员 wrote:

pip install spread_trading安装即可,这个模块我们和VNStudio一起发布了的

1) vnpy是卸载干净原来的系统之后重新安装的;
2)执行pip install spread_trading显示没有这样的安装包(您是否是记错了?);
3)执行pip install vnpy_spreadtrading是可以安装(我猜测的,估计应该是对的),之后把文件Lib\site-packages\vnstation\info.py中的APP_INFO列表改回去,启动就OK了。
4)这样做了之后,在Lib\site-packages\vnpy_spreadtrading和Lib\site-packages\vnpy\app\spread_trading两个目录下,存在两套有关价差交易的代码。我把Lib\site-packages\vnpy\app\spread_trading目录完全删除了,也没有报错。这说明只使用Lib\site-packages\vnpy_spreadtrading下的代码就OK了。

Member
avatar
加入于:
帖子: 4680
声望: 285

是的,应该是打错了,是vnpy_spreadtrading

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

沪公网安备 31011502017034号

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