Stratégie de négociation de swing haussier basée sur les bandes de Bollinger et le RSI

Auteur:ChaoZhang est là., Date: 2024-03-11 11:51:22 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie utilise deux indicateurs techniques, les bandes de Bollinger et l'indice de force relative (RSI), pour le trading swing haussier dans les tendances haussières.

Principes de stratégie

  1. Calculer le RSI: Utilisez la moyenne mobile relative (RMA) pour calculer séparément l'ampleur moyenne des hausses et des baisses de prix, puis divisez l'ampleur des hausses par l'ampleur totale pour obtenir le RSI.

  2. Calculer les bandes de Bollinger: Utilisez la moyenne mobile simple (SMA) pour calculer la ligne médiane du prix, puis additionnez et soustrayez les écarts standards pour obtenir les bandes supérieures et inférieures.

  3. Ouvrir long: Lorsque le prix dépasse la bande inférieure de Bollinger et que le RSI est inférieur à 35, il est considéré comme survendu et une position longue est ouverte.

  4. Fermeture longue: lorsque le RSI dépasse 69, il est considéré comme suracheté et la position longue est fermée pour verrouiller les bénéfices.

  5. Après ouverture d'une position, les prix de prise de profit et de stop loss sont calculés en fonction des pourcentages définis par l'utilisateur. La position est fermée lorsque le prix de prise de profit ou de stop loss est atteint. Cela aide à contrôler le risque et le rendement de chaque transaction.

Analyse des avantages

  1. Les bandes de Bollinger peuvent refléter objectivement la gamme des mouvements de prix et s'ajuster en synchronisation avec les tendances des prix sans être limitées par des seuils fixes.

  2. Le RSI peut refléter intuitivement l'équilibre entre les forces haussières et baissières et est également relativement objectif.

  3. Lorsqu'il est utilisé dans les tendances haussières, il est plus approprié pour le swing trading. En capturant les rebonds de prix avec la bande de Bollinger inférieure et un faible RSI, et en fermant en temps opportun les positions avec un RSI élevé, il peut capturer efficacement les mouvements de marché à court terme.

  4. Les investisseurs peuvent définir des paramètres flexibles en fonction de leurs préférences en matière de risque.

  5. La logique et le code de la stratégie sont relativement simples, faciles à comprendre et à mettre en œuvre, et les résultats des backtests sont relativement stables.

Analyse des risques

  1. Dans les marchés agités, les bandes de Bollinger et le RSI peuvent générer trop de signaux de négociation, ce qui entraîne une fréquence de négociation élevée et une augmentation des coûts de transaction.

  2. Un seul indicateur comme le RSI est facilement affecté par les fluctuations de prix à court terme et peut produire des signaux trompeurs.

  3. La sélection des paramètres Bollinger Band et RSI a une incidence significative sur la performance de la stratégie, et différents marchés et instruments peuvent exiger des paramètres différents.

  4. En cas d'événements inattendus ou de conditions de marché anormales, les bandes de Bollinger et le RSI peuvent devenir inefficaces.

Directions d'optimisation

  1. Considérez l'introduction d'autres indicateurs techniques tels que les moyennes mobiles pour le filtrage. Par exemple, n'ouvrez des positions que lorsque les moyennes mobiles sont en alignement haussier pour améliorer la fiabilité des signaux.

  2. Optimiser les seuils supérieur et inférieur du RSI, les paramètres des bandes de Bollinger, etc., afin de trouver les meilleures combinaisons de paramètres pour chaque instrument et chaque période.

  3. En fonction du backtesting, effectuer des tests à terme et une simulation de négociation appropriée afin de valider pleinement l'efficacité et la stabilité de la stratégie avant la négociation en direct.

  4. Une stratégie de contrôle plus poussée des retraits et une amélioration des rendements ajustés au risque par la dimensionnement des positions, la prise de profit dynamique et le stop-loss, et d'autres méthodes.

  5. Incorporer la stratégie dans un portefeuille de placements et l'utiliser conjointement avec d'autres stratégies de couverture, plutôt que de l'utiliser isolément, pour améliorer la stabilité du portefeuille.

Résumé

Cette stratégie est adaptée à la capture des mouvements de marché à court terme dans les tendances haussières, et sa logique et sa mise en œuvre sont relativement simples. Elle ouvre des positions longues lorsque le prix dépasse la bande de Bollinger inférieure et que le RSI est bas, ferme des positions lorsque le RSI est élevé, et établit des niveaux de profit et de stop-loss. Les avantages de la stratégie sont qu'elle peut refléter objectivement la gamme de fluctuations de prix et l'équilibre des forces haussières et baissières, et ses risques sont relativement contrôlables. Cependant, lorsqu'elle est utilisée dans la pratique, il faut faire attention à contrôler la fréquence de trading, combiner plus d'indicateurs pour filtrer les paramètres, optimiser les indicateurs et gérer les positions.


/*backtest
start: 2023-03-05 00:00:00
end: 2024-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Bollinger Band with RSI", shorttitle="BB&RSI")
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(69, "Upper Band", color=#C0C0C0)
band0 = hline(31, "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 < 35.58 and src < lower
exit_long = rsi > 69
 
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)


Plus de