Stratégie de percée à double voie des bandes de Bollinger

Auteur:ChaoZhang est là., Date: 2024-02-05 14h05 et 47 min
Les étiquettes:

img

Résumé

Cette stratégie est une stratégie de trading de rupture à double voie basée sur les bandes de Bollinger.

Principe de stratégie

La stratégie utilise les rails supérieur et inférieur des bandes de Bollinger. Les bandes de Bollinger se composent d'une moyenne mobile et de deux canaux d'écart type qui lui correspondent. Un signal de vente est généré lorsque le prix touche ou traverse le rail supérieur des bandes de Bollinger; Un signal d'achat est généré lorsque le prix touche ou traverse le rail inférieur des bandes de Bollinger. En outre, la stratégie fixe également un point de stop loss. Lorsque le prix est inférieur à un certain pourcentage de la moyenne mobile, un stop loss sera identifié.

Plus précisément, la stratégie calcule la moyenne mobile et deux fois l'écart type du cycle spécifié (comme 20 jours) pour tracer les bandes de Bollinger. Le rail supérieur est la moyenne mobile plus deux fois l'écart type, et le rail inférieur est la moyenne mobile moins deux fois l'écart type. Lorsque le prix de clôture est supérieur ou égal au rail supérieur, un signal de vente est émis; lorsque le prix de clôture est inférieur ou égal au rail inférieur, un signal d'achat est émis. En outre, si le prix est inférieur à un certain pourcentage (comme 1%) de la moyenne mobile, un signal de stop loss est émis.

Les avantages de la stratégie

La stratégie utilise les caractéristiques des bandes de Bollinger pour émettre des signaux de trading lorsque des fluctuations de prix anormales se produisent, capturant ainsi des opportunités d'inversions de prix.

Comparée aux stratégies simples de rupture à double voie, cette stratégie ajoute un mécanisme de stop-loss. Cela peut contrôler efficacement la perte causée par des signaux erronés individuels. Le réglage du point de stop-loss est également relativement raisonnable, proche de la moyenne mobile, évitant une perte de stop excessive causant trop de perte.

Risques stratégiques

Le plus grand risque de cette stratégie est que les bandes de Bollinger ne peuvent pas elles-mêmes garantir la validité des signaux de trading.

En outre, le réglage des points de stop loss peut également être trop agressif ou conservateur, ce qui affectera le bénéfice final.

Directions d'optimisation de la stratégie

La stratégie peut être optimisée dans les aspects suivants:

  1. Pour déterminer les paramètres optimaux, tester différentes combinaisons de paramètres, telles que différentes valeurs du cycle de la moyenne mobile, du multiplicateur d'écart type, du pourcentage de stop-loss, etc.;

  2. Augmenter les autres indicateurs pour juger et former plusieurs conditions de filtrage pour éviter les signaux erronés;

  3. Optimiser les stratégies de stop loss, par exemple en utilisant des stop loss mobiles, des stop loss par lots au lieu d'un simple stop loss;

  4. Confirmez les signaux de trading en combinant des bandes de Bollinger de cycles de temps différents pour éviter d'être pris au piège.

Résumé

Dans l'ensemble, cette stratégie est une combinaison pratique de suivi de tendance et de stratégies de percée à double voie. Elle peut saisir les opportunités d'inversions lorsque les fluctuations de prix augmentent et définir des stop-loss pour contrôler les risques.


/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bollinger Bands Strategy by Royce Mars", 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")
stopLossPercent = input.float(1.0, title="Stop Loss Percent", minval=0.1, maxval=10, step=0.1)

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

// Buy and Sell Conditions
buyCondition = close <= lower
sellCondition = close >= upper

// Stop Loss Condition
stopLossCondition = close < basis * (1 - stopLossPercent / 100)

// Strategy Execution
strategy.entry("Buy", strategy.long, when=buyCondition)
strategy.close("Buy", when=sellCondition or stopLossCondition)

strategy.entry("Sell", strategy.short, when=sellCondition)
strategy.close("Sell", when=buyCondition)

// Plotting on the Chart
plotshape(buyCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar)
plotshape(sellCondition or stopLossCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)

// Plotting the Bollinger Bands
plot(basis, "Basis", color=color.orange)
p1 = plot(upper, "Upper Band", color=color.blue)
p2 = plot(lower, "Lower Band", color=color.blue)
fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95))


Plus de