
Cette stratégie est une stratégie de négociation basée sur les bandes de Brin et les oscillateurs aléatoires. Elle utilise les bandes de Brin pour déterminer la portée des fluctuations du marché et utilise les oscillateurs aléatoires pour juger de l’état de survente et de survente du marché.
Le cœur de la stratégie est constitué de deux indicateurs techniques, la bande de Brin et l’oscillateur aléatoire. La bande de Brin est composée de trois lignes: la voie médiane, la voie supérieure et la voie inférieure. La voie médiane est une moyenne mobile simple des prix, la voie supérieure et la voie inférieure étant respectivement un certain nombre de multiples de la différence de prix entre la voie médiane et la norme de prix.
L’oscillateur aléatoire est composé de deux lignes: la ligne %K et la ligne %D. La ligne %K mesure la position du prix de clôture entre le plus haut et le plus bas prix au cours de la période la plus récente. La ligne %D est la moyenne mobile de la ligne %K.
La stratégie combine ces deux indicateurs, en faisant un surplus lorsque le prix franchit la bande de Brin et traverse la ligne%D avec l’oscillateur%K au hasard; et en faisant un vide lorsque le prix franchit la bande de Brin et traverse la ligne%D avec l’oscillateur%K au hasard. Cette combinaison permet de capturer efficacement les tendances du marché, tout en évitant les échanges fréquents dans les marchés en mouvement.
Cette stratégie est une stratégie de trading simple et efficace qui, en combinant les deux indicateurs techniques classiques des bandes de Brin et des oscillateurs aléatoires, permet d’obtenir des gains stables dans les deux conditions de marché tendance et oscillation. Bien que la stratégie présente également certains risques et limitations, elle peut être améliorée encore plus en termes de performance et d’adaptabilité grâce à une optimisation et une amélioration appropriées.
/*backtest
start: 2023-05-03 00:00:00
end: 2024-05-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Unique Bollinger Bands Strategy", overlay=true)
src = input(close)
length = input.int(34, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50)
basis = ta.sma(src, length)
dev = ta.stdev(src, length)
dev2 = mult * dev
upper1 = basis + dev
lower1 = basis - dev
upper2 = basis + dev2
lower2 = basis - dev2
colorBasis = src >= basis ? color.blue : color.orange
pBasis = plot(basis, linewidth=2, color=colorBasis)
pUpper1 = plot(upper1, color=color.new(color.blue, 0), style=plot.style_circles)
pUpper2 = plot(upper2, color=color.new(color.blue, 0))
pLower1 = plot(lower1, color=color.new(color.orange, 0), style=plot.style_circles)
pLower2 = plot(lower2, color=color.new(color.orange, 0))
fill(pBasis, pUpper2, color=color.new(color.blue, 80))
fill(pUpper1, pUpper2, color=color.new(color.blue, 80))
fill(pBasis, pLower2, color=color.new(color.orange, 80))
fill(pLower1, pLower2, color=color.new(color.orange, 80))
// Parameters
bbLength = input.int(34, title="Length", minval=1)
bbMultiplier = input.float(2.0, title="Multiplier", minval=0.001, maxval=50)
// Source
priceData = close // Unique name for price data source
// Bollinger Bands Calculation
bbBasis = ta.sma(priceData, bbLength)
bbDeviation = ta.stdev(priceData, bbLength)
bbDeviationMultiplied = bbMultiplier * bbDeviation
bbUpperBand = bbBasis + bbDeviationMultiplied
bbLowerBand = bbBasis - bbDeviationMultiplied
// Plot Bollinger Bands
plot(bbBasis, color=color.blue, linewidth=2)
plot(bbUpperBand, color=color.blue)
plot(bbLowerBand, color=color.orange)
// Strategy Logic for Entry and Exit
enterLong = ta.crossover(priceData, bbUpperBand)
enterShort = ta.crossunder(priceData, bbLowerBand)
// Enter Long when price crosses over upper band
if (enterLong)
strategy.entry("Long", strategy.long)
// Enter Short when price crosses under lower band
if (enterShort)
strategy.entry("Short", strategy.short)
// Close Long when Short condition is met (i.e., price under lower band)
if (enterShort)
strategy.close("Long")
// Close Short when Long condition is met (i.e., price over upper band)
if (enterLong)
strategy.close("Short")