pine-script - 使用 PineScript 重新评估每根蜡烛的变量值,以防止重新绘制错误
问题描述
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")
IE。它以红色开始,但蜡烛在指示器重新闪烁绿色时关闭,但它无法触发新警报,并且不会检查下一个蜡烛以重新评估值。即它不检查值。它不是检查以确保在打开新蜡烛时该值确实是它认为的那样,它认为它是红色的,因为警报不允许它在每根蜡烛上触发多次,这也是一个严重的重绘错误。避免这一切的最好方法是以某种方式添加几行代码,使其重新检查下一根蜡烛的值。我不想使用“关闭时触发警报”的原因是因为它会延迟触发订单,我喜欢打开时触发的响应时间,但希望它重新评估而不触发直到下一个蜡烛,如果这有意义的话。
解决方案
你有两个选择:
从脚本中的 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
推荐阅读
- c# - 将图像放在另一个图像上
- python - 如何在 python 中创建时区感知时间对象
- token - 部署 TRC-20 合约时出现部署失败错误
- java - 无法打开 Eclipse neon.3
- jquery - 在 woo-commerce wordpress 中添加到购物车操作之前应用 jQuery
- python-3.x - 在 Google or-tools 中使用两种车辆类型求解时间受限的 CVRP
- wordpress - 连接到 Wordpress 仪表板默认帖子的自定义轮播代码
- flutter - 我的文本区域在颤振应用程序中没有显示
- firebase - 有没有办法在验证电话号码时使用 Google Recaptcha v3?
- reactjs - ReactJS API 请求