比较两个值的 PineScript 条件不适用于 valuewhen

PineScript Condition to compare two values are not working on valuewhen

我一直在尝试做一个简单的条件,如果一个条件高于另一个条件而不是在条形图的顶部绘制。 在这种情况下,我发现 Pivot 具有较低的高点和较低的低点。我正在尝试实现一种方法来找到比之前的 Lower Low 更高的 Lower Low 比我将在条形图顶部绘制一些东西 (LLHigher)

视觉解释

//@version=4
study("Swing Low",overlay = true)


var s = 0.0
/// Pivots
leftbars = input(title="LeftBars", defval=1)
rightbars = input(title="Rightbars", defval=1)

HighOfCandle =  high
LowOfCandle = low
CloseOfCandle = close
OpenOfCandle = open
SizeOfCandle = abs(HighOfCandle-LowOfCandle)
pl = ((LowOfCandle > LowOfCandle[1]) and  (LowOfCandle[1] < LowOfCandle[2]))
//plotchar(pl, title="Pivot Low",  location=location.abovebar, char = "", color=color.green, transp=75, text="[P]", offset=-rightbars, size=size.auto)

ll = valuewhen(pl, low[1], 1) > valuewhen(pl, low[1], 0) 
plotchar(ll and pl, title="LL",  location=location.belowbar, char = "", color=color.green, transp=75, text="[LL]", offset=-rightbars, size=size.auto)

llhigherprevious = valuewhen(ll, low[1], 1) < valuewhen(ll, low[1], 0)
plotchar( llhigherprevious and pl and ll , text="LLhigher" ,color=color.orange,location=location.abovebar,transp=0,offset=-1,char="")

现在由于某种原因,情况似乎并不总是有效,我不确定我做错了什么 例子

谢谢

哇,太奇怪了...重放一下,您就会看到发生了什么。 出于某种原因,Pine 正在删除两者之间的 LL。我猜……某种 Pine Script 错误。我会将其报告给支持人员。

安德烈没有bug,不用开工单

首先,当您比较这条线的前一个低点时:

llhigherprevious = valuewhen(ll, low[1], 1) < valuewhen(ll, low[1], 0)

你要注意图表上的变量 ll 和 [LL] plot 是不一样的。 plot([LL]) 使用 2 个 bool 条件:ll 和 pl

plotchar(ll and pl, title="LL",  location=location.belowbar, char = "", color=color.green, transp=75, text="[LL]")

如果您绘制用于查找 llhigherprevious 的 ll 变量,您将看到:

因此,当找到 pl 和 ll 的新点时,它会将 ll 的低点与之前 ll 的低点进行比较,而不是与 [LL] 的低点进行比较。

解决方案:添加一个 LL bool 变量并在 llhigherprevious 中使用它的值:

ll = valuewhen(pl, low[1], 1) > valuewhen(pl, low[1], 0) 

LL = ll and pl
plotchar(LL, title="LL",  location=location.belowbar, char = "", color=color.green, transp=75, text="[LL]")//, offset=-rightbars, size=size.auto)

llhigherprevious = valuewhen(LL, low[1], 1) < valuewhen(LL, low[1], 0)
plotchar( llhigherprevious and pl and ll , text="LLhigher" ,color=color.orange,location=location.abovebar,transp=0, char="" )//,offset=-1)