Cette stratégie s'appelle
La logique de base de cette stratégie est basée sur la combinaison des bandes de Bollinger et des indicateurs RSI.
Tout d'abord, les bandes de Bollinger contiennent trois lignes: la ligne moyenne, la ligne supérieure et la ligne inférieure. La ligne moyenne est la moyenne mobile simple de n jours, tandis que la ligne supérieure et la ligne inférieure sont k fois l'écart type au-dessus et au-dessous de la ligne moyenne. Lorsque le prix atteint ou touche la ligne supérieure ou inférieure, cela indique que le stock est en état de surachat ou de survente.
Dans cette stratégie, la durée de la ligne moyenne des bandes de Bollinger est de 235 jours et la valeur du paramètre k est de 2. Elle génère des signaux d'achat lorsque le prix tombe en dessous de la ligne inférieure de Bollinger ou dépasse la ligne moyenne, et des signaux de vente lorsque le prix dépasse la ligne supérieure de Bollinger.
Deuxièmement, l'indicateur RSI reflète le niveau de surachat/survente d'un stock.
Dans cette stratégie, les bandes de Bollinger et les indicateurs RSI sont utilisés ensemble: les signaux d'achat sont générés lorsque le RSI dépasse le niveau de survente tandis que le prix touche ou tombe en dessous de la ligne inférieure de Bollinger. Les signaux de vente sont générés lorsque le RSI dépasse le niveau de surachat tandis que le prix augmente au-dessus de la ligne supérieure de Bollinger.
Cette stratégie présente les avantages suivants:
Il existe également certains risques associés à cette stratégie:
Il existe plusieurs directions pour optimiser davantage cette stratégie:
Il s'agit d'une stratégie à long terme particulièrement adaptée aux actions hautement volatiles telles que le FNGU. En combinant les bandes de Bollinger et le RSI, il génère des signaux de trading autour des niveaux de prix surachetés/survendus, visant à saisir les opportunités d'inversion des prix.
/*backtest start: 2023-12-29 00:00:00 end: 2024-01-28 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Bollinger + RSI + EMA, Double Strategy Long-Only (by EMKM)", shorttitle="1Min Killer", overlay=true) ///////////// RSI RSIlength = input(2, title="RSI Period Length") // Adjusted RSI period length RSIoverSold = 50 RSIoverBought = 50 price = close vrsi = rsi(price, RSIlength) ///////////// Bollinger Bands BBlength = input(235, minval=1, title="Bollinger Period Length") // Adjusted Bollinger period length BBmult = 2 BBbasis = sma(price, BBlength) BBdev = BBmult * stdev(price, BBlength) BBupper = BBbasis + BBdev BBlower = BBbasis - BBdev BBtarget38 = BBbasis + 0.38 * BBdev // Line at 38% of Bollinger Band width BBtarget50 = BBbasis + 0.50 * BBdev // Line at 50% of Bollinger Band width ///////////// EMA emaLength = input(20, title="EMA Period Length") ema = ema(close, emaLength) source = close buyEntry = crossover(source, BBlower) or (close < BBlower and close > BBbasis) or (low < BBlower and close > BBbasis) // Add condition for low touching Bollinger Band sellEntry = crossunder(source, BBupper) ///////////// Plotting plot(BBbasis, color=color.aqua, title="Bollinger Bands SMA Basis Line") plot(BBupper, color=color.silver, title="Bollinger Bands Upper Line") plot(BBlower, color=color.silver, title="Bollinger Bands Lower Line") plot(BBtarget38, color=color.blue, linewidth=2, title="SMA at 38% of BB width") // Line at 38% plot(BBtarget50, color=color.green, linewidth=2, title="SMA at 50% of BB width") // Line at 50% plot(ema, color=color.orange, title="EMA") // Plot EMA ///////////// RSI + Bollinger Bands Strategy longCondition = crossover(vrsi, RSIoverSold) and buyEntry sellCondition = crossunder(vrsi, RSIoverBought) and close > BBupper close_long = close > BBbasis close_short = close < BBbasis if (not na(vrsi)) if longCondition strategy.entry("Buy", strategy.long, qty=10, stop=BBlower, comment="Buy") else strategy.cancel(id="Buy") if close_long strategy.close("Buy") if (sellCondition) strategy.entry("Sell", strategy.short, qty=10, stop=BBupper, comment="Sell") else strategy.cancel(id="Sell") if close_short strategy.close("Sell")