核心用法
vn.py 采用模块化架构,通过 Python 编写策略逻辑并直接对接实盘。核心组件包括:
- Gateway(网关层):封装 CTP、Femas、恒生 UFT、EMT、XTP、IB、Alpaca 等 20+ 交易接口,实现行情与订单的统一接入
- App(应用层):提供 CtaStrategy(CTA 策略)、SpreadTrading(价差交易)、OptionMaster(期权波动率)、PortfolioStrategy(组合策略)、AlgoTrading(算法交易)等成熟模块
- DataService:支持 RQData、TuShare 等数据源,配合 DataManager 实现历史数据下载与管理
- BarGenerator / ArrayManager:内置 Tick 合成多周期 K 线(1/3/5/15/30/60 分钟及自定义周期),并提供 SMA、EMA、RSI、MACD、布林带、ATR 等 20+ 技术指标,无需依赖外部库
策略开发遵循模板化设计:继承 CtaTemplate,重写 on_init、on_start、on_tick、on_bar 等回调,通过 buy/sell/short/cover 发送指令,put_event 刷新 GUI 状态。实盘只需配置网关连接参数,即可一键切换模拟/真实账户。
显著优点
1. 国内生态最成熟:社区活跃、中文文档完善、教学资源丰富(B站/公众号/微信群),新手友好
2. 实盘就绪:直接对接 CTP 等主流柜台,无需额外适配层,降低生产环境部署成本
3. 模块化可扩展:网关、策略、数据源均可独立安装(vnpy-ctp、vnpy-ctastrategy 等),按需组合
4. 完整技术栈:从数据获取、回测、参数优化到实盘交易形成闭环,减少工具链切换
潜在缺点与局限
- Python 性能瓶颈:高频或 Tick 级策略可能受 GIL 限制,需结合 C++ 改写或选用底层更快的框架
- 主要面向中国市场:外盘接口(IB、Alpaca)功能相对基础,国际用户支持有限
- GUI 依赖 Qt:无头服务器部署需额外处理 Qt 依赖,容器化略显繁琐
- 回测速度中等:未内置向量化回测加速,大规模历史数据回测效率不及专业商业软件
适合人群
- 国内期货/证券量化个人开发者、私募技术团队
- 需要快速验证 CTA、套利、期权策略并直接上实盘的中低频交易者
- 希望避免商业软件授权费用、偏好开源可控方案的用户
常规风险
1. 实盘连接风险:CTP 等接口配置错误(如行情/交易地址混淆、AuthCode 过期)可能导致无法下单或行情中断
2. 策略逻辑风险:未充分处理的边界条件(开盘跳空、涨跌停、合约到期)可能在极端行情下造成意外持仓或重复下单
3. 数据质量风险:免费数据源(如 TuShare)存在延迟或缺失,实盘前务必用专业数据服务(RQData)校准
4. 技术运维风险:Python 运行时异常、网络抖动可能导致策略进程崩溃,需配套进程守护与异常告警机制
5. 合规风险:接入实盘需具备相应交易编码与权限,模拟账户(SimNow)与实盘行为可能存在差异,切换时需充分测试