Esta estratégia combina Bandas de Bollinger, Índice de Força Relativa (RSI) e Índice de Canal de Commodities (CCI) para encontrar sinais cruzados e gerar sinais de compra e venda.
As bandas de Bollinger consistem em uma banda média, uma banda superior e uma banda inferior. A banda média é geralmente uma média móvel de 20 dias. A banda superior é dois desvios padrão acima da banda média. A banda inferior é dois desvios padrão abaixo. Os preços perto da banda inferior podem indicar uma condição de sobrevenda. Os preços perto da banda superior podem indicar uma condição de sobrecompra.
O RSI mede a velocidade dos movimentos direcionais de preços para cima e para baixo. Ele mostra sobrecompra acima de 70 e sobrevenda abaixo de 30. Quando o RSI cai acima de 70, pode ser um sinal de venda. Quando o RSI salta acima de 30, pode ser um sinal de compra.
O CCI mede o quão longe os preços se moveram do preço médio. Leituras acima de +100 implicam uma condição de sobrecompra. Leituras abaixo de -100 implicam uma condição de sobrevenda. O CCI reflete níveis extremos de preços.
Esta estratégia usa Bandas de Bollinger para julgar os níveis de sobrecompra/supervenda de curto prazo, RSI para medir o impulso de alta/baixa e CCI para identificar os extremos de preços.
Esta estratégia analisa as condições gerais do mercado usando as Bandas de Bollinger, RSI e indicadores CCI. Identifica pontos de inflexão através de sinais de cruzamento para reversões do mercado comercial. Com outras otimizações como ajuste de parâmetros, mecanismos de captação de lucro, etc., pode ser uma estratégia de contra-tendência robusta para vários ambientes de mercado.
/*backtest start: 2023-11-19 00:00:00 end: 2023-12-19 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(shorttitle="BBRSIstr", title="Bollinger Bands", overlay=true) length = input.int(20, minval=1) maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"]) src = input(close, title="Source") mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev") ma(source, length, _type) => switch _type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "SMMA (RMA)" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) basis = ma(src, length, maType) dev = mult * ta.stdev(src, length) upper = basis + dev lower = basis - dev offset = input.int(0, "Offset", minval = -500, maxval = 500) plot(basis, "Basis", color=#FF6D00, offset = offset) p1 = plot(upper, "Upper", color=#2962FF, offset = offset) p2 = plot(lower, "Lower", color=#2962FF, offset = offset) fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95)) //RSI rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings") rsiSourceInput = input.source(close, "Source", group="RSI Settings") maTypeInput = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings") maLengthInput = input.int(14, title="MA Length", group="MA Settings") bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings") showDivergence = input.bool(false, title="Show Divergence", group="RSI Settings") up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput) down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) rsiMA = ma(rsi, maLengthInput, maTypeInput) isBB = maTypeInput == "Bollinger Bands" rsiPlot = plot(rsi, "RSI", color=#7E57C2) plot(rsiMA, "RSI-based MA", color=color.yellow) rsiUpperBand = hline(70, "RSI Upper Band", color=#787B86) midline = hline(50, "RSI Middle Band", color=color.new(#787B86, 50)) rsiLowerBand = hline(30, "RSI Lower Band", color=#787B86) fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill") //cci ma = ta.sma(src, length) cci = (src - ma) / (0.015 * ta.dev(src, length)) plot(cci, "CCI", color=#2962FF) band1 = hline(100, "Upper Band", color=#787B86, linestyle=hline.style_dashed) hline(0, "Middle Band", color=color.new(#787B86, 50)) band0 = hline(-100, "Lower Band", color=#787B86, linestyle=hline.style_dashed) fill(band1, band0, color=color.rgb(33, 150, 243, 90), title="Background") typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing") smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100, group="Smoothing") smoothingLine = ma(cci, smoothingLength, typeMA) plot(smoothingLine, title="Smoothing Line", color=#f37f20, display=display.none) longCBB= close < lower shortCBB = close>upper longBRSI = rsi < 33 shortBRSI = rsi > 70 longcci = cci < -215 shortcci = cci > 250 strategy.entry("LONG", strategy.long, when = longCBB and longBRSI and longcci) strategy.exit("Exit ", profit = 600) strategy.entry("SHORT", strategy.short, when = shortCBB and shortBRSI and shortcci) strategy.exit("Exit ", profit = 600)