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模块了,没有报错了。
不知道这个问题这样解决是否合适?存在两种可能性:
- 官方打算升级spread_trading模块,还没有完成,发布的时候疏漏造成的;
- 需要另外补充安装spread_trading模块,然后启动时才可以选择spread_trading模块,有意为之?