在1分钟内绘制前5分钟的最高点

时间:2020-05-23 10:41:15

标签: pine-script

我正在尝试在1分钟的时间范围内绘制前5分钟的最高点。

这是我的剧本

//@version=4
study("HTFB B/S 2", overlay=true)

start_y = input(2020, "Year")
start_m = input(5, "Month")
start_d = input(22, "Day")

t5 = time("5")

var float hi1 = na
var float hi5 = na

is_newbar_t5 = not na(t5) and (na(t5[1]) or t5 > t5[1])
canrun = time > timestamp(start_y,start_m,start_d,09,30,0)-1 and time < timestamp(start_y,start_m,start_d,10,0,0)+1

if canrun
    hi1 := high
    if is_newbar_t5
        label.new(bar_index, high, "newbar_t5", yloc=yloc.abovebar)
        hi5 := highest(high,5)
else
    hi1 := na
    hi5 := na

plot(hi1, title="hi1")
plot(hi5, title="hi5", color = is_newbar_t5 ? na : color.lime)

此图的结果(在代码SPX上显示)

enter image description here

如您所见,这不是预期的结果,因为它没有绘制出前5分钟的最高点。
我不明白为什么这行不通。
语句hi5 := highest(high,5)应该是前5个1min柱中的最高价。
但这似乎没有做到。

这是Pine Script中的错误吗?
或更可能是我的逻辑有误?

1 个答案:

答案 0 :(得分:0)

该问题是由于以下事实导致的:highest()是需要对每个小节求值以返回正确值的函数之一,因此我们需要通过将其置于if块之外来强制执行此操作。

这将产生预期的行为:

h = highest(high,5)
if canrun
    hi1 := high
    if is_newbar_t5
        label.new(bar_index, high, "newbar_t5", yloc=yloc.abovebar, color=color.orange)
        hi5 := h
else
    hi1 := na
    hi5 := na

日期设置为28日: enter image description here