在 Pinescript v5 中绘制数组的标签

问题描述 投票:0回答:1

我有这段代码,适用于 Pinescript v5,但我无法让它绘制标签。

因此,它的作用是从数据收盘时提取技术数据,然后将其与指定范围内的过去 500 天的先前技术数据进行比较,以识别具有相似技术的相似日期并给出平均值那些日子的范围。

该指标效果很好,我遇到的问题是,我希望它在每个已识别的日期上方绘制一个标签以及该天的范围。这是有问题的区域:

for i = 0 to array.size(t_input_arr) - 1 
    push(bar_array, barr_count + 1)
    if array.get(t_prev_arr, i) >= t_input - thresh and array.get(t_prev_arr, i) <= t_input + thresh 
        push(r_max_arr, hitoop[i])
        push(r_min_arr, optolo[i])
        push(cltoop_max_arr, cltoop[i])
        push(time_arr, time[i])
        bullish_r += array.get(bullish_arr, i) 
        bearish_r += array.get(bearish_arr, i) 
        cltoop_r += array.get(cltoop_arr, i)
        hitoop_r += array.get(hitoop_arr, i) 
        lotoop_r += array.get(optolo_arr, i) 
        piv_hi += array.get(piv_hi_arr, i)
        piv_lo += array.get(piv_lo_arr, i)
        r_hi_max := array.max(r_max_arr) 
        r_lo_max := array.max(r_min_arr) 
        r_hi_min := array.min(r_max_arr) 
        r_lo_min := array.min(r_min_arr) 
        time_r := array.get(time_arr, i)
        co_max := array.max(cltoop_max_arr) 
        co_min := array.min(cltoop_max_arr) 
        instances += 1 

t_input 代表正在评估的技术(它的范围可以是 MFI、RSI、Stoch 等,具体取决于输入类型)。您可以看到我添加了 bar_array 和 barr_count 来尝试解决该问题,但它不起作用。

所以我尝试通过“时间”函数引用,但没有运气,我尝试了时间戳,再次没有运气。 稍微起作用的是 bar_array,它会为数组中的每个值添加一个值,因此它会在每个数组存储的值上缓慢增加 1:(即 1、2、3、4、5)。

由于指标在数组的第二部分中过滤掉了数组数据,因此数组大小变小,只显示相关变量,因此在 bar_array 中,我希望将其用作该位置的索引通过执行以下操作来数组:

label.new(bar_index - array.get(bar_array, i), High, text = "test", color = color.lime)

我并不是真正的程序员,对 Pinescript 也没有太多经验,所以如果有任何帮助,我将不胜感激!

arrays label pine-script pine-script-v5
1个回答
0
投票

也许尝试创建一个标签数组并使用它。

var label [] LABELARRAYMULTILABELS = array.new_label()
//FIRST LABEL
if close >= close[1]
    array.push(LABELARRAYMULTILABELS, label.new(bar_index, high, text = str.tostring(close), color= color.green))

//SECOND LABEL
if close < close[1]
    array.push(LABELARRAYMULTILABELS, label.new(bar_index, high, text = str.tostring(close), color= color.red))

//ONLY DELETE LABELS IF THEY REACH A MAX NUMBER
if array.size(LABELARRAYMULTILABELS) > 2
    label.delete(array.shift(LABELARRAYMULTILABELS))
    ```

© www.soinside.com 2019 - 2024. All rights reserved.