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")
即。它从红色开始,但是蜡烛以绿色重新闪烁而关闭,但它不能触发新的警报,也不会检查下一根蜡烛以重新评估该值。即它不是在检查值。并不是要检查以确保新蜡烛打开时该值确实是其认为的值,而是认为它是红色的,因为警报不允许每个蜡烛触发多次,这也是一个严重的重新绘制错误。避免所有这些的最佳方法是以某种方式添加几行代码,以使其重新检查下一支蜡烛的值。我不想使用“关闭时触发警报”的原因是因为它会延迟触发订单,我喜欢打开时触发的响应时间,但是如果需要的话,我希望它重新评估而不触发直到下一个蜡烛。 / p>
答案 0 :(得分:1)
您有两种选择:
从脚本中的calcs角度进入无重绘模式,并接受以下事实:为了实现这一点,您需要使用已过去的条中的数据,在这种情况下,可以触发警报“每栏一次”,因此它将在确认后在栏的开头触发。这将需要修改您的代码以引用来自封闭条或实时条的open
(不会改变)中的数据。
通过保持脚本原样但在警报中使用“每条关闭一次”来间接实现不重画。
就是这样。没有其他选择,因为在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