首页 > 解决方案 > 有没有办法在函数中使用 bgcolor ?

问题描述

我正在尝试创建一个从股票代码(在本例中为 VIX)获取条件的图,并在满足条件时更改当前图表的背景颜色。但是,bgcolor 不断抛出此错误line 22: Cannot use 'bgcolor' in local scope.

有没有办法保留bgcolor函数,以便它知道是否应该更改背景颜色?谢谢!

//@version=4

study(title="Help (VIX Momo)", shorttitle="Vix Momo", overlay=false)

stock_1 = input(title='Stock Selection', defval='TVC:VIX')


highlight(stock_1) =>
    
    vix_30sma = security(stock_1, 'D', sma(close, 30)) 
    vix_50sma = security(stock_1, 'D', sma(close, 50)) 
    
    timeFrame_VIX = input(title="Other time frame", type=input.resolution, defval="180")
    
    smaClose_VIX = security(stock_1, timeFrame_VIX, sma(close,200))
    
    threehr_price_VIX = security(stock_1, timeFrame_VIX, close)
    
    red_VIX = (vix_30sma > vix_50sma) and (threehr_price_VIX >= smaClose_VIX) and (close >= vix_50sma)
    
    if red_VIX
        bgcolor(red_VIX ? #eb4034 : na, transp = 80)
    else
        na

p1 = security(stock_1, 'D', highlight(stock_1))

plot(p1, title="VIX")

标签: pine-script

解决方案


在我看来,您对这种情况感到困惑。但无论如何,最终的脚本看起来像这样。

//@version=4

study(title="Help (VIX Momo) v2", shorttitle="Vix Momo", overlay=false)

stock_1 = input(title='Stock Selection', defval='TVC:VIX')
timeFrame_VIX = input(title="Other time frame", type=input.resolution, defval="180")


highlight() =>
    
    vix_30sma = sma(close, 30)
    vix_50sma = sma(close, 50)
    smaClose_VIX = sma(close,200)
    
    threehr_price_VIX = close
    
    red_VIX = (vix_30sma > vix_50sma) and (threehr_price_VIX >= smaClose_VIX) and (close >= vix_50sma)
    


p1 = security(stock_1, timeFrame_VIX, highlight())

//plot(p1, title="VIX")
bgcolor(p1 ? #eb4034 : na, transp = 80)

推荐阅读