# 从 vectorbt 迁移 (/zh/getting-started/vectorbt-pro-vs-vectorbt)

如果您熟悉开源 vectorbt，VectorBT PRO 增加了什么、哪些地方有变化，以及如何迁移代码？本页比较 vectorbt 和 VectorBT
PRO，并通过迁移示例，在两者中复现相同的回测。

## 简要回答 \[#short-answer]

VectorBT PRO 进一步拓展了 vectorbt 基于数组的研究方法：自动化样本外验证、模拟更精细的订单、将搜索扩展到多个核心和多台机器、优化投资组合，并与 AI
编程助手协作。它是由同一作者开发的后继版本，重新设计了 API，并提供更广泛的研究工具。下方迁移示例展示了如何将现有策略迁入 PRO。

## 熟悉的部分 \[#what-stays-familiar]

两个版本都将每种策略配置表示为数组中的一列，并同时运行大量配置。两者都基于 pandas 访问器，在资产和参数之间广播输入，使用集成 TA-Lib
等工具的指标工厂，通过信号或订单模拟投资组合并支持可选的 Numba 回调，以及利用 Plotly 图表分析交易、回撤和收益率。因此，您在 vectorbt
中的经验仍然适用，可以在熟悉的研究模式之上逐步采用 PRO 工具。

## 为什么升级到 VectorBT PRO？ \[#why-upgrade-to-vectorbt-pro]

PRO 让您更深入地控制回测，并提供更多开发、验证和扩展研究的方法。在现有的指标参数遍历和信号策略基础上，您可以增加：

*   **重复研究：** 对不同参数组合运行自定义函数，将任务拆分为块，并从已完成的任务继续执行，而不是重新启动漫长的搜索。
*   **更精细的模拟：** 添加限价单，通过分级止损止盈逐步减仓，或在新 K 线到来时继续推进同一个投资组合。
*   **样本外评估：** 在训练期选择设置，在后续时期测试，并比较不同切分和随机化基准下的结果。
*   **代码开发支持：** 使用最新示例、会员支持，以及让编程助手检查已安装 API 并运行回测的工具。

您可以使用自己的数据、指标和交易规则。Python 仍是主要的高层接口，使用 PRO 无需学习 Rust。下方链接的功能页面通过代码展示每项新增能力。

## PRO 增加了什么 \[#what-pro-adds]

| 领域      | VectorBT PRO 新增能力                                                                                                                                                                                                                                                                                                           |
| ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 数据      | 更多[数据源](/zh/features/data/market-data-sources/)、[数据库与文件格式](/zh/features/data/data-storage-and-databases/)，以及[跨时间周期的安全对齐](/zh/features/data/multi-timeframe-analysis/)                                                                                                                                                       |
| 指标与信号   | [指标表达式和更多指标库](/zh/features/indicators/technical-indicators/)，以及逐根 K 线更新的[流式指标](/zh/features/indicators/streaming-indicators/)                                                                                                                                                                                               |
| 回测      | [限价单与止损入场单](/zh/features/backtesting/orders-and-execution/)、[分级止损止盈与时间止损](/zh/features/backtesting/stop-loss-and-take-profit/)、[杠杆与合约乘数](/zh/features/backtesting/fees-slippage-and-leverage/)、[资金存入、取出和股息](/zh/features/backtesting/portfolio-accounting/)，以及[新 K 线到来时继续运行投资组合](/zh/features/backtesting/live-simulation/) |
| 分析      | [形态搜索与事件研究](/zh/features/analytics/patterns-and-event-studies/)、[每笔交易的最大不利变动（MAE）与最大有利变动（MFE）](/zh/features/analytics/trade-analytics/)，以及对完整投资组合进行[切片、堆叠](/zh/features/tooling/multidimensional-research/)或[重采样](/zh/features/data/multi-timeframe-analysis/)                                                              |
| 策略优化与验证 | [对任意函数进行参数遍历](/zh/features/optimization/strategy-optimization/)、[前向滚动与清除重叠样本的交叉验证](/zh/features/optimization/time-series-cross-validation/)，以及[稳健性测试](/zh/features/optimization/robustness-and-overfitting/)                                                                                                                |
| 投资组合优化  | [定时再平衡与资产配置函数](/zh/features/optimization/portfolio-optimization/)，支持 PyPortfolioOpt 和 Riskfolio-Lib 等外部优化器                                                                                                                                                                                                                  |
| 性能      | [在线程、进程和 Ray 之间分块执行，并支持恢复运行](/zh/features/performance/parallel-execution-and-caching/)，以及用于无需 Python、直接以 Rust 编写和运行策略的 [`vectorbtpro-rust` crate](/zh/features/performance/native-rust/)                                                                                                                                    |
| 工具与 AI  | [配置文件](/zh/features/tooling/configuration-and-persistence/)、[命令行接口](/zh/features/tooling/workflow-automation/)、[文档搜索](/zh/features/ai/knowledge-search/)、[AI 研究助手](/zh/features/ai/ai-research-assistant/)，以及面向编程助手的 [MCP 服务器](/zh/features/ai/mcp-server/)                                                                 |

### 超越基础切分的交叉验证 \[#cross-validation-beyond-basic-splits]

社区版的滚动和扩展切分器会将数组划分为窗口。PRO
则增加了完整的交叉验证流程：定义滚动、扩展、基于日历、清除重叠样本或自定义切分，在其上运行研究函数，在每个训练集上选择参数，并在对应测试集上评估所选参数。您可以检查切分，应用样本清除和隔离区间，并比较最终的样本外表现。

这样，原本不断重复的数据切分、搜索运行、设置选择和测试结果收集，就成为可复用的工作流程。实际示例请参阅[前向滚动与交叉验证](/zh/features/optimization/time-series-cross-validation/)。

PRO 还包含完整源代码、私有文档、教程、实用示例，以及用于获取支持和提出功能请求的 Discord 社区。[功能概览](/zh/features/)通过示例介绍了这些新增内容。

## 性能 \[#performance]

PRO 提供多种扩展研究工作负载的方法：Numba 和 Rust 并行内核，跨线程、进程和 Ray 的分块执行，以及依据实测耗时选择后端。两个版本都支持从 Python 调用 Numba 和 Rust
内核。PRO 在编译计算的基础上，增加了分配任务、控制内存和复用已完成结果的工具。除 Rust 后端外，PRO 还提供完整的原生 Rust crate，包括无需 Python 即可在 Rust
程序中运行的模拟器、步进器和策略回调。具体能加速多少，取决于工作负载的大小和形状。[基准测试](/zh/features/performance/benchmarks/)页面展示了实测结果，以及对应的硬件和库版本。

## 迁移代码 \[#migrating-code]

以下使用相同的比特币日线 OHLC 数据（已保存为 CSV 文件），在两个版本中运行同一策略：两条指数移动平均线交叉，并设置 10% 的移动止损。传入开盘价、最高价和最低价，可以让止损在 K
线内部触发，而不只是收盘时触发：

```python title="Before: vectorbt"
import pandas as pd
import vectorbt as vbt

ohlc = pd.read_csv("btc.csv", index_col=0, parse_dates=True)
fast = vbt.MA.run(ohlc["Close"], 10, ewm=True)
slow = vbt.MA.run(ohlc["Close"], 50, ewm=True)
entries = fast.ma_crossed_above(slow)
exits = fast.ma_crossed_below(slow)
pf = vbt.Portfolio.from_signals(
    ohlc["Close"],
    entries,
    exits,
    open=ohlc["Open"],
    high=ohlc["High"],
    low=ohlc["Low"],
    sl_stop=0.1,
    sl_trail=True,
    fees=0.001,
    freq="1D",
)
print(round(pf.total_return(), 4), round(pf.sharpe_ratio(), 4), pf.trades.count())
```

直接迁移时，只修改 PRO 中更名的部分：

