首页 > 解决方案 > Pinescript,追踪止损重绘

问题描述

为什么pinescript中的一个简单的追踪止损会大幅重绘这个?

我正在使用pinescript 版本 4Tradingview上对ETH/USD 和 1H进行一些回测。完整的脚本如下所示:

//@version=4
strategy(title="Simple SL script", shorttitle="Simple SL script", overlay = true, initial_capital=1000, currency="USD", commission_type=strategy.commission.percent, commission_value=0.1, slippage = 5, pyramiding=1, calc_on_every_tick=false)

risk = input(title='Risk %', defval=100.0, step=1.0)/100

//secScaler = secType == "Forex" ? 100000 : secType == "Metal Spot" ? 100 : secType == "Cryptocurrency" ? 10000 : secType == "Custom" ? contracts : 0
fixedSL = input(title="SL Points", defval=1000)*10000
fixedTP = input(title="TP Points", defval=10)*10000

//##############################################################################
//Trade Logic
//##############################################################################

balance = strategy.initial_capital + strategy.netprofit
if (balance > 0)
    lots = (risk * balance)/close
    strategy.entry("BUY", strategy.long, qty=lots)
    strategy.exit("B.Exit", "BUY", qty_percent = 100, loss=fixedSL, trail_offset=20, trail_points=fixedTP)

使用正常的回测或重放,我得到以下结果:

在此处输入图像描述

这导致加$20

在回测之前,我让它运行实时数据,得到以下结果:

在此处输入图像描述

这导致负$6

所以相差26 美元

对于追踪止损,我没有使用任何证券或其他有问题的解决方案- 结果如何在 6 个柱(6 小时)的短时间范围内变化如此之大?

我确实尝试将其设置calc_on_every_tick为 true,但正如预期的那样,我在同一支蜡烛中获得了大量的买卖订单。

标签: pine-scriptreal-time-databack-testing

解决方案


我在有关各种 Tradingview 想法和脚本的几篇文章中找到了答案。问题是回测 (BT) 时的每个条形仅包含OpenCloseHigh的值Low。此外,当仅具有上述数据字段以及在柱内执行交易时,Tradingview 支持您的订单方向。

这意味着如果我正在创建一个Long定位订单并且脚本说要在同一个柱内卖出 - 它总是会关闭High- 问题中的第一张图片也清楚地显示了这一点。

在实时数据测试期间,Tradingview 知道如何收集和临时存储它一直在进行实时测试的柱的所有数据。Open这意味着它现在保存仅包含、CloseHigh的每个刻度的数据Low

注意:数据仅存储在您的浏览器会话中 - 如果您刷新页面或离开脚本,您的数据就会消失。您还需要在开始实时测试之前Recalulate on every tick设置为。true

那该怎么办?

验证脚本的最佳方法是手动进行一些如上所述的实时数据测试。只需让您的计算机在您的窗口中运行 Tradingview 并打开您的脚本,您将获得实时数据结果。这在测试长期脚本时真的很烦人,比如摇摆策略。

编辑

Tradingview 似乎不提供intra-bar data。我确信他们Premium订阅了这个,但它似乎不可用。他们提供了一种叫做的东西,intraday data但这只是时间范围低于daily. 我也对其进行了测试,Bar Replay但似乎也没有intrabar data。确保您的脚本按预期工作的最佳方法是执行我上面提到的操作"What to do then?",并将结果与​​正常的回测进行比较。


推荐阅读