
Cette stratégie utilise les bandes de Brin, l’indice de force relative (RSI) et l’indice de chemin de marchandises (CCI) pour rechercher les signaux de croisement et émettre des signaux d’achat et de vente. La stratégie vise à détecter les sur-achats et les sur-vente du marché et à entrer dans le marché aux points de basculement afin d’obtenir un meilleur retour sur investissement.
Les bandes de Brin sont constituées d’un milieu, d’un haut et d’un bas. Le milieu est généralement représenté par une moyenne mobile de 20 jours. Le haut et le bas sont respectivement situés au-dessus et au-dessous du milieu.
L’indicateur RSI reflète la variation de la vitesse à laquelle les prix de clôture augmentent et diminuent au cours d’une période de temps et sert à mesurer le rapport de force entre les prix d’achat et de vente. La valeur du RSI est une zone de survente de 0 à 30 et une zone de survente de 70 à 100. Elle peut servir de signal de vente lorsque le RSI descend de la zone de survente et de signal d’achat lorsque le RSI monte de la zone de survente.
L’indicateur CCI est utilisé pour mesurer la mesure dans laquelle le prix d’une action s’écarte de son prix moyen. +100 représente un prix bien supérieur au prix moyen, c’est-à-dire un surachat; -100 représente un prix bien inférieur au prix moyen, c’est-à-dire un survente.
Cette stratégie utilise la courbe de Brin pour déterminer si le prix est sur-acheté ou sur-vendu à court terme, l’indicateur RSI pour déterminer l’équilibre de la force de vente et d’achat, et l’indicateur CCI pour déterminer le degré de déviation du prix. L’indicateur Brin, le RSI et le CCI émettent des instructions de négociation lorsque des signaux d’achat / de vente sont donnés simultanément.
Cette stratégie prend en compte l’état du marché à court, moyen et long terme. Elle utilise les signaux croisés des trois indicateurs Brin, RSI et CCI pour déterminer le moment du retournement du marché. Elle est une stratégie de suivi de retournement plus robuste.
/*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)