首页 > 解决方案 > 如何在指标菜单中获得启用或禁用指标的选项(一段代码,交易视图)?

问题描述

我想在我的 pine 脚本中使用以下指标,但我希望在指标设置菜单 (Tradingview) 中有一个选项来启用或禁用以下指标(具体来说,我希望在设置菜单中使用它:- 启用 ema 功能区。(input(title= “启用 ema 功能区”type=input.bool - 我知道这种语法,但不知道如何处理以下 pine 脚本)

 '''
//@version=4
study("Moving Average Ribbon", shorttitle="MAR", overlay=true)

source =   input(close, "Source")
ma =       input(title="Type", options=["SMA", "EMA", "WMA"], defval="SMA")
Theme =    input(title="Theme", options=["Theme 1", "Theme 2", "Theme 3"], defval="Theme 2")
length =   input(defval=1, minval=1, title="Length", type=input.integer)
start =    input(defval=5, minval=1, title="Start", type=input.integer)
maNumber = input(defval=32, minval=1, maxval=32, title="No. of MAs", type=input.integer)
colourFrom=input(defval=false, title="Colour option", type=input.bool)

colour1 = color.new(color.green, 25)
colour2 = color.new(color.red, 25)
colour3 = color.new(color.teal, 25)
colour4 = color.new(color.purple, 25)
colour5 = color.new(color.silver, 50)
colour6 = color.new(#353535, 25)

c1 = Theme == "Theme 1" ? colour1 : Theme == "Theme 2" ? colour3 : Theme == "Theme 3" ? colour5 
: na
c2 = Theme == "Theme 1" ? colour2 : Theme == "Theme 2" ? colour4 : Theme == "Theme 3" ? colour6 
: na

count = length * start

getMa(c)=>
    l = count + (length * c)
    if(ma == "SMA")
        sma(source, l)
    else
        if(ma == "EMA")
        ema(source, l)
        else
            if(ma == "WMA")
                wma(source, l)

sma1 =  maNumber >= 1  ? getMa(0 ) : na
sma2 =  maNumber >= 2  ? getMa(1 ) : na
sma3 =  maNumber >= 3  ? getMa(2 ) : na
sma4 =  maNumber >= 4  ? getMa(3 ) : na
sma5 =  maNumber >= 5  ? getMa(4 ) : na
sma6 =  maNumber >= 6  ? getMa(5 ) : na
sma7 =  maNumber >= 7  ? getMa(6 ) : na
sma8 =  maNumber >= 8  ? getMa(7 ) : na
sma9 =  maNumber >= 9  ? getMa(8 ) : na
sma10 = maNumber >= 10 ? getMa(9 ) : na
sma11 = maNumber >= 11 ? getMa(10) : na
sma12 = maNumber >= 12 ? getMa(11) : na
sma13 = maNumber >= 13 ? getMa(12) : na
sma14 = maNumber >= 14 ? getMa(13) : na
sma15 = maNumber >= 15 ? getMa(14) : na
sma16 = maNumber >= 16 ? getMa(15) : na
sma17 = maNumber >= 17 ? getMa(16) : na
sma18 = maNumber >= 18 ? getMa(17) : na
sma19 = maNumber >= 19 ? getMa(18) : na
sma20 = maNumber >= 20 ? getMa(19) : na
sma21 = maNumber >= 21 ? getMa(20) : na
sma22 = maNumber >= 22 ? getMa(21) : na
sma23 = maNumber >= 23 ? getMa(22) : na
sma24 = maNumber >= 24 ? getMa(23) : na
sma25 = maNumber >= 25 ? getMa(24) : na
sma26 = maNumber >= 26 ? getMa(25) : na
sma27 = maNumber >= 27 ? getMa(26) : na
sma28 = maNumber >= 28 ? getMa(27) : na
sma29 = maNumber >= 29 ? getMa(28) : na
sma30 = maNumber >= 30 ? getMa(29) : na
sma31 = maNumber >= 31 ? getMa(30) : na
sma32 = maNumber >= 32 ? getMa(31) : na

plot(sma32,  color=(not colourFrom and sma32 <= source) or (colourFrom and sma32 <= sma31) ? c1 
: c2, title="plot 32", linewidth=1, style=plot.style_line, transp=0)
plot(sma31,  color=(not colourFrom and sma31 <= source) or (colourFrom and sma31 <= sma30) ? c1 
: c2, title="plot 31", linewidth=1, style=plot.style_line, transp=0)
plot(sma30,  color=(not colourFrom and sma30 <= source) or (colourFrom and sma30 <= sma29) ? c1     
: c2, title="plot 30", linewidth=1, style=plot.style_line, transp=0)
plot(sma29,  color=(not colourFrom and sma29 <= source) or (colourFrom and sma29 <= sma28) ? c1 
: c2, title="plot 29", linewidth=1, style=plot.style_line, transp=0)
plot(sma28,  color=(not colourFrom and sma28 <= source) or (colourFrom and sma28 <= sma27) ? c1 
: c2, title="plot 28", linewidth=1, style=plot.style_line, transp=0)
plot(sma27,  color=(not colourFrom and sma27 <= source) or (colourFrom and sma27 <= sma26) ? c1 
: c2, title="plot 27", linewidth=1, style=plot.style_line, transp=0)
plot(sma26,  color=(not colourFrom and sma26 <= source) or (colourFrom and sma26 <= sma25) ? c1 
: c2, title="plot 26", linewidth=1, style=plot.style_line, transp=0)
plot(sma25,  color=(not colourFrom and sma25 <= source) or (colourFrom and sma25 <= sma24) ? c1 
: c2, title="plot 25", linewidth=1, style=plot.style_line, transp=0)
plot(sma24,  color=(not colourFrom and sma24 <= source) or (colourFrom and sma24 <= sma23) ? c1 
: c2, title="plot 24", linewidth=1, style=plot.style_line, transp=0)
plot(sma23,  color=(not colourFrom and sma23 <= source) or (colourFrom and sma23 <= sma22) ? c1 
: c2, title="plot 23", linewidth=1, style=plot.style_line, transp=0)
plot(sma22,  color=(not colourFrom and sma22 <= source) or (colourFrom and sma22 <= sma21) ? c1 
: c2, title="plot 22", linewidth=1, style=plot.style_line, transp=0)
plot(sma21,  color=(not colourFrom and sma21 <= source) or (colourFrom and sma21 <= sma20) ? c1 
: c2, title="plot 21", linewidth=1, style=plot.style_line, transp=0)
plot(sma20,  color=(not colourFrom and sma20 <= source) or (colourFrom and sma20 <= sma19) ? c1 
: c2, title="plot 20", linewidth=1, style=plot.style_line, transp=0)
plot(sma19,  color=(not colourFrom and sma19 <= source) or (colourFrom and sma19 <= sma18) ? c1 
: c2, title="plot 19", linewidth=1, style=plot.style_line, transp=0)
plot(sma18,  color=(not colourFrom and sma18 <= source) or (colourFrom and sma18 <= sma17) ? c1 
: c2, title="plot 18", linewidth=1, style=plot.style_line, transp=0)
plot(sma17,  color=(not colourFrom and sma17 <= source) or (colourFrom and sma17 <= sma16) ? c1 
: c2, title="plot 17", linewidth=1, style=plot.style_line, transp=0)
plot(sma16,  color=(not colourFrom and sma16 <= source) or (colourFrom and sma16 <= sma15) ? c1 
: c2, title="plot 16", linewidth=1, style=plot.style_line, transp=0)
plot(sma15,  color=(not colourFrom and sma15 <= source) or (colourFrom and sma15 <= sma14) ? c1 
: c2, title="plot 15", linewidth=1, style=plot.style_line, transp=0)
plot(sma14,  color=(not colourFrom and sma14 <= source) or (colourFrom and sma14 <= sma13) ? c1 
: c2, title="plot 14", linewidth=1, style=plot.style_line, transp=0)
plot(sma13,  color=(not colourFrom and sma13 <= source) or (colourFrom and sma13 <= sma12) ? c1 
: c2, title="plot 13", linewidth=1, style=plot.style_line, transp=0)
plot(sma12,  color=(not colourFrom and sma12 <= source) or (colourFrom and sma12 <= sma11) ? c1 
: c2, title="plot 12", linewidth=1, style=plot.style_line, transp=0)
plot(sma11,  color=(not colourFrom and sma11 <= source) or (colourFrom and sma11 <= sma10) ? c1 
: c2, title="plot 11", linewidth=1, style=plot.style_line, transp=0)
plot(sma10,  color=(not colourFrom and sma10 <= source) or (colourFrom and sma10 <= sma9)  ? c1 
: c2, title="plot 10", linewidth=1, style=plot.style_line, transp=0)
plot(sma9 ,  color=(not colourFrom and sma9  <= source) or (colourFrom and sma9  <= sma8)  ? c1 
: c2, title="plot 9",  linewidth=1, style=plot.style_line, transp=0)
plot(sma8 ,  color=(not colourFrom and sma8  <= source) or (colourFrom and sma8  <= sma7)  ? c1 
: c2, title="plot 8",  linewidth=1, style=plot.style_line, transp=0)
plot(sma7 ,  color=(not colourFrom and sma7  <= source) or (colourFrom and sma7  <= sma6)  ? c1 
: c2, title="plot 7",  linewidth=1, style=plot.style_line, transp=0)
plot(sma6 ,  color=(not colourFrom and sma6  <= source) or (colourFrom and sma6  <= sma5)  ? c1 
: c2, title="plot 6",  linewidth=1, style=plot.style_line, transp=0)
plot(sma5 ,  color=(not colourFrom and sma5  <= source) or (colourFrom and sma5  <= sma4)  ? c1 
: c2, title="plot 5",  linewidth=1, style=plot.style_line, transp=0)
plot(sma4 ,  color=(not colourFrom and sma4  <= source) or (colourFrom and sma4  <= sma3)  ? c1 
: c2, title="plot 4",  linewidth=1, style=plot.style_line, transp=0)
plot(sma3 ,  color=(not colourFrom and sma3  <= source) or (colourFrom and sma3  <= sma2)  ? c1 
: c2, title="plot 3",  linewidth=1, style=plot.style_line, transp=0)
plot(sma2 ,  color=(not colourFrom and sma2  <= source) or (colourFrom and sma2  <= sma1)  ? c1 
:c2, title="plot 2",  linewidth=1, style=plot.style_line, transp=0)
plot(sma1 ,  color=(not colourFrom and sma1  <= source) or (colourFrom and sma1  <= source)? c1 
: c2, title="plot 1",  linewidth=1, style=plot.style_line, transp=0)
'''

标签: pine-script

解决方案


这是一种方法。

//@version=4
study("Moving Average Ribbon", shorttitle="MAR", overlay=true)

source      = input(close, "Source")
ma          = input(title="Type", options=["SMA", "EMA", "WMA"], defval="SMA")
Theme       = input(title="Theme", options=["Theme 1", "Theme 2", "Theme 3"], defval="Theme 2")
length      = input(defval=1, minval=1, title="Length", type=input.integer)
start       = input(defval=5, minval=1, title="Start", type=input.integer)
maNumber    = input(defval=32, minval=1, maxval=32, title="No. of MAs", type=input.integer)
colourFrom  = input(defval=false, title="Colour option", type=input.bool)
enable      = input(true, title="enable ema ribbon", type=input.bool)

var float sma1 =  na
var float sma2 =  na
var float sma3 =  na
var float sma4 =  na
var float sma5 =  na
var float sma6 =  na
var float sma7 =  na
var float sma8 =  na
var float sma9 =  na
var float sma10 = na
var float sma11 = na
var float sma12 = na
var float sma13 = na
var float sma14 = na
var float sma15 = na
var float sma16 = na
var float sma17 = na
var float sma18 = na
var float sma19 = na
var float sma20 = na
var float sma21 = na
var float sma22 = na
var float sma23 = na
var float sma24 = na
var float sma25 = na
var float sma26 = na
var float sma27 = na
var float sma28 = na
var float sma29 = na
var float sma30 = na
var float sma31 = na
var float sma32 = na

colour1 = color.new(color.green, 25)
colour2 = color.new(color.red, 25)
colour3 = color.new(color.teal, 25)
colour4 = color.new(color.purple, 25)
colour5 = color.new(color.silver, 50)
colour6 = color.new(#353535, 25)

c1 = Theme == "Theme 1" ? colour1 : Theme == "Theme 2" ? colour3 : Theme == "Theme 3" ? colour5 : na
c2 = Theme == "Theme 1" ? colour2 : Theme == "Theme 2" ? colour4 : Theme == "Theme 3" ? colour6 : na

count = length * start

getMa(c)=>
    l = count + (length * c)
    if(ma == "SMA")
        sma(source, l)
    else if(ma == "EMA")
        ema(source, l)
    else if(ma == "WMA")
        wma(source, l)

if enable
    sma1 :=  maNumber >= 1  ? getMa(0 ) : na
    sma2 :=  maNumber >= 2  ? getMa(1 ) : na
    sma3 :=  maNumber >= 3  ? getMa(2 ) : na
    sma4 :=  maNumber >= 4  ? getMa(3 ) : na
    sma5 :=  maNumber >= 5  ? getMa(4 ) : na
    sma6 :=  maNumber >= 6  ? getMa(5 ) : na
    sma7 :=  maNumber >= 7  ? getMa(6 ) : na
    sma8 :=  maNumber >= 8  ? getMa(7 ) : na
    sma9 :=  maNumber >= 9  ? getMa(8 ) : na
    sma10 := maNumber >= 10 ? getMa(9 ) : na
    sma11 := maNumber >= 11 ? getMa(10) : na
    sma12 := maNumber >= 12 ? getMa(11) : na
    sma13 := maNumber >= 13 ? getMa(12) : na
    sma14 := maNumber >= 14 ? getMa(13) : na
    sma15 := maNumber >= 15 ? getMa(14) : na
    sma16 := maNumber >= 16 ? getMa(15) : na
    sma17 := maNumber >= 17 ? getMa(16) : na
    sma18 := maNumber >= 18 ? getMa(17) : na
    sma19 := maNumber >= 19 ? getMa(18) : na
    sma20 := maNumber >= 20 ? getMa(19) : na
    sma21 := maNumber >= 21 ? getMa(20) : na
    sma22 := maNumber >= 22 ? getMa(21) : na
    sma23 := maNumber >= 23 ? getMa(22) : na
    sma24 := maNumber >= 24 ? getMa(23) : na
    sma25 := maNumber >= 25 ? getMa(24) : na
    sma26 := maNumber >= 26 ? getMa(25) : na
    sma27 := maNumber >= 27 ? getMa(26) : na
    sma28 := maNumber >= 28 ? getMa(27) : na
    sma29 := maNumber >= 29 ? getMa(28) : na
    sma30 := maNumber >= 30 ? getMa(29) : na
    sma31 := maNumber >= 31 ? getMa(30) : na
    sma32 := maNumber >= 32 ? getMa(31) : na

plot(sma32,  color=(not colourFrom and sma32 <= source) or (colourFrom and sma32 <= sma31) ? c1 : c2, title="plot 32", linewidth=1, style=plot.style_line, transp=0)
plot(sma31,  color=(not colourFrom and sma31 <= source) or (colourFrom and sma31 <= sma30) ? c1 : c2, title="plot 31", linewidth=1, style=plot.style_line, transp=0)
plot(sma30,  color=(not colourFrom and sma30 <= source) or (colourFrom and sma30 <= sma29) ? c1 : c2, title="plot 30", linewidth=1, style=plot.style_line, transp=0)
plot(sma29,  color=(not colourFrom and sma29 <= source) or (colourFrom and sma29 <= sma28) ? c1 : c2, title="plot 29", linewidth=1, style=plot.style_line, transp=0)
plot(sma28,  color=(not colourFrom and sma28 <= source) or (colourFrom and sma28 <= sma27) ? c1 : c2, title="plot 28", linewidth=1, style=plot.style_line, transp=0)
plot(sma27,  color=(not colourFrom and sma27 <= source) or (colourFrom and sma27 <= sma26) ? c1 : c2, title="plot 27", linewidth=1, style=plot.style_line, transp=0)
plot(sma26,  color=(not colourFrom and sma26 <= source) or (colourFrom and sma26 <= sma25) ? c1 : c2, title="plot 26", linewidth=1, style=plot.style_line, transp=0)
plot(sma25,  color=(not colourFrom and sma25 <= source) or (colourFrom and sma25 <= sma24) ? c1 : c2, title="plot 25", linewidth=1, style=plot.style_line, transp=0)
plot(sma24,  color=(not colourFrom and sma24 <= source) or (colourFrom and sma24 <= sma23) ? c1 : c2, title="plot 24", linewidth=1, style=plot.style_line, transp=0)
plot(sma23,  color=(not colourFrom and sma23 <= source) or (colourFrom and sma23 <= sma22) ? c1 : c2, title="plot 23", linewidth=1, style=plot.style_line, transp=0)
plot(sma22,  color=(not colourFrom and sma22 <= source) or (colourFrom and sma22 <= sma21) ? c1 : c2, title="plot 22", linewidth=1, style=plot.style_line, transp=0)
plot(sma21,  color=(not colourFrom and sma21 <= source) or (colourFrom and sma21 <= sma20) ? c1 : c2, title="plot 21", linewidth=1, style=plot.style_line, transp=0)
plot(sma20,  color=(not colourFrom and sma20 <= source) or (colourFrom and sma20 <= sma19) ? c1 : c2, title="plot 20", linewidth=1, style=plot.style_line, transp=0)
plot(sma19,  color=(not colourFrom and sma19 <= source) or (colourFrom and sma19 <= sma18) ? c1 : c2, title="plot 19", linewidth=1, style=plot.style_line, transp=0)
plot(sma18,  color=(not colourFrom and sma18 <= source) or (colourFrom and sma18 <= sma17) ? c1 : c2, title="plot 18", linewidth=1, style=plot.style_line, transp=0)
plot(sma17,  color=(not colourFrom and sma17 <= source) or (colourFrom and sma17 <= sma16) ? c1 : c2, title="plot 17", linewidth=1, style=plot.style_line, transp=0)
plot(sma16,  color=(not colourFrom and sma16 <= source) or (colourFrom and sma16 <= sma15) ? c1 : c2, title="plot 16", linewidth=1, style=plot.style_line, transp=0)
plot(sma15,  color=(not colourFrom and sma15 <= source) or (colourFrom and sma15 <= sma14) ? c1 : c2, title="plot 15", linewidth=1, style=plot.style_line, transp=0)
plot(sma14,  color=(not colourFrom and sma14 <= source) or (colourFrom and sma14 <= sma13) ? c1 : c2, title="plot 14", linewidth=1, style=plot.style_line, transp=0)
plot(sma13,  color=(not colourFrom and sma13 <= source) or (colourFrom and sma13 <= sma12) ? c1 : c2, title="plot 13", linewidth=1, style=plot.style_line, transp=0)
plot(sma12,  color=(not colourFrom and sma12 <= source) or (colourFrom and sma12 <= sma11) ? c1 : c2, title="plot 12", linewidth=1, style=plot.style_line, transp=0)
plot(sma11,  color=(not colourFrom and sma11 <= source) or (colourFrom and sma11 <= sma10) ? c1 : c2, title="plot 11", linewidth=1, style=plot.style_line, transp=0)
plot(sma10,  color=(not colourFrom and sma10 <= source) or (colourFrom and sma10 <= sma9)  ? c1 : c2, title="plot 10", linewidth=1, style=plot.style_line, transp=0)
plot(sma9 ,  color=(not colourFrom and sma9  <= source) or (colourFrom and sma9  <= sma8)  ? c1 : c2, title="plot 9",  linewidth=1, style=plot.style_line, transp=0)
plot(sma8 ,  color=(not colourFrom and sma8  <= source) or (colourFrom and sma8  <= sma7)  ? c1 : c2, title="plot 8",  linewidth=1, style=plot.style_line, transp=0)
plot(sma7 ,  color=(not colourFrom and sma7  <= source) or (colourFrom and sma7  <= sma6)  ? c1 : c2, title="plot 7",  linewidth=1, style=plot.style_line, transp=0)
plot(sma6 ,  color=(not colourFrom and sma6  <= source) or (colourFrom and sma6  <= sma5)  ? c1 : c2, title="plot 6",  linewidth=1, style=plot.style_line, transp=0)
plot(sma5 ,  color=(not colourFrom and sma5  <= source) or (colourFrom and sma5  <= sma4)  ? c1 : c2, title="plot 5",  linewidth=1, style=plot.style_line, transp=0)
plot(sma4 ,  color=(not colourFrom and sma4  <= source) or (colourFrom and sma4  <= sma3)  ? c1 : c2, title="plot 4",  linewidth=1, style=plot.style_line, transp=0)
plot(sma3 ,  color=(not colourFrom and sma3  <= source) or (colourFrom and sma3  <= sma2)  ? c1 : c2, title="plot 3",  linewidth=1, style=plot.style_line, transp=0)
plot(sma2 ,  color=(not colourFrom and sma2  <= source) or (colourFrom and sma2  <= sma1)  ? c1 :c2, title="plot 2",  linewidth=1, style=plot.style_line, transp=0)
plot(sma1 ,  color=(not colourFrom and sma1  <= source) or (colourFrom and sma1  <= source)? c1 : c2, title="plot 1",  linewidth=1, style=plot.style_line, transp=0)

推荐阅读