Les ressources ont été chargées... Je charge...

Stratégie avancée à double EMA avec système de filtre de volatilité ATR

Auteur:ChaoZhang est là., Date: 2024-11-29 16h14h30
Les étiquettes:Le taux d'intérêtATR- Je vous en prie.

img

Résumé

Il s'agit d'une stratégie de trading quantitative qui combine les croisements de la moyenne mobile exponentielle (EMA) avec un filtre de plage réelle moyenne (ATR). La stratégie vise à identifier les fortes tendances et à exécuter des transactions dans des conditions de marché à forte volatilité, améliorant ainsi efficacement le ratio Sharpe et la performance globale.

Principes de stratégie

La logique de base se compose de deux composants principaux: la détermination de la tendance et le filtrage de la volatilité. Pour la détermination de la tendance, la stratégie utilise une EMA de 50 périodes comme ligne rapide et une EMA de 200 périodes comme ligne lente, générant des signaux longs lorsque la ligne rapide traverse au-dessus de la ligne lente et des signaux courts lorsqu'elle traverse en dessous. Pour le filtrage de la volatilité, la stratégie calcule la valeur ATR de 14 périodes et la convertit en pourcentage du prix, n'autorisant des positions que lorsque le pourcentage ATR dépasse un seuil prédéfini (défaut 2%).

Les avantages de la stratégie

  1. Le mécanisme de filtrage de la volatilité améliore considérablement la stabilité de la stratégie en ne faisant la négociation que dans des environnements à forte volatilité
  2. L'utilisation de calculs ATR basés sur le pourcentage rend le filtre de volatilité adaptable aux instruments à différents niveaux de prix
  3. La combinaison de moyennes mobiles à moyen et à long terme permet de capturer efficacement les principales tendances tout en réduisant le bruit à court terme
  4. Logique stratégique simple et claire avec relativement peu de paramètres, réduisant le risque de surajustement
  5. Contrôle efficace des risques par une gestion appropriée des positions (10% de la taille des positions)

Risques stratégiques

  1. Les indicateurs de l'EMA présentent un décalage inhérent, ce qui peut entraîner un retard dans les délais d'entrée et de sortie sur les marchés volatils
  2. Les fausses éruptions peuvent encore se produire sur les marchés variés, même avec le filtrage ATR
  3. Les seuils ATR fixes peuvent ne pas convenir à toutes les conditions du marché
  4. La cyclicité du marché n'est pas prise en compte, les paramètres peuvent devoir être ajustés à différentes phases du marché Il est recommandé d'utiliser des stop-loss dynamiques et une construction progressive des positions pour gérer ces risques.

Directions d'optimisation de la stratégie

  1. Mettre en place des seuils ATR dynamiques adaptés aux conditions du marché
  2. Ajouter des indicateurs de confirmation de la force de la tendance tels que DMI ou ADX
  3. Mettre en œuvre des mécanismes de constitution et de clôture de positions gradués pour réduire les risques d'entrée/sortie unique
  4. Ajouter des modules d'analyse saisonnière pour utiliser différents paramètres dans différents cycles de marché
  5. Développer des mécanismes adaptatifs de sélection des moyennes mobiles pour améliorer l'adaptabilité de la stratégie

Résumé

Cette stratégie combine des indicateurs techniques classiques avec des concepts de gestion des risques modernes. En utilisant des croisements EMA pour capturer les tendances tout en utilisant un filtre ATR pour contrôler le timing des transactions, la stratégie maintient sa simplicité tout en atteignant une grande praticité.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Crossover with ATR Filter", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Inputs for Moving Averages
fastLength = input.int(50, title="Fast EMA Length")
slowLength = input.int(200, title="Slow EMA Length")

// Inputs for ATR Filter
atrLength = input.int(14, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier")
atrThreshold = input.float(0.02, title="ATR Threshold (%)")

// Calculate EMAs
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)

// Calculate ATR
atr = ta.atr(atrLength)

// Convert ATR to a percentage of price
atrPct = atr / close

// Define Long Condition (Cross and ATR filter)
longCondition = ta.crossover(fastEMA, slowEMA) and atrPct > atrThreshold / 100

// Define Short Condition
shortCondition = ta.crossunder(fastEMA, slowEMA) and atrPct > atrThreshold / 100

// Define Exit Conditions
exitConditionLong = ta.crossunder(fastEMA, slowEMA)
exitConditionShort = ta.crossover(fastEMA, slowEMA)

// Long Entry
if (longCondition)
    strategy.entry("Long", strategy.long)

// Short Entry
if (shortCondition)
    strategy.entry("Short", strategy.short)

// Long Exit
if (exitConditionLong)
    strategy.close("Long")

// Short Exit
if (exitConditionShort)
    strategy.close("Short")

// Plot EMAs for visual reference
plot(fastEMA, title="50 EMA", color=color.blue)
plot(slowEMA, title="200 EMA", color=color.red)

// Plot ATR for reference
plot(atrPct, title="ATR Percentage", color=color.orange, style=plot.style_line)
hline(atrThreshold / 100, "ATR Threshold", color=color.green)

Relationnée

Plus de