Cette stratégie est une stratégie de trading de rupture à double voie basée sur les bandes de Bollinger.
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.
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.
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.
La stratégie peut être optimisée dans les aspects suivants:
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.;
Augmenter les autres indicateurs pour juger et former plusieurs conditions de filtrage pour éviter les signaux erronés;
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;
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.
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))