首页 > 解决方案 > 每次更改时更新变量,无论时间范围如何

问题描述

我想显示一个当前标签,该标签close根据与最后一个(即柱内)值的变化close进行着色,从而复制符号值在观察列表中着色的方式(在每次更改时)价值)

然而,Pine Script 似乎只会在新柱的开始更新用户/脚本变量(相对于图表的时间帧分辨率)。

尽管close将始终返回最新值,但没有办法(我发现)访问最后一个 close- 只有close[1],这是最后一个柱的收盘价,而不是 的真正先前值close。我需要类似close[0,1], 形式的东西source[bar_index, array_index_of_changes_within_bar_index]

我尝试了几种方法来解决这个问题:数组、var 和非 var 变量的组合、security()分辨率1s(这本来是一个低于标准的解决方案,但无论如何,Pine Script 不允许这样做)。

关于这是否可以在 Pine Script 中实现的任何建议?

标签: pine-script

解决方案


您可以像这样使用varip声明的数组来进行密切比较intrabar

var label close_label = label.new(x = bar_index, y = close, style = label.style_label_left, size = size.normal, textcolor = color.white)
varip float[] intrabar_closes = array.new_float()

array.unshift(intrabar_closes, close)
if array.size(intrabar_closes) > 2
    array.pop(intrabar_closes)
col = array.size(intrabar_closes) > 1 ? array.get(intrabar_closes, 0) >= array.get(intrabar_closes, 1) ? color.lime : color.red : na
label.set_xy(close_label, x = bar_index, y = close)
label.set_color(close_label, color = col)
label.set_text(close_label, text = tostring(close))

推荐阅读