Pinescript,追踪止损重绘
Pinescript, trailing stop loss repaints
为什么在 pinescript 中一个简单的 追踪止损 会重绘如此巨大?
我正在 ETH/USD、Tradingview 上的 1H 使用 pinescript 版本 4。
完整的脚本如下所示:
//@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,但正如预期的那样,我在同一根蜡烛内收到了大量的买卖订单。
我在关于各种 Tradingview 想法和脚本的几篇帖子中找到了答案。
问题是回测 (BT) 时的每个柱仅包含 Open
、Close
、High
和 Low
的值。
此外,Tradingview 在仅具有上述数据字段以及在柱内执行交易时支持您的订单方向。
这意味着如果我正在创建一个 Long
定位订单并且脚本说在同一柱内卖出 - 它总是会在 High
关闭 - 问题中的第一张图片很清楚也显示。
在实时数据测试期间,Tradingview 知道如何收集和临时存储它一直在进行实时测试的柱的所有数据。这意味着它现在只保存 Open
、Close
、High
和 Low
.
的每个报价单的数据
注意:数据仅存储在您的浏览器会话中 - 如果您刷新页面或离开脚本,您的数据将消失。在开始实时测试之前,您还需要将 Recalulate on every tick
设置为 true
。
那怎么办?
验证脚本的最佳方法是如上所述手动进行一些实时数据测试。只需让您的计算机 运行 与您的 window 和 Tradingview 打开您的脚本,您将获得实时数据结果。这在测试长期脚本时真的很烦人,比如摇摆策略。
编辑
Tradingview 似乎不提供 intra-bar data
。我确信他们通过 Premium
订阅获得了这个,但它似乎不可用。他们提供了一种叫做 intraday data
的东西,但这只是低于 daily
的时间范围内的数据。
我还使用 Bar Replay
对其进行了测试,但似乎也没有 intrabar data
。
确保您的脚本按预期工作的最佳方法是执行我上面在 "What to do then?"
中提到的并将结果与正常回溯测试进行比较。
为什么在 pinescript 中一个简单的 追踪止损 会重绘如此巨大?
我正在 ETH/USD、Tradingview 上的 1H 使用 pinescript 版本 4。 完整的脚本如下所示:
//@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,但正如预期的那样,我在同一根蜡烛内收到了大量的买卖订单。
我在关于各种 Tradingview 想法和脚本的几篇帖子中找到了答案。
问题是回测 (BT) 时的每个柱仅包含 Open
、Close
、High
和 Low
的值。
此外,Tradingview 在仅具有上述数据字段以及在柱内执行交易时支持您的订单方向。
这意味着如果我正在创建一个 Long
定位订单并且脚本说在同一柱内卖出 - 它总是会在 High
关闭 - 问题中的第一张图片很清楚也显示。
在实时数据测试期间,Tradingview 知道如何收集和临时存储它一直在进行实时测试的柱的所有数据。这意味着它现在只保存 Open
、Close
、High
和 Low
.
注意:数据仅存储在您的浏览器会话中 - 如果您刷新页面或离开脚本,您的数据将消失。在开始实时测试之前,您还需要将 Recalulate on every tick
设置为 true
。
那怎么办?
验证脚本的最佳方法是如上所述手动进行一些实时数据测试。只需让您的计算机 运行 与您的 window 和 Tradingview 打开您的脚本,您将获得实时数据结果。这在测试长期脚本时真的很烦人,比如摇摆策略。
编辑
Tradingview 似乎不提供 intra-bar data
。我确信他们通过 Premium
订阅获得了这个,但它似乎不可用。他们提供了一种叫做 intraday data
的东西,但这只是低于 daily
的时间范围内的数据。
我还使用 Bar Replay
对其进行了测试,但似乎也没有 intrabar data
。
确保您的脚本按预期工作的最佳方法是执行我上面在 "What to do then?"
中提到的并将结果与正常回溯测试进行比较。