簡體   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