```python title="After: VectorBT PRO, direct port"
import pandas as pd
import vectorbtpro as vbt

ohlc = pd.read_csv("btc.csv", index_col=0, parse_dates=True)
fast = vbt.MA.run(ohlc["Close"], 10, wtype="exp")  # (1)
slow = vbt.MA.run(ohlc["Close"], 50, wtype="exp")
entries = fast.ma_crossed_above(slow)
exits = fast.ma_crossed_below(slow)
pf = vbt.PF.from_signals(
    ohlc["Close"],
    entries,
    exits,
    open=ohlc["Open"],
    high=ohlc["High"],
    low=ohlc["Low"],
    tsl_stop=0.1,  # (2)
    fees=0.001,
    freq="1D",
)
print(round(pf.total_return, 4), round(pf.sharpe_ratio, 4), pf.trades.count())  # (3)
```

1.  移动平均类型使用 `wtype` 参数，而不是 `ewm` 标志。
2.  移动止损有独立参数 `tsl_stop`，而不是 `sl_stop` 配合 `sl_trail=True`。
3.  `total_return` 和 `sharpe_ratio` 是属性，因此不加括号。`pf.get_total_return()` 可以接受参数。

进一步升级时，可以将文件载入数据对象，让相关列保持在一起，并按名称传递给指标和投资组合：

```python title="After: VectorBT PRO, with a data object"
import vectorbtpro as vbt

data = vbt.CSVData.pull("btc.csv")  # (1)
fast = data.run(vbt.MA, 10, wtype="exp")  # (2)
slow = data.run(vbt.MA, 50, wtype="exp")
entries = fast.ma_crossed_above(slow)
exits = fast.ma_crossed_below(slow)
pf = vbt.PF.from_signals(data, entries, exits, tsl_stop=0.1, fees=0.001)  # (3)
print(round(pf.total_return, 4), round(pf.sharpe_ratio, 4), pf.trades.count())
```

1.  每一列都成为同一个数据对象的一个特征，频率则从索引推断。
2.  `data.run` 将收盘价传给指标，因为它与指标的 `close` 输入匹配。
3.  投资组合从数据对象中获取开盘价、最高价、最低价、收盘价和频率。

```text title="Output of all three"
3.6274 1.3232 20
```

在 2020 至 2024 年的比特币日线数据上，三个版本都产生了 20 笔交易，总收益率为 362.74%，夏普比率为 1.32。其他常见变化包括：

*   导入 `vectorbtpro`，而不是 `vectorbt`。两者都使用 `vbt` 别名，因此请在独立环境中安装 PRO。
*   数据类通过 `pull` 加载，例如 `vbt.YFData.pull("BTC-USD")`。`download` 仍可作为别名使用。
*   当调用失败时，`vbt.phelp` 可以打印任意函数的当前签名和文档。

请先像上面一样，在相同的已保存数据上迁移一个小型回测。在增加 PRO
功能之前，先比较信号、订单和结果，因为两个版本的默认值和行为可能不同。迁移较复杂的策略时，[开发工具](/zh/features/tooling/developer-tools/)页面展示了如何检查签名、源代码和准备后的输入。

## 访问权限 \[#access]

VectorBT PRO 通过私有 GitHub 仓库向会员分发，会员还可获得私有文档、教程和 Discord 社区访问权限。提供月度、12
个月和终身方案，有效期间享有相同的产品与会员权益。访问到期后，您已安装的版本仍可继续使用。私有仓库、网站、Discord、更新和支持的访问权限随已付款期限结束。开源 vectorbt
可作为免费试用版本。详情请参阅[价格与会员](/zh/become-a-member/)和[常见问题](/zh/faq/)。

## 相关页面 \[#related-pages]

*   [快速入门](/zh/getting-started/): 了解 VectorBT PRO 是什么以及如何获取访问权限
*   [功能](/zh/features/): 跨交易品种、参数和时间探索回测、指标、优化与分析
*   [基准测试](/zh/features/performance/benchmarks/): 用相同订单比较模拟器，并在自己的机器上测量各后端
*   [常见问题](/zh/faq/#oss-migration): 了解有关 VectorBT PRO、会员、访问权限、安装和使用的明确解答
