微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pinescript,尾随止损重绘

如何解决Pinescript,尾随止损重绘

为什么在pinescript中使用简单的跟踪止损可以重画?

我正在使用 pinescript版本4 Tradingview 上对 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)

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

enter image description here

这将带来加价 $ 20

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

enter image description here

结果为负值 $ 6

因此,相差 $ 26

我没有使用没有安全性或其他可疑的解决方来跟踪止损-结果如何在6个小时(6小时)的短时间内变化这么大?

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

解决方法

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

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

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

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

那该怎么办?

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

编辑

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。