首页 > 解决方案 > Pine:如何根据条件设置背景颜色

问题描述

如果最后收盘价高于收盘价 50 条,我试图将整个背景着色为某种条件(例如绿色),如果低于收盘价则为红色。
我尝试了不同的方法,我可以改变颜色,但它最终不会为整个背景着色,而只是为某些区域着色。

我的脚本:

bgcolor(close[50] >= open[1] ? color.red : color.green, transp=70)

在背景中分割颜色

在这种情况下,整个背景应该是红色的,因为最后收盘价低于收盘价后 50 根柱线(由黄色标签指示)。
关于我需要改变什么的任何想法?

标签: pine-script

解决方案


这将根据您的情况为背景着色。它使用很宽的线来完成,因为指标占据了所有背景,所以像测量工具这样的图表功能不能与 Shift-Click 一起使用,但如果你明确选择它的工具,它就会起作用。

如果您不希望它覆盖整个图表,您可以使用背景的位置和宽度。

背景非常浅。如果你想改变它的亮度,你需要在两个color.new()调用中使用透明度,因为它不能通过输入来控制:

//@version=4
study("", "", true)

offsetCalc  = input(50,     "Close lookback", minval = 2)
offstBg     = input(100,    "Background: Horizontal Offset to its Center", minval = 0, step = 5)
lineWidth   = input(10000,  "Background: Width", minval = 0, step = 100)

condUp      = barstate.islast and close[1] > close[offsetCalc]
condDn      = barstate.islast and close[1] < close[offsetCalc]
c_lineColor = condUp ? color.new(color.green, 97) : condDn ? color.new(color.maroon, 97) : na

if barstate.islast
    var line bg = na
    line.delete(bg)
    bg := line.new(bar_index[offstBg], low - tr, bar_index[offstBg], high + tr, color = c_lineColor, extend = extend.both, width = lineWidth)

推荐阅读