Este é o código final lançado ao público que criei num vídeo ligado aqui.
Este indicador combina uma banda de Bollinger e um RSI estocástico para produzir sinais para uma possível reversão de preços. Os sinais são exibidos por padrão como setas verdes para alta e setas vermelhas para baixa.
Para desencadear um sinal, o indicador verifica o seguinte:
(Alta) Uma vela fecha acima da banda superior de Bollinger A seguinte vela fecha dentro da faixa superior de Bollinger O RSI Stochastic está abaixo do limiar definido (10 por defeito)
- Não. Uma vela fecha abaixo da faixa de Bollinger inferior A seguinte vela fecha dentro da faixa de Bollinger inferior O RSI Estocástico está acima do limiar definido (90 por defeito)
backtest
/*backtest start: 2022-04-30 00:00:00 end: 2022-05-29 23:59:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 study(shorttitle="BBSR Extreme", title="Bollinger Bands Stochastic RSI Extreme Signal", overlay=true, resolution="") //General Inputs src = input(close, title="Source") offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500) //Bollinger Inputs length = input(20, title="Bollinger Band Length", minval=1) mult = input(2.0, minval=0.001, maxval=50, title="StdDev") //Bollinger Code basis = sma(src, length) dev = mult * stdev(src, length) upper = basis + dev lower = basis - dev plot(basis, "BB Basis", color=#872323, offset = offset) p1 = plot(upper, "BB Upper", color=color.teal, offset = offset) p2 = plot(lower, "BB Lower", color=color.teal, offset = offset) fill(p1, p2, title = "BB Background", color=#198787, transp=95) //Stoch Inputs smoothK = input(3, "K", minval=1) smoothD = input(3, "D", minval=1) lengthRSI = input(14, "RSI Length", minval=1) lengthStoch = input(14, "Stochastic Length", minval=1) upperlimit = input(90, "Upper Limit", minval=0.01) lowerlimit = input(10, "Upper Limit", minval=0.01) //Stochastic Code rsi1 = rsi(src, lengthRSI) k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) d = sma(k, smoothD) //Evaluation Bear = close[1] > upper[1] and close < upper and k[1] > upperlimit and d[1] > upperlimit Bull = close[1] < lower[1] and close > lower and k[1] < lowerlimit and d[1] < lowerlimit //Plots plotshape(Bear, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny) plotshape(Bull, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny) // Alert Functionality alertcondition(Bear or Bull, title="Any Signal", message="{{exchange}}:{{ticker}}" + " {{interval}}" + " BB Stochastic Extreme!") alertcondition(Bear, title="Bearish Signal", message="{{exchange}}:{{ticker}}" + " {{interval}}" + " Bearish BB Stochastic Extreme!") alertcondition(Bull, title="Bullish Signal", message="{{exchange}}:{{ticker}}" + " {{interval}}" + " Bullish BB Stochastic Extreme!") if Bear strategy.entry("Enter Long", strategy.long) else if Bull strategy.entry("Enter Short", strategy.short)