Stratégie de trading quantitative combinant EMA et super tendance

EMA
Date de création: 2024-06-17 16:52:17 Dernière modification: 2024-06-17 16:52:17
Copier: 1 Nombre de clics: 773
1
Suivre
1617
Abonnés

Stratégie de trading quantitative combinant EMA et super tendance

Aperçu

La stratégie combine les moyennes mobiles indicielles (EMA) et les indicateurs de tendance supérieure (Supertrend) pour générer des signaux d’achat et de vente. Un signal d’achat est généré lorsque le prix franchit l’EMA du 20e jour et que l’indicateur de tendance supérieure est en tendance haussière; un signal de vente est généré lorsque le prix franchit l’EMA du 20e jour et que l’indicateur de tendance supérieure est en tendance baissière.

Principe de stratégie

  1. Calculer l’EMA du 20e jour comme condition de filtrage de la tendance.
  2. Calculer l’indicateur de super-tendance, qui est basé sur la moyenne de la portée réelle (ATR) et la tendance à la pluralité des airs pour tracer les hauts et les bas.
  3. Les signaux d’achat et de vente sont générés en fonction de la direction de la tendance de l’indicateur de tendance supérieure et de la position relative du prix par rapport à l’EMA du 20e jour:
    • Un signal d’achat est généré lorsque le prix franchit l’EMA du 20e jour par le haut et que l’indicateur de tendance supérieure est en tendance haussière.
    • Un signal de vente est généré lorsque le prix est descendu au-dessous de l’EMA du 20e jour et que l’indicateur de tendance supérieure est en baisse.
  4. La stratégie consiste à ouvrir une position plus élevée en fonction d’un signal d’achat et à la fermer en fonction d’un signal de vente.

Avantages stratégiques

  1. La combinaison d’EMA et d’indicateurs de tendances supérieures permet de capturer efficacement les tendances et de réduire les faux signaux.
  2. L’indicateur est basé sur l’ATR et permet de régler dynamiquement la distance entre le haut et le bas de la trajectoire afin de s’adapter aux différentes fluctuations du marché.
  3. L’EMA sert de filtre pour les jugements de tendance, assurant la prise de position dans le sens de la tendance et améliorant la probabilité de réussite de la stratégie.
  4. La logique de la stratégie est simple et claire, facile à comprendre et à mettre en œuvre.

Risque stratégique

  1. Cette stratégie peut générer des signaux d’achat et de vente fréquents dans un marché en crise, entraînant un nombre excessif de transactions et une perte de frais de traitement.
  2. La stratégie s’appuie sur les EMA et les indicateurs de tendance supérieure, qui peuvent être invalidés ou retardés dans certaines conditions de marché.
  3. La stratégie ne prend pas en compte la gestion des risques, tels que les arrêts de perte et la gestion des positions, ce qui peut entraîner des retraits plus importants en cas de forte volatilité du marché.

Orientation de l’optimisation de la stratégie

  1. Adhésion à un mécanisme de stop loss, comme un stop loss dynamique selon les réglages ATR, pour contrôler la perte maximale d’une transaction.
  2. Optimiser les paramètres des EMA et des indicateurs de tendance supérieure, par exemple en utilisant des méthodes d’optimisation des paramètres pour trouver la meilleure combinaison de paramètres et améliorer l’adaptabilité et la stabilité de la stratégie.
  3. Introduction de la gestion des positions, avec un ajustement dynamique de la taille des positions en fonction de la volatilité du marché ou de la perte de compte, afin de contrôler le risque global.
  4. Envisagez d’ajouter d’autres conditions de filtrage, telles que le volume des transactions, la volatilité, etc., afin de réduire encore plus les faux signaux.

Résumer

La stratégie est conçue pour capturer les tendances en combinant une EMA de 20 jours et un indicateur de tendance supérieure. L’avantage de la stratégie réside dans la simplicité de la logique. La combinaison d’une EMA et d’un indicateur de tendance supérieure réduit efficacement les faux signaux.

Code source de la stratégie
/*backtest
start: 2023-06-11 00:00:00
end: 2024-06-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("20 EMA and Supertrend Strategy", overlay=true)

// Inputs
emaLength = input(20, title="EMA Length")
supertrendMultiplier = input.float(3.0, title="Supertrend Multiplier")
supertrendPeriod = input(10, title="Supertrend Period")

// EMA Calculation
ema = ta.ema(close, emaLength)

// Supertrend Calculation
Periods = supertrendPeriod
src = hl2
Multiplier = supertrendMultiplier
changeATR= input.bool(true, title="Change ATR Calculation Method?")
showsignals = input.bool(true, title="Show Buy/Sell Signals?")
highlighting = input.bool(true, title="Highlighter On/Off?")
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - (Multiplier * atr)
up1 = na(up[1]) ? up : up[1]
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + (Multiplier * atr)
dn1 = na(dn[1]) ? dn : dn[1]
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := na(trend[1]) ? trend : trend[1]
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(series=buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(series=buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.white)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(series=sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(series=sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.white)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=1)
longFillColor = highlighting ? (trend == 1 ? color.new(color.green, 90) : color.new(color.white, 0)) : color.new(color.white, 0)
shortFillColor = highlighting ? (trend == -1 ? color.new(color.red, 90) : color.new(color.white, 0)) : color.new(color.white, 0)
fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)
alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!")
alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!")
changeCond = trend != trend[1]
alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")

// Buy and Sell Signals based on EMA and Supertrend
buySignalEMA = ta.crossover(close, ema) and trend == 1
sellSignalEMA = ta.crossunder(close, ema) and trend == -1

// Plot EMA
plot(ema, color=color.blue, title="20 EMA")

// Plot Buy and Sell Signals
plotshape(series=buySignalEMA, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY")
plotshape(series=sellSignalEMA, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")

// Strategy Entries and Exits
if (buySignalEMA)
    strategy.entry("Buy", strategy.long)

if (sellSignalEMA)
    strategy.close("Buy")