FTX
FTX

Reputation: 3

Tradingview Pine Script plotshape function not working with conditional series - where's the error?

I am trying to convert a strategy Pine Script into a study one to just plot buy and sell signals, but I can't figure out how to make the function plotshape work. I keep getting error message:

Cannot call 'plotshape' with arguments (series[bool], style=const
string, text=literal string, color=const color, size=const string,
location=const string, transp=literal bool); available overloads:
plotshape(series[bool], const string, input string, input string,
series[color], input integer, series[integer], const string,
series[color], const bool, const string, input integer, const integer,
string) =void; plotshape(<arg_series_type>, const string, input
string, input string, <arg_color_type>, input integer,
series[integer], const string, <arg_textcolor_type>, const bool, const
string, input integer, const integer, string) =void

Where's the error?

//@version=4 
study(title="Trend Following Long Only", overlay=true)

lookback_length = input(200, type=input.integer, minval=1,
title="Lookback Length") smoother_length = input(3,
type=input.integer, minval=1, title="Smoother Length") atr_length =
input(10, type=input.integer, minval=1, title="ATR Length")
atr_multiplier = input(0.5, type=input.float, minval=0.0, title="ATR
Multiplier")

vola = atr(atr_length) * atr_multiplier price = sma(close, 3)

l = ema(lowest(low, lookback_length), smoother_length) h =
ema(highest(high, lookback_length), smoother_length) center = (h + l)
* 0.5 upper = center + vola lower = center - vola trend = ema(price upper ? 1 : (price < lower ? -1 : 0), 3) c1 = trend < 0 ? upper :
(trend 0 ? lower: center)

buy_signal = crossover(trend, 0) plotshape(buy_signal ? true : na,style=shape.triangleup,text="Buy",color=color.green,size=size.small,location=location.belowbar,transp=false)
sell_signal  = crossunder(trend, 0) plotshape(sell_signal ? true : 
na,style=shape.triangledown,text="Sell",color=color.red,size=size.small,location=location.abovebar,transp=false)

phigh = plot(h, color=color.green) plow = plot(l, color=color.red)
pcenter = plot(center, color=color.black) pclose = plot(close,
transp=100)

clr = trend 0.0 ? color.green : (trend < -0.0 ? color.red :
color.yellow) fill(pcenter, pclose, color=clr, transp=85) fill(phigh,
pcenter, color=color.green, transp=95) fill(plow, pcenter,
color=color.red, transp=95)

Upvotes: 0

Views: 2097

Answers (1)

Bjorn Mistiaen
Bjorn Mistiaen

Reputation: 6905

The problem was that you were using a boolean for the transp= argument in plotshape().
The transp argument must be an integer from 0 to 100.

This will work:

//@version=4 
study(title="Trend Following Long Only", overlay=true)

lookback_length = input(200, type=input.integer, minval=1, title="Lookback Length") 
smoother_length = input(3, type=input.integer, minval=1, title="Smoother Length") 
atr_length = input(10, type=input.integer, minval=1, title="ATR Length")
atr_multiplier = input(0.5, type=input.float, minval=0.0, title="ATR Multiplier")

vola = atr(atr_length) * atr_multiplier 
price = sma(close, 3)

l = ema(lowest(low, lookback_length), smoother_length) 
h = ema(highest(high, lookback_length), smoother_length) 
center = (h + l) * 0.5 
upper = center + vola 
lower = center - vola 
trend = ema(price > upper ? 1 : (price < lower ? -1 : 0), 3) 
c1 = trend < 0 ? upper : (trend > 0 ? lower : center)

buy_signal = crossover(trend, 0) 
plotshape(buy_signal,style=shape.triangleup,text="Buy",color=color.green,size=size.small,location=location.belowbar,transp=80)

sell_signal = crossunder(trend, 0) 
plotshape(sell_signal,style=shape.triangledown,text="Sell",color=color.red,size=size.small,location=location.abovebar,transp=80)

phigh = plot(h, color=color.green) 
plow = plot(l, color=color.red)
pcenter = plot(center, color=color.black) 
pclose = plot(close,transp=100)

clr = trend > 0.0 ? color.green : (trend < -0.0 ? color.red : color.yellow) 

fill(pcenter, pclose, color=clr, transp=85) 
fill(phigh, pcenter, color=color.green, transp=95) 
fill(plow, pcenter, color=color.red, transp=95)

Upvotes: 0

Related Questions