Suivre la stratégie de tendance basée sur l'indice de volatilité et l'EMA

Auteur:ChaoZhang est là., Date: 2024-01-25 12:19:32 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie combine les indicateurs techniques de l'indice de force relative (RSI) et de la moyenne mobile exponentielle (EMA) pour mettre en œuvre une stratégie de trading quantitative basée sur la tendance suivante.

La logique de la stratégie

Sélection des indicateurs

  • La stratégie utilise des EMA de 20 jours, 50 jours et 200 jours. Lorsque le prix est au-dessus de ces EMA, une tendance haussière est identifiée.
  • RSI pour identifier les niveaux de surachat/survente: un RSI standard de 14 périodes, avec un seuil de surachat à 70 et un seuil de survente à 30.

Règles d'entrée

Signal d'entrée à distance:

  • RSI inférieur à 30, indiquant des conditions de survente où le prix pourrait rebondir
  • Prix supérieur à l'EMA de 20 jours, 50 jours ou 200 jours, indiquant une tendance haussière du marché

Lorsque les deux critères sont remplis, une position longue est entrée.

Gestion des risques

La perte maximale pour chaque transaction est limitée à 3% de la valeur totale du compte.

La valeur de l'échange de titres est la valeur de l'échange de titres.

Cela permet de contrôler efficacement le risque par transaction.

Règles de sortie

Les principaux signaux de sortie:

  • Le RSI dépasse le niveau 70, le prix peut chuter en raison de conditions de surachat.
  • Chutes de prix en dessous de l'EMA à 20 jours, à 50 jours ou à 200 jours, renversement de tendance

Lorsque l'un ou l'autre signal se produit, la position est fermée.

Analyse des avantages

La stratégie combine les avantages du suivi de tendance et de la réversion moyenne. L'EMA détermine la tendance globale, puis les signaux d'entrée se produisent dans des zones de renversement potentiels, bénéficiant à la fois de la tendance et des renversements pour la stabilité. Les paramètres RSI peuvent également être optimisés pour différents marchés, ce qui rend la stratégie robuste.

La perte maximale fixe par transaction protège le capital en contrôlant directement le niveau de risque commercial.

Analyse des risques

La stratégie fonctionne bien dans les marchés à tendance évidente. Dans des environnements complexes et volatils, l'utilisation de l'EMA pour la tendance peut avoir des limites.

Le placement de stop loss est essentiel pour le PnL, nécessitant des tests minutieux pour différents marchés.

Directions d'optimisation

Tester différents paramètres RSI pour s'adapter à plus de marchés. Trouver des ratios de taille de transaction optimaux. Ajouter d'autres indicateurs techniques pour construire des systèmes d'entrée / sortie plus robustes. Ce sont toutes des options qui valent la peine d'être explorées.

Conclusion

La stratégie intègre les forces des stratégies de suivi de tendance et de réversion moyenne. L'entrée se fait sur un renversement potentiel tout en identifiant la tendance plus grande. L'optimisation RSI l'adapte à plus de régimes de marché. Le niveau de risque commercial fixe maintient l'opération stable à moyen et long terme. D'autres améliorations sont possibles grâce à des ajustements et des tests de robustesse en utilisant différents marchés et styles.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Stratégie RSI et EMA avec Gestion du Risque", overlay=true)

// Paramètres de la stratégie
rsiLength = input(14, "Longueur du RSI")
rsiOverbought = input(70, "Niveau de Surachat RSI")
rsiOversold = input(30, "Niveau de Survente RSI")

// Calcul du RSI
rsiValue = rsi(close, rsiLength)

// Paramètres des EMA
ema20 = ema(close, 20)
ema50 = ema(close, 50)
ema200 = ema(close, 200)

// Paramètre du risque par trade
riskPerTrade = input(0.03, "Risque par Trade (3%)")

// Distance du stop-loss en pips (à ajuster selon votre stratégie)
stopLossPips = input(1, "Distance du Stop-Loss en pips")

// Calcul de la taille de position et du stop-loss
calculatePositionSize(entryPrice, stopLossPips) =>
    stopLossPrice = entryPrice - stopLossPips * syminfo.mintick
    riskPerTradeValue = strategy.equity * riskPerTrade
    positionSize = riskPerTradeValue / (entryPrice - stopLossPrice)
    positionSize

// Conditions d'entrée
longCondition = (rsiValue < rsiOversold) and (close > ema20 or close > ema50 or close > ema200)
if longCondition
    strategy.entry("Long", strategy.long, qty=1)

// Conditions de sortie
exitCondition = (rsiValue > rsiOverbought) or (close < ema20 or close < ema50 or close < ema200)
if exitCondition
    strategy.close("Long")

// Affichage des EMA et RSI sur le graphique
plot(ema20, color=color.red)
plot(ema50, color=color.green)
plot(ema200, color=color.blue)
hline(rsiOverbought, "Niveau de Surachat RSI", color=color.red)
hline(rsiOversold, "Niveau de Survente RSI", color=color.blue)
plot(rsiValue, "RSI", color=color.purple)

Plus de