Veighna 教程:从零搭建你的量化交易策略实战指南
Veighna 教程:从零搭建你的量化交易策略实战指南
如果你是量化交易领域的新手,或者正在寻找一个开源、功能强大的 Python 交易框架,那么 Veighna(原 vnpy)几乎是绕不开的名字。它由国内量化社区孵化,支持期货、股票、数字货币等多市场,核心优势在于事件驱动引擎 + 模块化策略开发。但很多用户卡在第一步:下载后怎么跑起来?策略怎么写?回测和实盘怎么衔接?本文用最直白的语言,带你走完一个完整的 Veighna 入门流程。
Veighna 安装与基础环境配置
Veighna 基于 Python 3.7+,推荐使用 Anaconda 管理环境。安装前请注意:不要直接在全局 Python 里装,否则依赖冲突会让你怀疑人生。
-
创建虚拟环境
打开终端,运行:
bash conda create -n veighna python=3.9 conda activate veighna -
安装 Veighna
官方推荐用 pip 安装完整版(含所有接口):
bash pip install vnpy
如果只想用核心功能,可以装vnpy基础包,再按需装接口(比如vnpy_ctp期货接口、vnpy_okx数字货币接口)。 -
启动 Veighna Trader
安装成功后,在终端输入:
bash python -m vnpy
此时会弹出 GUI 界面。第一次启动可能报错缺少数据库(默认用 SQLite,无需额外配置)。如果一切正常,你会看到左侧菜单栏:CTP、回测、策略等模块。
常见坑点:Windows 用户如果遇到 DLL 加载失败,通常需要安装 Microsoft Visual C++ Redistributable。Mac 用户注意 vnpy 对某些 C++ 扩展的兼容性,建议用 Docker 或 Linux 虚拟机。
编写第一个双均线策略(回测 + 参数优化)
Veighna 的策略逻辑写在 Python 类里,继承 CtaTemplate。我们以最常见的双均线金叉死叉为例,手写一个完整的策略。
策略代码模板
from vnpy_ctastrategy import CtaTemplate, BarGenerator, ArrayManager
class DoubleMaStrategy(CtaTemplate):
author = "YourName"
fast_window = 10 # 快线周期
slow_window = 20 # 慢线周期
def on_init(self):
self.bg = BarGenerator(self.on_bar, 1, self.on_5min_bar)
self.am = ArrayManager(size=100)
def on_bar(self, bar):
self.bg.update_bar(bar)
def on_5min_bar(self, bar):
self.am.update_bar(bar)
if not self.am.inited:
return
fast_ma = self.am.sma(self.fast_window, array=True)
slow_ma = self.am.sma(self.slow_window, array=True)
if fast_ma[-1] > slow_ma[-1] and fast_ma[-2] <= slow_ma[-2]:
self.buy(bar.close_price, 1) # 开多
elif fast_ma[-1] < slow_ma[-1] and fast_ma[-2] >= slow_ma[-2]:
self.short(bar.close_price, 1) # 开空
回测运行步骤
- 在 Veighna Trader 界面中,点击左侧「回测」标签。
- 选择数据(比如从本地 CSV 导入或连接数据库),设置回测时间范围、初始资金、手续费。
- 在「策略」下拉框中选择
DoubleMaStrategy,调整参数(比如fast_window改成 5,slow_window改成 30)。 - 点击「开始回测」。结束后查看净值曲线、最大回撤、夏普比率等指标。
优化技巧:Veighna 内置了参数优化功能。在回测界面勾选「优化」,设定参数范围(如 fast_window 从 5 到 20,步长 5),系统会自动遍历并输出最优组合。注意:优化过度容易过拟合,建议用样本外数据验证。
从回测到实盘:接口配置与风险控制
回测跑通后,很多人急着实盘。但 Veighna 的实盘和回测有本质区别:实盘需要对接交易所接口,且必须考虑滑点、网络延迟、资金管理。
连接数字货币交易所(以 OKX 为例)
- 在 Veighna Trader 左侧菜单点击「系统」→「连接」→「OKX」。
- 输入你的 API Key、Secret、Passphrase(在 OKX 官网创建,权限至少勾选「交易」和「读取」)。
- 连接成功后,行情数据会自动推送,账户持仓和委托会显示在界面中。
注意:Veighna 的 OKX 接口支持 U 本位和币本位合约,但需要手动在代码中指定合约类型。如果你不熟悉 API 配置,或者希望更专注于策略本身,可以试试 Quant Pro 量化交易系统(trade.medias-ai.cloud/zh/pro/)。它直接内置了 OKX 和 Hyperliquid 的实盘接入,无需手动配置接口,而且资金始终留在你的交易所账户,系统只负责机械执行——每 5 分钟评估一次行情,按净费后期望(net-fee EV)决定是否入场,每一步都有「决策台」记录,不是黑箱信号。
实盘风险控制建议
Veighna 本身不强制风控,需要你在策略中自行实现。核心几点:
- 止损:在
on_bar里判断当前价格是否跌破移动止损线,调用self.sell()平仓。 - 仓位管理:用固定比例(如每次开仓占用总资金的 2%)而非固定手数。
- 日亏损限额:在
on_trade中累计当日盈亏,如果超过阈值,停止所有交易。
如果你觉得手动写风控逻辑太繁琐,Quant Pro 的「风险信封」功能已经帮你想好了:盈利目标、移动止损、回撤调速、日亏止血闸、KILL 急停一应俱全。亏损发生时先止血,再复盘。
常见问题 FAQ
Q1: Veighna 回测结果和实盘差异很大,怎么办?
大概率是回测没有考虑滑点和手续费。建议在回测设置中增加滑点(比如 1 跳)和手续费(按交易所实际费率)。另外,实盘的网络延迟会导致成交价偏离,可以考虑用限价单代替市价单。
Q2: 我是新手,Veighna 学起来太复杂,有没有更简单的替代方案?
Veighna 适合有一定 Python 基础、愿意折腾的用户。如果你想要一个开箱即用的方案,可以了解 Quant Pro 量化交易系统。它不需要写代码,通过图形化界面配置策略参数,且自带 AI 洞察套件(用你自己的 LLM Key),AI 负责复盘和问答,但交易决策不依赖 AI——完全基于统计核心的机械执行。
Q3: Veighna 支持哪些交易所?
官方内置了 CTP(期货)、OKX、Binance、BitMEX 等常见接口。社区还贡献了币安合约、Coinbase 等扩展包。如果你需要连接 Hyperliquid,可以自建接口或使用 Quant Pro(已原生支持 Hyperliquid 实盘接入)。