发布于veighna社区公众号【vnpy-community】
原文作者:用Python的交易员 | 发布时间:2023-02-22
《30天精进Python交易GUI》课程更新35-40集,近6集内容中详细讲解了量化系统中的【通用化数据监控表格控件】的开发使用技巧,以及如何通过Qt Style Sheet实现【自定义交易UI界面风格美化】,感兴趣的同学请戳这里。
上周发布了VeighNa的3.6.0版本,本次更新的主要内容是增加了Mac系统上的CTP交易接口支持(本文完成于专门为此采购的Mac Mini M2~)。
对于已经安装了VeighNa Studio的用户,可以使用快速更新功能完成自动升级。对于没有安装的用户,请下载VeighNa Studio-3.6.0,体验一键安装的量化交易Python发行版,下载链接:
https://download.vnpy.com/veighna_studio-3.6.0.exe
Mac系统的CTP接口支持
得益于Python语言本身的跨平台优势(Windows、Linux、Mac三大系统),VeighNa量化交易平台的核心框架部分很早就可以在Mac系统上运行。
但由于C++类交易API对于Mac系统支持的普遍不足,导致之前只有vnpy_ib等少数【纯Python实现】的交易接口可以在Mac系统上运行,对于大部分用户来说没什么实际价值。
从6.6.7版本的CTP API开始,上期技术官方推出了对Mac系统支持,包括Intel(x86_64)和苹果M系(arm64)芯片。终于,VeighNa平台可以在Mac系统上为期货量化用户提供从投研回测到实盘交易的一体化解决方案。
Mac系统的VeighNa安装流程
目前Mac系统上还没有类似VeighNa Studio的开箱即用发行版(开发团队在抓紧研究中),需要手动完成安装流程:
1 . 前往Python官网下载3.10版本的安装包(或者使用brew安装),安装完成后在终端(Terminal)中运行命令:
python3
检查确认打开的Python解释器为3.10版本。
2 . 使用brew安装TA-Lib的C++开发包:
brew install ta-lib
3 . 安装NumPy和TA-Lib(Python),这里推荐使用豆瓣PyPI镜像解决官方源访问困难的问题:
python3 -m pip install numpy --index=https://pypi.doubanio.com/simple
python3 -m pip install ta-lib==0.4.24 --index=https://pypi.doubanio.com/simple
4 . 安装米筐RQData客户端,注意这里使用的是米筐PyPI源:
python3 -m pip install rqdatac --index=https://pypi2.ricequant.com/simple
5 . 安装VeighNa核心框架,以及需要使用的功能插件模块:
python3 -m pip install vnpy --index=https://pypi.doubanio.com/simple
python3 -m pip install vnpy_ctastrategy vnpy_ctabacktester vnpy_datamanager vnpy_sqlite vnpy_rqdata --index=https://pypi.doubanio.com/simple
这里的例子中包括(具体可以根据自己的需求调整):
- CTA策略实盘和回测模块:vnpy_ctastrategy、vnpy_ctabacktester
- 历史数据管理模块:vnpy_datamanager
- SQLite数据库驱动:vnpy_sqlite
- RQData数据服务适配器:vnpy_rqdata
pip安装过程中如果出现报错某些依赖库的缺失,可以尝试先pip install该依赖库,然后再次执行上述安装命令。
6 . 安装CTP交易接口模块:
python3 -m pip install vnpy_ctp --index=https://pypi.doubanio.com/simple
如果Intel芯片的机器上安装失败,请在App Store中安装XCode编译器后再次尝试。
完成后即可使用run.py脚本启动VeighNa Trader:
from vnpy.event import EventEngine
from vnpy.trader.engine import MainEngine
from vnpy.trader.ui import MainWindow, create_qapp
from vnpy_ctp import CtpGateway
from vnpy_ctastrategy import CtaStrategyApp
from vnpy_ctabacktester import CtaBacktesterApp
from vnpy_datamanager import DataManagerApp
def main():
"""Start VeighNa Trader"""
qapp = create_qapp()
event_engine = EventEngine()
main_engine = MainEngine(event_engine)
main_engine.add_gateway(CtpGateway)
main_engine.add_app(CtaStrategyApp)
main_engine.add_app(CtaBacktesterApp)
main_engine.add_app(DataManagerApp)
main_window = MainWindow(main_engine, event_engine)
main_window.showMaximized()
qapp.exec()
if __name__ == "__main__":
main()
附上几张Mac系统运行VeighNa平台的截图:
如果大家在安装过程中遇到任何问题,欢迎在本文评论区留言交流!
本次在Mac上开发CTP交易接口的过程中也踩了不少的坑,包括:
- 头文件和Windows/Linux定义不一致
- GBK到UTF-8的中文编码转换出错
- Clang的专属编译和链接配置参数
- Mac版本开发包中使用.a静态链接库
如果对上述内容感兴趣的话也请在评论区告诉我们,后面考虑做一期专门的技术分享文章!
CHANGELOG
新增
- 新增vnpy_ctp的Mac系统支持(M1/M2)
调整
- BaseDatafeed的相关功能函数增加output入参用于输出日志
- 修改相关数据服务模块适配output参数:vnpy_rqdata/vnpy_ifind/vnpy_wind/vnpy_tushare
- 修改相关策略应用模块适配output参数:vnpy_ctastrategy/vnpy_ctabacktester/vnpy_portfoliostrategy/vnpy_spreadtrading/vnpy_datamanager
- OffsetConverter增加对于SHFE/INE合约的锁仓模式支持
- 在OmsEngine中添加全局的OffsetConverter功能,不再需要各AppEngine自行维护
- 添加CTA策略模块在执行参数优化时的进程数量限制参数:vnpy_ctastrategy/vnpy_ctabacktester
- 增加穷举优化算法运行过程中基于tqdm的进度条输出
- 增加遗传优化算法运行过程中的迭代次数进度输出
- 增加vnpy_optionmaster模块的期权产品对应标的合约的匹配函数,不再限制产品范围
- 升级vnpy_tts的dll链接库,解决openctp升级导致的资金不显示的问题
- 修改vnpy_ctastrategy使用vnpy.trader.database中统一定义的时区来加载数据
- 增加vnpy_ctastrategy策略模板的合约乘数查询函数get_size
- 增加vnpy_spreadtrading回测中统计绩效时对于爆仓情况的检查
- 增加vnpy_scripttrader基于vt_symbol和direction查询持仓数据的函数
- 修改vt_positionid的字符串内容,增加gateway_name前缀标识
修复
- 修复异常捕捉钩子threading_excepthook的参数错误问题
- 修复vnpy_ib获取历史数据时的异常失败问题
- 修复vnpy_rest/vnpy_websocket中aiohttp的代理参数proxy传空时必须为None的问题
- 修复vnpy_optionmaster模块的Greeks监控表行数设置不足的问题
- 修复vnpy_rqdata查询股票期权数据报错的问题
- 修复vnpy_rqdata中RqdataGateway获取期货指数和连续合约信息时错误的问题
- 修复vnpy_portfoliostrategy中,从缓存文件恢复数据,导致defaultdict变成dict的问题