Cette stratégie combine les bandes de Bollinger et l'indicateur d'indice de force relative (RSI) pour prédire la volatilité des prix et déterminer les points d'entrée optimaux. La logique est simple - nous regardons les prix de clôture qui touchent la bande inférieure de Bollinger, après quoi il y a deux scénarios possibles: soit le prix rebondit de la bande inférieure de Bollinger, soit il continue à baisser. Pour confirmer le mouvement des prix, nous utilisons un deuxième indicateur, le RSI, pour enquêter davantage sur la tendance. Par exemple, si le prix atteint la bande inférieure de Bollinger mais que la valeur du RSI n'est pas survendue, nous pouvons conclure que le prix continuera à baisser. Si la valeur du RSI est survendue, nous pouvons utiliser cette zone comme point d'entrée.
Un stop loss est nécessaire pour éviter de perdre trop de capital si l'indice de volatilité s'attarde trop longtemps sur le territoire de la survente.
La meilleure zone de prise de profit est lorsque le prix rebondit au-dessus de la bande moyenne/haute de Bollinger ou lorsque l'indice de volatilité atteint des niveaux de surachat, selon la première des deux.
Une longue entrée:
RSI < 30 et prix de clôture < bande inférieure de Bollinger
Sortie longue:
RSI > 70
La stratégie calcule d'abord l'indicateur RSI et définit des limites supérieures/inférieures pour déterminer les niveaux de surachat/survente. Elle calcule ensuite les bandes moyennes, supérieures et inférieures de Bollinger. Lorsque le prix de clôture touche la bande inférieure et que le RSI est inférieur à 30, passez long. Lorsque le RSI est supérieur à 70, fermez la position.
Lorsque vous entrez long, définissez des points de stop loss et de take profit.
Cela nous permet d'acheter à la bande inférieure de Bollinger lorsque le RSI est bas et de vendre lorsque le RSI est élevé, profitant de l'inversion.
Les risques peuvent être atténués en ajustant les paramètres de Bollinger, en utilisant d'autres indicateurs et en élargissant le stop loss de manière appropriée.
Le profil risque/rendement global de cette stratégie est équilibré et les résultats des backtests sont bons. Des améliorations supplémentaires peuvent être apportées grâce à l'optimisation des paramètres et à l'amélioration des indicateurs.
Je ne sais pas.
/*backtest start: 2023-09-10 00:00:00 end: 2023-09-17 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //strategy(title="Bollinger Band with RSI", shorttitle="BB&RSI", format=format.price, precision=2, pyramiding=50, initial_capital=10000, calc_on_order_fills=false, calc_on_every_tick=true, default_qty_type=strategy.cash, default_qty_value=1000, currency="USD") len = input(14, minval=1, title="Length") src = input(close, "Source", type = input.source) up = rma(max(change(src), 0), len) down = rma(-min(change(src), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) plot(rsi, "RSI", color=#8E1599) band1 = hline(70, "Upper Band", color=#C0C0C0) band0 = hline(30, "Lower Band", color=#C0C0C0) fill(band1, band0, color=#9915FF, transp=90, title="Background") length_bb = input(20,title="BB Length", minval=1) mult = input(2.0, minval=0.001, maxval=50, title="BB StdDev") basis = sma(src, length_bb) dev = mult * stdev(src, length_bb) upper = basis + dev lower = basis - dev offset = input(0, "BB Offset", type = input.integer, minval = -500, maxval = 500) Plot_PnL = input(title="Plot Cummulative PnL", type=input.bool, defval=false) Plot_Pos = input(title="Plot Current Position Size", type=input.bool, defval=false) long_tp_inp = input(10, title='Long Take Profit %', step=0.1)/100 long_sl_inp = input(25, title='Long Stop Loss %', step=0.1)/100 // Take profit/stop loss long_take_level = strategy.position_avg_price * (1 + long_tp_inp) long_stop_level = strategy.position_avg_price * (1 - long_sl_inp) entry_long = rsi < 30 and src < lower exit_long = rsi > 70 plotshape(entry_long, style=shape.labelup, color=color.green, location=location.bottom, text="L", textcolor=color.white, title="LONG_ORDER") plotshape(exit_long, style=shape.labeldown, color=color.red, location=location.top, text="S", textcolor=color.white, title="SHORT_ORDER") strategy.entry("Long",true,when=entry_long) strategy.exit("TP/SL","Long", limit=long_take_level, stop=long_stop_level) strategy.close("Long", when=exit_long, comment="Exit") plot(Plot_PnL ? strategy.equity-strategy.initial_capital : na, title="PnL", color=color.red) plot(Plot_Pos ? strategy.position_size : na, title="open_position", color=color.fuchsia)