如何获得2点之间的最高值?

How to get the highest value between 2 points?

我想获得 2 个条目之间的最高点(例如,在 2 个 ema 交叉之间,如图像示例)。 它在我的头上,我试过 barssince() 没有运气。 欢迎任何帮助!

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

ema1 = ema(close, 20)
ema2 = ema(close, 50)
plot(ema1)
plot(ema2, color = color.yellow)

buy = crossover(ema1, ema2)
sell = crossunder(ema1, ema2)

highest_buy = highestbars(high, barssince(buy))

plot(highest_buy)

连续情节:

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

var bool    track       = false
var float   highest_buy = na

ema1 = ema(close, 20)
ema2 = ema(close, 50)

buy  = crossover(ema1, ema2)
sell = crossunder(ema1, ema2)

if buy
    track := true
else if sell
    track := false

highest_buy := track ? max(nz(highest_buy), high) : na

plot(ema1)
plot(ema2,        color=color.yellow)
plot(highest_buy, color=color.purple, style=plot.style_linebr)

仅绘制最近发生的事件:

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

var bool    track       = false
var float   highest_buy = na
var int     bar_buy     = na
var int     bar_sell    = na
var line    hline       = line.new(na, na, na, na, extend=extend.both, color=color.purple)

ema1 = ema(close, 20)
ema2 = ema(close, 50)

buy  = crossover(ema1, ema2)
sell = crossunder(ema1, ema2)

if buy
    track := true
    bar_buy := bar_index

highest_buy := track ? max(nz(highest_buy), high) : na

if sell
    track := false
    bar_sell := bar_index
    line.set_xy1(hline, bar_buy,  highest_buy)
    line.set_xy2(hline, bar_sell, highest_buy)


plot(ema1)
plot(ema2,        color=color.yellow)

bgcolor(buy  ? color.green : na, transp=80)
bgcolor(sell ? color.red   : na, transp=80)

好的,(@Bjorn Mistiaen 和@AnyDozer)这两种方法都可以很好地进行绘图,但我仍然无法获得最高点的值。 我正在尝试计算最高值和入口点之间的差异。

study("My Script", overlay = true)

var bool    track       = false
var float   highest_buy = na

ema1 = ema(close, 20)
ema2 = ema(close, 50)

buy  = crossover(ema1, ema2)
sell = crossunder(ema1, ema2)

if buy
    track := true
else if sell
    track := false

highest_buy := track ? max(nz(highest_buy), high) : na

plot(ema1)
plot(ema2,        color=color.yellow)
plot(highest_buy, color=color.purple, style=plot.style_linebr)

buy_entry = valuewhen(buy, close, 0)
plot(buy_entry, color = buy_entry == buy_entry[1] and ema1 > ema2? color.lime :na)

if buy
    label1 = label.new(bar_index, highest_buy, text=tostring(highest_buy - buy_entry) , style=label.style_label_down, color=color.black, textcolor=color.white)

如果我使用 if buy 它将计算到第一个高点,而不是最高点,如果我使用 if sell 它什么都不做,因为买入入场的最高点落后一根蜡烛。

sell信号出现时highest_buy等于na且不显示标签。有必要采用前一根柱上的值。

//@version=4

study("Help prof (My Script)", overlay = true)

var bool    track       = false
var float   highest_buy = na

ema1 = ema(close, 20)
ema2 = ema(close, 50)

buy  = crossover(ema1, ema2)
sell = crossunder(ema1, ema2)

if buy
    track := true
else if sell
    track := false

highest_buy := track ? max(nz(highest_buy), high) : na

plot(ema1)
plot(ema2,        color=color.yellow)
plot(highest_buy, color=color.purple, style=plot.style_linebr)

buy_entry = valuewhen(buy, close, 0)
plot(buy_entry, color = buy_entry == buy_entry[1] and ema1 > ema2? color.lime :na)

if sell 
    label1 = label.new(bar_index, highest_buy[1], text=tostring(highest_buy[1] - buy_entry[1]) , style=label.style_label_down, color=color.black, textcolor=color.white)