Stratégie de SMA de renversement de la moyenne HYE

Auteur:ChaoZhang est là., Date: 2023-12-15 16h51 et 23h
Les étiquettes:

img

Résumé

La stratégie SMA de réversion moyenne HYE est une stratégie de trading de réversion moyenne utilisant des moyennes mobiles simples et l'indice de force relative (RSI). Elle génère des signaux d'achat et de vente lorsque le prix s'écarte de la moyenne mobile d'un certain pourcentage, combinée au filtrage des indicateurs RSI.

La logique de la stratégie

La stratégie repose principalement sur les règles suivantes:

  1. Lorsque la moyenne mobile simple sur deux périodes tombe de 3% en dessous de la moyenne mobile simple sur cinq périodes, on considère que le prix dévie de la moyenne et un signal d'achat est généré.

  2. Lorsque la SMA à deux périodes franchit la SMA à cinq périodes, on considère que le prix revient à la moyenne et un signal de vente est généré.

  3. Combinés à la moyenne mobile exponentielle du RSI à 5 périodes, les signaux d'achat ne sont générés que lorsque le RSI est inférieur à 30 et les signaux de vente lorsque le RSI est supérieur à 70, afin d'éviter des transactions inutiles.

L'idée principale est de capturer les opportunités de renversement moyen en utilisant les fluctuations de prix à court terme. Acheter lorsque le prix chute d'un certain pourcentage, vendre lorsque le prix revient près de la moyenne mobile, pour faire un profit. Pendant ce temps, l'indicateur RSI peut identifier les conditions de surachat et de survente pour filtrer certains signaux de trading bruyants.

Analyse des avantages

La stratégie présente les avantages suivants:

  1. Facile à mettre en œuvre avec de faibles coûts de surveillance.

  2. Capture les opportunités de réversion moyenne à court terme en utilisant l'écart de prix par rapport aux moyennes mobiles.

  3. L'indicateur RSI peut filtrer efficacement le bruit du trading et éviter de poursuivre des sommets et des vallées meurtrières.

  4. Adaptation flexible des paramètres adaptée à différents environnements de marché.

  5. Prend en charge uniquement les transactions longues, courtes ou dans les deux sens pour répondre à différentes préférences.

Analyse des risques

Il y a aussi des risques:

  1. La réversion moyenne repose sur le retour du prix à la moyenne mobile.

  2. Des paramètres mal réglés peuvent entraîner une survente ou des opportunités manquées.

  3. La performance est fortement corrélée au marché, mais sous-performe sur les marchés à fourchette et volatiles.

Les contre-mesures:

  1. Mettre en place un stop loss approprié pour contrôler les pertes d'une seule transaction.

  2. Optimiser progressivement les paramètres et évaluer les rendements ajustés au risque.

  3. Combinez avec l'indice boursier pour améliorer l'adaptabilité.

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Testez différentes combinaisons de moyennes mobiles pour trouver les paramètres optimaux.

  2. Essayez d'intégrer d'autres indicateurs pour identifier les tendances et améliorer le taux de réussite.

  3. Ajouter des mécanismes de stop loss pour réduire le tirage maximum.

  4. Optimiser les règles d'entrée et de sortie pour améliorer les facteurs de profit.

  5. Adopter des techniques d'apprentissage automatique pour créer des paramètres adaptatifs.

Conclusion

La stratégie HYE Mean Reversion SMA est une stratégie de réversion moyenne à court terme simple et pratique. Elle utilise l'écart de prix par rapport aux moyennes mobiles pour générer des signaux de trading, filtrant le bruit avec l'indicateur RSI. Elle a démontré de bonnes performances de backtest. La stratégie est facile à mettre en œuvre avec des paramètres réglables adaptés à différents environnements de marché.


/*backtest
start: 2022-12-08 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4

strategy("HYE Mean Reversion SMA [Strategy]", overlay = true )
  
//Strategy inputs
source = input(title = "Source", defval = close)
tradeDirection = input(title="Trade Direction", type=input.string,
     options=["Long Only", "Short Only", "Both"], defval="Long Only") 
smallMAPeriod = input(title = "Small Moving Average", defval = 2)
bigMAPeriod = input(title = "Big Moving Average", defval = 5)
percentBelowToBuy = input(title = "Percent below to buy %", defval = 3)
percentAboveToSell = input(title = "Percent above to sell %", defval = 3)
rsiPeriod = input(title = "Rsi Period", defval = 2)
rsiLevelforBuy = input(title = "Maximum Rsi Level for Buy", defval = 30)
rsiLevelforSell = input(title = "Minimum Rsi Level for Sell", defval = 70)
     
longOK  = (tradeDirection == "Long Only") or (tradeDirection == "Both")
shortOK = (tradeDirection == "Short Only") or (tradeDirection == "Both")

// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
     defval=2020, minval=1800, maxval=2100)

endDate = input(title="End Date", type=input.integer,
     defval=31, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
     defval=12, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100)
     
inDateRange = true

//Strategy calculation 
rsiValue = rsi(source, rsiPeriod)
rsiEMA   = ema(rsiValue, 5)
smallMA = sma(source, smallMAPeriod)
bigMA =  sma(source, bigMAPeriod) 
buyMA = ((100 - percentBelowToBuy) / 100) * sma(source, bigMAPeriod)[0]
sellMA = ((100 + percentAboveToSell) / 100) * sma(source, bigMAPeriod)[0]

if(crossunder(smallMA, buyMA) and rsiEMA < rsiLevelforBuy and inDateRange and longOK)
    strategy.entry("BUY", strategy.long) 

if(crossover(smallMA, bigMA) or not inDateRange)
    strategy.close("BUY")

if(crossover(smallMA, sellMA) and rsiEMA > rsiLevelforSell and inDateRange and shortOK)
    strategy.entry("SELL", strategy.short)

if(crossunder(smallMA, bigMA) or not inDateRange)
    strategy.close("SELL")



Plus de