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.
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.
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.
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.
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.
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)