Stratégie de trading Qiming Double Shift Mean Reversion


Date de création: 2023-12-15 16:51:23 Dernière modification: 2023-12-15 16:51:23
Copier: 0 Nombre de clics: 671
1
Suivre
1621
Abonnés

Stratégie de trading Qiming Double Shift Mean Reversion

Aperçu

La stratégie HYE Mean Reversion SMA est une stratégie de trading basée sur une simple moyenne mobile et un indicateur relativement faible. La stratégie utilise un signal de filtrage de l’indicateur RSI pour générer des signaux d’achat et de vente lorsque le prix s’écarte d’une certaine distance de la moyenne mobile.

Principe de stratégie

La stratégie est basée principalement sur les règles suivantes:

  1. Une baisse de 3% de la moyenne mobile simple à 2 périodes par rapport à la moyenne mobile simple à 5 périodes est considérée comme un écart de la moyenne du prix de l’action, générant un signal d’achat;

  2. Lorsque la moyenne mobile simple à 2 périodes est traversée par la moyenne mobile simple à 5 périodes, elle est considérée comme la moyenne de retour des prix, générant un signal de vente;

  3. La combinaison des moyennes mobiles de l’indicateur RSI à 5 périodes ne génère un signal d’achat que lorsque le RSI est inférieur à 30 et un signal de vente lorsque le RSI est supérieur à 70, évitant ainsi des transactions inutiles.

L’idée principale de cette stratégie est d’utiliser les fluctuations de prix à court terme pour capturer les opportunités de retour à la valeur moyenne. Lorsque les prix baissent d’une certaine manière, acheter et vendre lorsque les prix reviennent près de la moyenne, réaliser un profit.

Analyse des forces stratégiques

Cette stratégie présente les avantages suivants:

  1. Les opérations sont simples, faciles à mettre en œuvre et les coûts de surveillance sont faibles.

  2. L’utilisation de la caractéristique de l’écart des prix par rapport aux moyennes mobiles pour saisir les opportunités de retour à la moyenne des lignes courtes, avec de bons résultats de retracement historique;

  3. L’indicateur RSI peut filtrer efficacement le bruit des transactions pour éviter de suivre les hauts et les bas.

  4. Les paramètres peuvent être ajustés de manière flexible pour s’adapter à différents environnements de marché.

  5. Il est possible d’effectuer des opérations en plus, en cours ou en double, selon les préférences.

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. Les opérations de reprise sont tributaires de la capacité des prix à revenir à la moyenne, avec un risque plus élevé de stop loss en cas de forte variation des prix;

  2. Une mauvaise configuration des paramètres peut entraîner des transactions trop fréquentes ou des opportunités manquées;

  3. La performance de la stratégie est plus corrélée au marché et moins bonne dans les marchés à la hausse et à la baisse.

La réponse:

  1. Il est nécessaire de mettre en place des arrêts de perte raisonnables pour maîtriser les pertes individuelles.

  2. Optimisation progressive des paramètres pour évaluer le taux de rétractation des bénéfices;

  3. Adaptation combinée à une stratégie de renforcement de l’indice boursier.

Direction d’optimisation

Cette stratégie peut être optimisée dans les domaines suivants:

  1. Test de différentes combinaisons de moyennes mobiles pour trouver le paramètre optimal.

  2. L’objectif est d’identifier les tendances et de les combiner avec d’autres indicateurs afin d’améliorer les chances de réussite de la stratégie.

  3. L’augmentation des mécanismes de freinage des pertes et la réduction des retraits maximaux des stratégies;

  4. L’optimisation des règles d’achat et de vente et l’amélioration des facteurs de profit;

  5. L’apprentissage automatique est utilisé pour créer des paramètres adaptatifs.

Résumer

Il utilise les variations de prix par rapport aux moyennes mobiles pour générer des signaux de négociation, tout en filtrant le bruit avec l’indicateur RSI. Il est simple à utiliser, facile à mettre en œuvre et peut être ajusté en fonction des paramètres du marché.

Code source de la stratégie
/*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")