繁体   English   中英

我怎样才能 plot 在最后一个最高点和最后一个最低点之间划一条线?

[英]How can I plot a line between last highest high and last lowest low?

可以请有人用以下不确定的方式启发我吗?

我想 plot 在最后一个最高点和最后一个最低点之间画一条线,我使用 valuewhen 来获取该值,但由于我不知道的原因,它给了我之前的值,这意味着该线将总是拿着蜡烛迟到。

//@version=4
study("My Script", overlay = true)

upper = highest(high, 20)
lower = lowest(low, 20)

plot(upper)
plot(lower)

val_u = valuewhen(upper > upper[1], upper, 0)
val_l = valuewhen(lower < lower[1], lower, 0)

plot(val_u, color = color.red)
plot(val_l, color = color.red)
barss_u = barssince(upper > upper[1])
barss_l = barssince(lower < lower[1])

l = line.new(bar_index[barss_u], val_u, bar_index[barss_l], val_l, width = 1, color = color.orange, style=line.style_dashed)
line.delete(l[1])

看起来是这样的,红线是valuewhen,蓝线是高/低位,橙色线应该是last lower low 和 last high high high 之间的连接线,但是不知什么原因,valuewhen不会实时更新。

在此处输入图像描述

这就是valuewhen的工作方式,它不考虑当前柱。 改为尝试highestbarslowestbars

//@version=4
study("My Script", overlay = true)

barss_u = highestbars(20) * -1
barss_l = lowestbars(20) * -1

val_u = high[barss_u]
val_l = low[barss_l]

l = line.new(bar_index[barss_u], val_u, bar_index[barss_l], val_l, width = 1, color = color.orange, style=line.style_dashed)
line.delete(l[1])

更新

您可以使用以下代码修复valuewhen的滞后:

//@version=4
study("My Script", overlay = true)

upper = highest(high, 20)
lower = lowest(low, 20)

plot(upper)
plot(lower)

x_val_u = valuewhen(upper > upper[1], upper, 0)
x_val_l = valuewhen(lower < lower[1], lower, 0)

val_u = high >= upper ? high : x_val_u
val_l = low <= lower ? low : x_val_l

plot(val_u, color = color.red)
plot(val_l, color = color.red)
barss_u = barssince(upper > upper[1])
barss_l = barssince(lower < lower[1])

l = line.new(bar_index[barss_u], val_u, bar_index[barss_l], val_l, width = 1, color = color.orange, style=line.style_dashed)
line.delete(l[1])

绿线显示了这个新版本的工作原理:

比特币,60

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM