La stratégie de rupture des moyennes mobiles et des bandes de Bollinger

Auteur:ChaoZhang est là., Date: le 19 février 2024 14:18:00
Les étiquettes:

img

Résumé

Cette stratégie combine l'utilisation de l'indicateur RSI pour identifier les signaux de surachat et de survente, les bandes de Bollinger pour déterminer les écarts de prix et les croisements moyens mobiles pour juger du marché à différents stades de tendance, afin de réaliser des bénéfices.

La logique de la stratégie

La stratégie est composée des principaux indicateurs suivants:

  1. Indicateur RSI: lorsque la ligne RSI dépasse le seuil de surachat ou dépasse le seuil de survente, des transactions longues ou courtes sont effectuées en conséquence.

  2. Bandes de Bollinger: lorsque le prix franchit la bande supérieure de Bollinger, une transaction courte est effectuée; lorsque le prix franchit la bande inférieure de Bollinger, une transaction longue est effectuée.

  3. Moyenne mobile: les prix les plus élevés et les plus bas au cours d'une certaine période (par exemple 5 périodes) sont calculés. Lorsque le prix est supérieur au point le plus élevé au cours des 5 dernières périodes, une transaction longue est effectuée; lorsque le prix est inférieur au point le plus bas au cours des 5 dernières périodes, une transaction courte est effectuée.

  4. MACD: Le croisement et la croix de mort de la ligne rapide, de la ligne lente et de la ligne MACD sont utilisés comme indicateurs auxiliaires de jugement.

Ces indicateurs fonctionnent ensemble pour juger du marché dans les stades de tendance et de consolidation. Les bandes de Bollinger identifient les ruptures et les réversions à la moyenne. Les moyennes mobiles déterminent les points d'inversion de tendance pendant la consolidation. Les extrêmes RSI repèrent les conditions de marché surachetées / survendues pour les transactions contre-tendance.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. La combinaison de plusieurs indicateurs améliore la précision.

  2. Applicable à différentes conditions de marché. Bandes de Bollinger pour les tendances, moyennes mobiles pour la consolidation, RSI pour les extrêmes.

  3. Les paramètres de l'indicateur sont réglés de manière prudente pour éviter une survente.

  4. Structure de code propre, facile à comprendre, à modifier et à développer.

Analyse des risques

Certains risques nécessitent une attention particulière:

  1. Risques de paramètres. Les paramètres d'indicateur inappropriés peuvent générer des signaux de trading incorrects. Les paramètres nécessitent des tests et une optimisation continus.

  2. Les risques de changement de position longue/courte. Les changements fréquents de position longue/courte autour d'inversions de tendance augmentent les coûts de négociation. La période de détention peut être ajustée.

  3. Les risques liés au codage. Les failles logiques cachées dans le code pourraient entraîner des transactions anormales. La gestion des exceptions et la comptabilisation devraient être améliorées.

Optimisation

La stratégie peut être améliorée dans les domaines suivants:

  1. Ajoutez un stop loss pour verrouiller les bénéfices et réduire les pertes.

  2. Incorporer le volume de négociation pour éviter les faux signaux.

  3. Introduire l'apprentissage automatique pour trouver des paramètres optimaux basés sur des données historiques.

  4. Construire une interface graphique pour une affichage intuitive des performances.

  5. Effectuer un backtest pour trouver les meilleures combinaisons de paramètres.

Conclusion

Cette stratégie combine la moyenne mobile, les bandes de Bollinger, le RSI et plus encore pour générer des signaux de trading. Sa polyvalence et sa précision sont des atouts évidents, tandis que le réglage des paramètres et les risques de codage doivent être gérés.


/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-15 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("MD strategy", overlay=true)
lengthrsi = input( 14 )
overSold = input( 30 )
overBought = input( 70 )
price = close
source = close
lengthbb = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50)
direction = input(0, title = "Strategy Direction",minval=-1, maxval=1)
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
consecutiveBarsUp = input(3)
consecutiveBarsDown = input(3)
lengthch = input( minval=1, maxval=1000, defval=5)
upBound = highest(high, lengthch)
downBound = lowest(low, lengthch)



ups = price > price[1] ? nz(ups[1]) + 1 : 0
dns = price < price[1] ? nz(dns[1]) + 1 : 0
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD

strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

basis = sma(source, lengthbb)
dev = mult * stdev(source, lengthbb)

upper = basis + dev
lower = basis - dev

vrsi = rsi(price, lengthrsi)

if (not na(vrsi))
    if (crossover(vrsi, overSold))
        strategy.entry("RsiLE", strategy.long, comment="RsiLE")
    if (crossunder(vrsi, overBought))
        strategy.entry("RsiSE", strategy.short, comment="RsiSE")

if (crossover(source, lower))
    strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands",  comment="BBandLE")
else
    strategy.cancel(id="BBandLE")

if (crossunder(source, upper))
    strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands",  comment="BBandSE")
else
    strategy.cancel(id="BBandSE")
    
    
if (not na(close[lengthch]))
    strategy.entry("ChBrkLE", strategy.long, stop=upBound + syminfo.mintick, comment="ChBrkLE")
    strategy.entry("ChBrkSE", strategy.short, stop=downBound - syminfo.mintick, comment="ChBrkSE")
    
    
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Plus de