Les ressources ont été chargées... Je charge...

Les bandes de Bollinger et l'indicateur RSI suivant la tendance de la stratégie

Auteur:ChaoZhang est là., Date: 2023-12-20 à 14h32h40
Les étiquettes:

img

Résumé

Cette stratégie utilise les bandes de Bollinger, l'indicateur RSI et la moyenne mobile sur 200 périodes pour identifier la direction de la tendance et effectuer des transactions contre-tendance près des bandes de Bollinger lorsque la direction de la tendance est appropriée, afin de réaliser des bénéfices.

La logique de la stratégie

Premièrement, la moyenne mobile de 200 périodes est utilisée pour déterminer la direction générale de la tendance. Une tendance haussière est définie lorsque le prix est supérieur à la moyenne mobile et une tendance baissière est définie lorsque le prix est inférieur. Deuxièmement, lorsqu'une tendance haussière, une entrée longue est exécutée si l'indicateur RSI indique une survente et se rapproche de la bande inférieure de Bollinger; lorsqu'une tendance baissière, une entrée courte est exécutée si l'indicateur RSI indique une survente et se rapproche de la bande supérieure de Bollinger. Enfin, l'indicateur ATR est utilisé pour définir le niveau de stop loss, et le bénéfice est défini à 2 fois le niveau de stop loss.

Analyse des avantages

Le principal avantage de cette stratégie est qu'elle combine plusieurs indicateurs pour déterminer la direction de la tendance et le moment des entrées. Premièrement, la moyenne mobile sur 200 jours peut identifier efficacement la tendance principale. Deuxièmement, les bandes supérieures/inférieures des bandes de Bollinger indiquent les zones où les prix peuvent s'inverser. Enfin, le RSI suggère un possible moment de renversement. L'utilisation de plusieurs indicateurs évite le risque d'une mauvaise appréciation d'un seul.

Analyse des risques

Les principaux risques de cette stratégie proviennent de l'identification inexacte des principales tendances et des signaux d'inversion. Si la tendance est mal jugée, elle peut entraîner des pertes consécutives. Si les signaux d'inversion sont erronés, la probabilité d'arrêt de perte serait élevée. En outre, le contre-trend lui-même présente des risques plus élevés qui nécessitent une opération prudente.

Pour atténuer les risques susmentionnés, il est conseillé d'ajuster les paramètres de la moyenne mobile ou d'ajouter d'autres indicateurs de confirmation afin d'améliorer la précision.

Directions d'optimisation

Il y a beaucoup de place pour optimiser cette stratégie: premièrement, ajuster les paramètres de la moyenne mobile pour améliorer la précision de l'identification de la tendance. Deuxièmement, ajuster les paramètres des bandes de Bollinger ou ajouter des canaux Kalman pour mieux localiser les zones d'inversion. Troisièmement, ajouter d'autres indicateurs comme le MACD pour la confirmation afin d'éviter de mauvais signaux. Quatrièmement, optimiser le paramètre du ratio de stop loss pour réduire les chances d'événements de stop loss réels.

Conclusion

Cette stratégie combine les bandes de Bollinger, le RSI et les moyennes mobiles pour déterminer les tendances et le calendrier, et a obtenu de bons résultats. Mais une optimisation supplémentaire de l'ajustement des paramètres et du contrôle des risques est nécessaire pour améliorer la stabilité des bénéfices.


/*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=4
strategy("Gab EMA + rsi + bb", overlay=true)
// Custom RSI
RSIlength = input(3, minval=1 , title="lookback length of RSI")
RSIOverBought = input(70, title="RSI OB")
RSIOverSold = input(30, title="RSI OS")
RSIprice = close
vrsi = rsi(RSIprice, RSIlength)


//Bollinger Bands
BBlength = input(20, minval=1,title="Bollinger Period Length")
BBmult = input(2.0, minval=0.001, maxval=50, title="Bollinger Bands Standard Deviation")
BBbasis = sma(close, BBlength)
BBdev = BBmult * stdev(close, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close

//EMA
emaLength=input(200)

//Set TP and SL values
sl_short = high + (syminfo.mintick * 5 * 10)
tp_short = low - (syminfo.mintick * 10 * 10)
sl_long = low - (syminfo.mintick * 5 * 10)
tp_long = high + (syminfo.mintick * 10 * 10)


//Strategy Entry and Exit
strategy.entry("sell", strategy.short, when = low < ema(low, emaLength) and vrsi < RSIOverSold and low < BBlower and barstate.isconfirmed)
strategy.exit("closeshort", from_entry="sell", limit=tp_short, stop=sl_short, when=strategy.position_size != 0)

strategy.entry("buy", strategy.long, when = high > ema(high, emaLength) and vrsi > RSIOverBought and high > BBupper and barstate.isconfirmed)
strategy.exit("closelong", from_entry="buy", limit=tp_long, stop=sl_long, when=strategy.position_size != 0)



  

Plus de