在 TradingView 上回测 Pine Script 策略
使用 Claude 或 ChatGPT 编写 Pine Script 策略,将其放入 TradingView 图表,并在投入真实资金前运行内置的 Strategy Tester。Strategy Tester 是您成本最低、速度最快的筛选工具。
本指南介绍 AI 优先的工作流:编写策略、运行回测、客观评估 Performance Summary 和 List of Trades 标签页,并通过 TradingView Webhook 将验证通过的策略升级为实盘执行(发送至 TradingHost 托管的经纪商接收端)。
章节 01 · 协同工作方式
编写、测试、上线
包含三个环节。您编写策略,TradingView 进行回测,Webhook 将验证通过的策略发送至实盘执行。Strategy Tester 介于编写与执行之间,是一个低成本的筛选器;唯一比糟糕的回测更昂贵的,是完全不进行回测。
您编写的内容
Pine Script 策略
声明入场、出场和仓位大小的 strategy() 脚本。Strategy Tester 仅运行 strategy() 脚本,无法对 indicator() 脚本进行回测。
策略验证
Strategy Tester
TradingView 的内置面板,可在图表的可用历史数据上运行策略,并呈现 Performance Summary、List of Trades 和 Properties 标签页。
如何上线
Webhook 至实盘
一旦回测通过,相同的策略就会向 TradingHost 托管的 Webhook URL 发送警报,进而调用经纪商 API 并执行真实订单。
从想法到经过测试的策略
- 用通俗的英语向 Claude 或 ChatGPT 描述您的策略,要求其生成 Pine Script v6 策略脚本。
- 将脚本粘贴到 TradingView 的 Pine Editor 中,将其添加到图表,然后打开 Strategy Tester 面板。
- 查看 Performance Summary 标签页;检查 List of Trades 标签页中的成交分布和频率;确认 Properties 标签页中的佣金和滑点假设符合实际情况。
- 与 AI 协同迭代修改脚本,直到该策略在样本外数据上通过客观的回测。
- 针对该策略创建 TradingView 警报,将 Webhook URL 指向 TradingHost 运行环境;将验证通过的脚本升级为实盘。
章节 02 · 一览
一览
- 工作流
- 使用 AI 编写 Pine Script 策略,在 TradingView 的 Strategy Tester 中进行验证,然后通过 Webhook 升级为实盘
- 语言
- Pine Script v6(当前 TradingView 语言版本)
- 脚本声明
- 必须是 strategy(),不能是 indicator();只有 strategy 脚本能在 Strategy Tester 中运行
- Strategy Tester
- 内置于每个 TradingView 账户中;在图表下方以面板形式打开
- 核心标签页
- Performance Summary、List of Trades、Properties
- 性能指标
- 净利润、总利润、总亏损、盈利因子、最大回撤、胜率、单笔平均交易
- K线数量限制
- 回测范围受限于图表已加载的 K 线数量;付费方案中的 Deep Backtesting 可将范围延伸至可见区域之外
- AI 工具
- Claude、ChatGPT、Gemini(任何基于 Pine Script v6 参考文档训练的模型)
- 编辑界面
- TradingView Pine Editor;更深度的编辑可在 Cursor 中进行,并在提示词中附带 Pine v6 参考
- 实盘交易路径
- TradingView 警报,其 Webhook URL 指向调用经纪商 API 的 TradingHost 运行环境
- TradingHost 角色
- 策略上线后的 Webhook 接收端运行环境(回测阶段本身不使用)
- 隶属关系
- TradingHost 是独立的,与 TradingView 无任何隶属关系
第 04 节 · 运行 Strategy Tester
将策略添加到图表并打开 Strategy Tester
打开针对你策略目标品种和时间周期的 TradingView 图表。将策略粘贴到图表底部的 Pine Editor 中,然后点击“添加到图表”。如果脚本声明了 strategy(),TradingView 会自动在 Pine Editor 下方打开 Strategy Tester 面板。
Strategy Tester 会针对图表当前加载的 K 线运行策略。如果你需要更长的回测窗口,请在重新运行前向左滚动以加载更多历史数据。在 TradingView 付费方案中,Deep Backtesting 选项可将测试范围延伸至图表可见 K 线范围之外;免费版则受限于图表中已加载的数据。
在查看结果之前,先调整策略设置(脚本名称旁边的齿轮图标)。初始资金、订单大小、加仓(pyramiding)、手续费和滑点是会实质性改变报告的关键项;默认值很少符合你的实际需求。请将手续费和滑点设置为你打算执行交易的经纪商实际收取的标准。
第 05 节 · 阅读报告
至关重要的三个标签页
Strategy Tester 呈现了 Performance Summary、List of Trades 和 Properties 标签页。请仔细阅读这三个页面。Performance Summary 告诉你策略在模拟中是否盈利。List of Trades 告诉你策略是否触发了你实际想要的交易。Properties 标签页则告诉你这些交易背后的假设是否切合实际。
一个在 Performance Summary 上显示出漂亮净利润,但在不切实际的手续费和滑点设置下,一年只触发四次交易的策略,算不上真正的策略。它只是图表上的拟合产物。这三个标签页结合在一起,才是你的安全保障。
值得关注的指标
- 净利润
- 所有模拟交易的总盈亏,以账户货币及占初始资金的百分比表示。
- 盈利因子
- 总盈利除以总亏损。大于 1 意味着策略在模拟中实现了盈利;真实的实盘策略通常介于 1.2 到 2 之间。
- 最大回撤
- 测试期间资金曲线从最高点到最低点的最大跌幅。这是最关键的单一风险指标。
- 胜率(盈利交易百分比)
- 盈利平仓交易的比例。高胜率往往隐藏着尾部风险;需结合平均盈利与平均亏损进行评估。
- 单笔交易平均盈亏
- 每笔交易的平均盈亏。如果该值小于你对现实世界手续费加滑点的估算,那么该策略在实际操作中是无法盈利的。
- 夏普比率 / 索提诺比率
- 风险调整后收益指标。启用后会在 Performance Summary 标签页下显示。
- List of Trades
- 包含每次模拟交易的入场、出场、仓位大小、盈亏以及最大浮盈/最大浮亏。阅读此项以确认策略的触发方式符合你的预期。
- Properties
- 运行所使用的设置:初始资金、订单大小、手续费、滑点、加仓。在根据结果采取行动之前,确认你所测试的具体配置。
需要指出一个 Pine 特有的风险:默认情况下,Strategy Tester 对 K 线内(intra-bar)的假设过于宽松。如果你的策略在回测中于同一根 K线内入场和出场,实盘警报需要使用“Once per bar close”(每次K线收盘时)频率,否则无法重现相同的 K 线内反转。在上线实盘前,务必使警报频率与回测假设保持一致。
第 06 节 · 晋升至实盘交易
当回测站得住脚,即可部署策略
完美的回测只是一张入场券,而不是盈利保证。当策略在包含现实手续费和滑点的样本外数据上通过了公正的测试,下一步就是配置带有 Webhook URL 的 TradingView 警报。
你测试过的 Pine Script 就是你直接部署的脚本,无需为实盘交易重新编写。你只需针对该策略创建警报,将 TradingHost 运行环境的 Webhook URL 粘贴到警报中,并使用 strategy.* 占位符将交易方向和仓位大小编码为 JSON 格式的警报消息。TradingHost 容器会解析该载荷并调用经纪商的 REST API。
无需 MetaTrader,无需 Windows VPS,也无需 PineConnector 授权。运行你回测的同一个 Pine Script 即可直接触发你的实盘订单。
第 08 部分 · 常见问题
常见问题解答
所有 TradingView 账户都可以使用 Strategy Tester。Deep Backtesting 和更长的历史 K 线范围需要 Plus 及以上方案才能解锁。而通过 Webhook URL 发送信号(即后续向经纪商发送实盘警报所需的方法)则需要 Plus、Premium 或 Ultimate 方案;Essential 和免费版不支持 Webhook 警报。
只有声明了 strategy() 的 Pine Script 脚本才能参与 Strategy Tester 回测,并提供后续实盘警报所需的 strategy.* 占位符。indicator() 脚本无法进行回测。
推荐使用 Pine Script v6。TradingView 已明确表示,未来的语言更新将仅应用于 v6,因此现在使用 v5 编写任何新脚本,迟早都面临着迁移的工作。
在重新运行测试器之前,向后滚动图表以加载更多历史数据;或者,如果您的 TradingView 方案支持,可以使用 Deep Backtesting。Deep Backtesting 可以在超出图表可见 K 线范围的数据上运行测试。
这取决于时间周期。在扣除真实的佣金和滑点后,日线和波段策略(4 小时及以上 K 线)在真实回测中的获利因子通常在 1.3 到 2.5 之间。日内策略(1 小时以下)由于交易频次更高,通常在 1.5 到 3 之间。对于日内数据,任何超过 3 的获利因子都值得怀疑,除非您能在样本外数据上复现该结果;超过 4 的数值几乎总是意味着存在未来函数、重绘或不切实际的成交价。
是的,可以在策略属性中进行设置。请将 commission_type 和滑点(slippage)设置为与您实际使用的经纪商收费一致。默认值通常会低估实际交易成本,从而导致回测结果虚高。
可以。Backtrader 和 VectorBT 是基于 Python 的回测框架,相比 Pine,它们能处理更复杂的投资组合、仓位管理和统计分析。代价是您将失去 TradingView 的直观图表环境。
仔细检查每一次对过去或未来 K 线的引用。Pine 的历史引用操作符 [n] 是向后看的,但如果意外使用了仅在 K 线收盘时才存在的值(或易导致重绘的计算),就会使回测结果虚高。在实盘运行前,建议配合一段时间的模拟交易进行验证。
在策略上创建 TradingView 警报,将 Webhook URL 指向 TradingHost 运行环境,并将警报消息写为包含 strategy.* 占位符(用于指定方向和仓位大小)的 JSON 格式。有关实盘执行闭环的详细信息,请参阅 Webhook 工作流页面。
相信工作流,而不是输出结果。AI 负责加速编写,回测是您的安全防线,而实盘警报是您的执行机制。在加大资金规模之前,请务必通读每一行代码,进行真实客观的回测,并进行模拟交易。