【问题标题】:Using PineScript to reassess variable value on each candle to prevent repainting errors使用 PineScript 重新评估每根蜡烛的变量值,以防止重新绘制错误
【发布时间】:2019-10-03 00:57:45
【问题描述】:

Tradingview 的警报选项不适合在蜡烛移动时触发。这个移动平均线指标将一直有效,直到出现特定错误,这实际上是编码的基础。基本上,由于每根蜡烛的一个信号是我所拥有的条件,如果指示器在一根蜡烛持续时间内反复闪烁绿色到红色,然后停留在错误的信号上,那么接下来的几分钟都没有“新”变化(这意味着因为没有收到新信号而失去交易)

ahma = 0.0
ahma := nz(ahma[1]) + (src - (nz(ahma[1]) + nz(ahma[length])) / 2) / 
length 


col1= ahma>ahma[1]
col3= ahma<ahma[1]
isNewCol1 = nz(col3[1]) and col1
isNewCol3 = nz(col1[1]) and col3
colorP = col1 ? green : col3 ? red : yellow
plot(ahma, color=colorP, linewidth=3, title="ahma")

alertcondition(condition=isNewCol1, title="Long", message="green")
alertcondition(condition=isNewCol3, title="Short", message="red")

即。它以红色开始,但蜡烛在指示器重新闪烁绿色时关闭,但它无法触发新警报,并且不会检查下一个蜡烛以重新评估值。即它不检查值。它不是检查以确保在打开新蜡烛时该值确实是它认为的那样,它认为它是红色的,因为警报不允许它在每根蜡烛上触发多次,这也是一个严重的重绘错误。避免这一切的最好方法是以某种方式添加几行代码,使其重新检查下一根蜡烛的值。我不想使用“关闭时触发警报”的原因是因为它会延迟触发订单,我喜欢打开时触发的响应时间,但希望它重新评估而不触发直到下一个蜡烛,如果这有意义的话。

【问题讨论】:

    标签: pine-script


    【解决方案1】:

    你有两个选择:

    1. 从脚本中的 calcs 角度进入无重绘模式,并接受这样一个事实:为了实现这一点,您需要使用已过去的柱中的数据,在这种情况下,您的警报可能会被触发“每柱一次”,因此它将在确认后在柱的开始处触发。这将需要修改您的代码以引用来自封闭柱或实时柱的open 的数据(不会更改)。

    2. 通过保持脚本不变但在警报中使用“每栏关闭一次”来间接实现无重绘。

    就是这样。没有其他选择,因为在 Pine 中没有刻度参考,在实时柱关闭之前,无法保留在实时柱期间发生的事件历史记录。变量仅在柱线收盘时提交,因此每次您的脚本由于价格变化而在实时柱线中重新执行时,它们都会重新初始化。

    有关避免重绘的技术和代码的讨论,请参见此处: https://www.tradingview.com/script/s8kWs84i-How-to-avoid-repainting-when-NOT-using-security/

    有关 Pine 中运行时模型的说明,请参见此处: https://www.tradingview.com/pine-script-docs/en/v4/language/Execution_model.html

    【讨论】:

    • 是的,我正在阅读,其他人也遇到过这个问题,对此有点大惊小怪,所以你肯定是正确的。在旁注中,我正在考虑使用 python 来评估 30 秒图表上的研究数据,这将是系统中的一个很好的优势,在总体方案中,似乎 pinescript 中缺乏功能加上缺乏选项在警报上,即您可以;不要使用少于 1 分钟的警报是挂断电视。
    • 好吧,正如 TV 在用户手册的介绍中所写,Pine 是一种轻量级语言。它的强大之处在于它允许交易者用很少的代码做很多事情,但它从来没有打算作为一种包罗万象的交易平台编程语言。因此,需要找出最适合您的需求和方法的方法——这不可避免地需要进行实验。有些人乐于在 Pine 中做任何事情;其他人主要使用它进行原型设计。我认为它肯定找到了自己有用的利基市场,这也意味着它并不适合所有人。 gl!
    • 此外,在 Pine 引用刻度线之前,PineCoders 有这个建议,因为它是一个函数,允许脚本在实时柱期间对连续条件的持续时间进行计时。在此期间可以让我们中途到达那里:trello.com/c/ulHOgJIl
    • 是的,我目前广泛使用自动查看语法的时间延迟,但当然电视还没有功能。更糟糕的是,我引用的上述代码似乎不是延迟了一根蜡烛,而是延迟了两根。在 2 分钟图表上,我在收盘时会延迟 4 分钟,而在每根柱线一次通常会延迟 2 分钟,这当然会导致反向错误信号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多