blackcat1402

为什么TradingView策略脚本回测更准确?

OANDA:NAS100USD   US Nas 100
TradingView中的Pine脚本策略相比与其Pine脚本指标更为复杂,策略根据历史和实时数据模拟交易的执行,以实现交易系统的回溯测试(backtesting, 回测)和前向测试(forwardtesting, 前测)。TV策略包含Pine脚本指标相同的功能,但是同时也提供下单、修改和取消假设订单以及分析结果的能力。

例如:Pine脚本使用strategy()函数进行声明时,它可以访问strategy.*命名空间,在其中可以调用函数和变量来模拟订单并访问基本策略信息。此外,该脚本将在“策略测试器”选项卡中向外部显示信息和模拟结果。

将策略应用于图表的方法和指标是一样的。当然, 这也是用策略实现回测的第一步:只需单击“Pine Editor”选项卡中的“添加到图表”,将脚本应用到图表。策略脚本编译并应用于图表后,它将在主图表窗格上绘制订单标记,并在下面的“策略测试器”选项卡中显示模拟性能结果。

值得一提的是, 这里有一个很大的坑。 因为TradingView支持很多种类型的主图图表, 所以一些人在使用非标准K线图表进行回测的时候常常觉得自己发现了“宝藏”。 注意! 这是一种海市蜃楼, 你看得见却实现不了。这一点TradingView官方曾经做过多次的说明, 甚至当你用特殊图表回测是会有黄色标签提示。 千万不要轻易用特殊图表回测的策略去实盘,除非你觉得手头的资金如粪土一样不重要。默认情况下,应用于非标准图表(Heikin Ashi、Renko、Line Break、Kagi、Point & Figure和Range)的策略结果并不反映实际市场状况。策略脚本将在模拟过程中使用这些图表中的合成价格值,这些值通常与实际市场价格不一致,从而产生不切实际的回测结果。因此,TradingView本身也一而再再而三地强烈建议使用标准图表类型进行回测策略。或者,在 Heikin Ashi 图表上,用户可以通过启用策略属性中的“使用标准 OHLC 执行订单”选项或使用fill_orders_on_standard_ohlc = true调用strategy()函数。当然, 最后这一点也是TradingView今年才作出的改进。

说到TV的策略,不得不提一下其经纪商模拟器, 这个设计是策略脚本能实现回测的基本原理。TradingView 利用经纪商模拟器来模拟交易策略的性能。与现实交易不同,模拟器严格使用可用的图表价格进行订单模拟。因此,模拟只能在K线收盘后进行历史交易,并且只能在新的价格变动上进行实时交易。有关此行为的更多信息,我在前面关于Pine脚本执行机制文章里已经进行了详述。由于模拟器只能使用图表数据,因此它会对K线内部价格变动做出假设。它使用K线的开盘价、最高价和最低价来推断K线内部活动,同时使用以下逻辑计算订单填充:

如果最高价比最低价更接近开盘价,则假定价格在K线上按以下顺序移动:开盘→最高价→最低价→收盘价。

如果最低价比最高价更接近开盘价,则假定价格在K线上按以下顺序移动:开盘→最低价→最高价→收盘价。

经纪商模拟器假设K线内的价格之间不存在差距;在模拟器的“眼睛”中,所有的K线内部价格均可用于订单执行。

由此可以见, 受限于K线内部价格的忽略, 一般的策略脚本回测和真实情况会有较大的差异。 而且这种差异会随着回测K线数量的增加而不断扩大。 TradingView这两年也提出一些改善措施, 保证策略脚本在回测中,可以跨周期地访问小周期来获取K线内部价格变化的精确值。 这是个了不起的功能,也是我在众多回测工具中看到的唯一一个支持这种高级功能的平台。TradingView命名这个功能为:K线放大镜。 但是这个功能只有高级会员Premium的用户,才可以使用。 高级账户用户可以通过strategy()函数中的use_bar_magnifier函数的参数或脚本设置的“属性”选项卡中的“使用K线放大镜”输入来覆盖经纪商模拟器的K线内部的价格假设, 从而使其更接近实际价格。K线放大镜检查比图表更小的时间周期内的数据,以获得有关K线内部价格行为的更精细信息,从而在模拟过程中实现更精确的订单填充。

Avoid losing contact!Don't miss out! The first and most important thing to do is to join my Discord chat now! Click here to start your adventure: discord.com/invite/ZTGpQJq 防止失联,请立即行动,加入本猫聊天群: discord.com/invite/ZTGpQJq
Clause de non-responsabilité

Les informations et les publications ne sont pas destinées à être, et ne constituent pas, des conseils ou des recommandations en matière de finance, d'investissement, de trading ou d'autres types de conseils fournis ou approuvés par TradingView. Pour en savoir plus, consultez les Conditions d'utilisation.