Cette stratégie combine les bandes de Bollinger, l'indice de force relative (RSI) et l'indice des canaux de produits de base (CCI) pour trouver des signaux croisés et générer des signaux d'achat et de vente.
Les bandes de Bollinger se composent d'une bande moyenne, d'une bande supérieure et d'une bande inférieure. La bande moyenne est généralement une moyenne mobile de 20 jours. La bande supérieure est deux écarts standard au-dessus de la bande moyenne. La bande inférieure est deux écarts standard en dessous. Les prix près de la bande inférieure peuvent indiquer une condition de survente. Les prix près de la bande supérieure peuvent indiquer une condition de surachat.
Le RSI mesure la vitesse des mouvements directionnels des prix vers le haut et vers le bas. Il montre un surachat au-dessus de 70 et un survente au-dessous de 30.
L'indicateur CCI mesure à quel point les prix se sont déplacés par rapport au prix moyen. Les lectures supérieures à +100 impliquent une condition de surachat. Les lectures inférieures à -100 impliquent une condition de survente. L'indicateur CCI reflète des niveaux de prix extrêmes.
Cette stratégie utilise des bandes de Bollinger pour juger des niveaux de surachat/survente à court terme, RSI pour mesurer la dynamique haussière/baissière et CCI pour identifier les extrêmes de prix.
Cette stratégie analyse les conditions globales du marché à l'aide d'indicateurs Bollinger Bands, RSI et CCI. Elle identifie les points d'inflexion à travers des signaux croisés pour négocier les renversements du marché.
/*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)