Little Bird Trading

Pine Script 常见问题:回测与提醒

4分钟阅读 · 更新于

这是一份通俗的常见问题,针对几乎每个TradingView用户都会被绊倒的两个 Pine 问题:为什么策略的回测看起来比实盘交易的感觉要好,以及为什么提醒有时会在与你预期不同的时刻或价格触发。两者源于同一个根本原因:作出决定时实际可用的数据,与K线收盘后你眼睛看到的数据之间的不一致。

指标、策略和提醒有什么区别?

指标(indicator())只负责绘图和计算,它绘制线条、颜色和标签。策略(strategy())模拟订单:它调用strategy.entry/strategy.exit,对照历史K线成交,并生成包含净利润、回撤和胜率的 Strategy Tester 报告。提醒是TradingView在条件为真时触发的独立通知层;它本身不会交易任何东西。当人们把回测当作承诺,或者期望提醒就是成交时,混乱就开始了,它们是三项不同的工作。更深入的区分,请看指标与策略指南。

为什么我的回测看起来很好,实盘结果却对不上?

相对现实,有四件事会夸大回测,而且都可以修正:

  • K线收盘与K线内部的假设。默认情况下,Strategy Tester 在K线收盘时评估逻辑。如果你的条件以某种只有在K线完成之后才能知道的方式使用当前K线的最高/最低价或收盘价,历史成交就用了实盘交易不可能拥有的信息。
  • 默认以不现实的价格成交。测试器里的市价单在下一根K线开盘价成交;在快速开盘时,这个价格在实盘中可能相差好几个最小变动价位或点数。
  • 没有对佣金或滑点建模。如果你在strategy()中把commission_value和slippage保持为零,每笔模拟交易都没有摩擦。加入现实的数值,即使只是不到一个最小变动价位的滑点,也会让许多“盈利”的剥头皮系统变成亏损。(佣金通过commission_type和commission_value设置。)
  • 样本量极小。十二笔全都奏效的交易,样本太小,不能称为优势。在你相信任何曲线之前,请看如何识别过拟合的交易系统。

举例:一个系统在40笔ES交易中显示 +US$4200,成本为零,一旦你加上US$2.50的往返佣金,以及入场和出场每边一个最小变动价位的滑点,看起来就大不相同了。ES上一个最小变动价位是0.25点 = US$12.50,所以两个最小变动价位是US$25.00;加上US$2.50的佣金,每笔交易的摩擦成本是US$27.50。在40笔交易中,这大约是US$1100,把标题上的 +US$4200变成大约 +US$3100,如果入场集中在波动剧烈的开盘,实际滑点比一个最小变动价位更宽,则更糟。

什么是重绘,它是否意味着脚本有问题?

不一定。“重绘”是一个笼统的说法,指脚本在历史K线上显示的值,与它在实时中产生的值不同。诚实的检验很简单:同样的决定,能否在同一时刻、用同样的信息、在实盘中做出?只有在K线收盘后才确认的信号,是在做它该做的事:它等到收盘才确认。问题出在那些在正在形成的K线上绘制信号、K线结束后又移动它的脚本,或者在启用前瞻的情况下拉取更高时间周期数据的脚本。如果你想要一个可以据以行动的信号,就在barstate.isconfirmed(K线收盘)上评估它,它只对已完成的K线作出反应。

为什么我的提醒触发得晚、价格不同,或者触发了两次?

  • “每根K线收盘时一次”与“每根K线一次”。设置为在正在形成的K线上触发的提醒,可能在条件在K线内部闪现为真的瞬间触发,然后K线收在别处,看起来就“错了”。在K线收盘时触发更晚,但它与已确认的策略实际作出决定的时刻吻合(策略随后在下一根K线开盘时行动)。
  • 提醒价格是提醒触发那一刻的快照。你的经纪商以实时市价给你成交,而这个价格在提醒和你的订单之间的几毫秒里会变动。
  • 重复触发通常意味着条件在多个跳动中一直为真,而提醒被配置为每个跳动都触发,本该每根K线触发一次。

这与交易计划的方法有什么联系?

交易计划通过给你固定的、预先规划好的价位,绕开了整个“我的信号重绘了吗?”的问题。在开盘前画在ES、SPY、NQ和QQQ上的每日价位,是在前一次收盘后计算出来的,在交易时段内不会移动,所以没有什么可重绘的:每个价位在美东时间9:30之前设定,并保持不动。MyLinedChart只绘制这些价位;它从不模拟订单,所以不带有上述任何回测成交的假设。如果某个已发布价位与你自己的提醒或策略不一致,把它当作信息,答案往往是等待。关于词汇,请看交易计划术语表。

在相信任何 Pine 结果之前的实用检查清单

  • 在barstate.isconfirmed上确认逻辑,让回测和实盘共享同一个决策时刻。
  • 为你实际交易的品种,在strategy()中设置现实的佣金和滑点,即commission_type、commission_value和slippage。
  • 有意识地选择提醒频率,要确认就用K线收盘,要避免重复就用每根K线一次。
  • 用足够多的交易笔数来评判结果。
  • 把背景叠加层(如已发布的价位)与执行决定权分开,图表提供信息;做决定的是你写下的规则。

相关阅读

来源

仅供教育参考,不构成投资建议。

仅供教育参考,不构成投资建议。