这个问题听起来比实际更基本——在 pine 脚本中我想在两个不同的图之间填充

This problem sounds more basic than it acutallly is -- in pinescript I want to fill between two different plots

好吧,很明显这听起来很基础。我知道如何使用 x > y 在两个图之间填充,但真正发生的是 pinescript 在图表上的图表示的两个浮点值之间填充。 Pinescript 不允许比较两个绘图本身,这一错误证明了这一点:

”第 366 行:无法使用 'expr1'=plot 调用 'operator >'。参数的类型应为:float”

这是个问题,我觉得是无解的,但是想看看有没有大佬有办法解决。我不是一个 pinescript(或任何语言)编码员。我正在制作一个基线指示器,它周围有条带。对于每个上带和下带,在它们之间填充了两个图。我希望填充颜色根据一个图是否在另一个图之上而有所不同。这是完全正常的,但这里的转折点是,从技术上讲,每一对地块都是相同的。我正在做的是为其中之一添加一个偏移量,这就是创建交叉的原因。所以现在你看到我的问题了。我不能使用 > 或 < 来比较绘图,因为 pinescript 不允许这样做,并且因为偏移量不在绘图本身的计算范围内,语言认为这两个绘图是相同的。我可以在图之间填充,因为这就是“填充”的用法,但我不能有“看涨”和“看跌”填充,因为根据计算,一个图(实际上是浮动的)既不高于也不低于另一个。

谁能想出解决办法???就像以某种方式在移动平均线的计算中添加偏移量一样?它 100% 是装饰性的东西,但我喜欢装饰性的东西,大声笑,我想要这种可选性,因为它会让指示器看起来非常棒。

非常感谢第一次提问的人。

干杯, 斯科特

下面是代码。

..... smooth_mc_upper = mc_ma(mc_type, mc_upper, band_lkbk) smooth_mc_upper_two = mc_ma(mc_type, mc_upper, band_lkbk)

smooth_mc_lower = mc_ma(mc_type, mc_lower, band_lkbk) smooth_mc_lower_two = mc_ma(mc_type, mc_lower, band_lkbk)

////////////////////////////////////////// /////////////////////////////////

////内部魔毯的绘图和填充 p_mc_upper = plot(mc_on_off ? smooth_mc_upper : na, offset=offset_one, title="Interior Upper Band", display=display.none) p_mc_upper_two = plot(mc_on_off ? smooth_mc_upper_two : na, offset=offset_two, color=color.red, title="内部偏移上带")

p_mc_lower = plot(mc_on_off ? smooth_mc_lower : na, offset=offset_one, title="内部下带", display=display.none) p_mc_lower_two = plot(mc_on_off ? smooth_mc_lower_two : na, offset=offset_two, color=color.red, title="内部偏移下带")

fill(p_mc_upper, p_mc_upper_two, color=smooth_mc_upper > smooth_mc_upper_two ? bull_upper : bear_upper, 标题="上部内部魔毯") fill(p_mc_lower, p_mc_lower_two, color=smooth_mc_lower > smooth_mc_lower_two ? bull_lower : bear_lower, title="下部内部魔法地毯")

Chart Image

您必须考虑偏移量。如果您使用的是正偏移值(看起来您来自图像),那么这应该不是问题。

假设您在绘图上的偏移值为 50。这意味着当前柱实际上是变量 50 柱前的值,相当于使用历史运算符 [50].

例如:

ma = ta.ema(close, 50)

off = 50

p1 = plot(ma, color = color.gray)
p2 = plot(ma, color = color.yellow, offset = off)

fill(p1, p2, color = ma > ma[off] ? color.lime : color.red)