Stratégie d'arrêt dynamique de la moyenne mobile à deux traînées

Auteur:ChaoZhang est là., Date: le 26 février 2024 à 11h13
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie dynamique d'arrêt de trail basée sur des lignes EMA doubles. Elle utilise des EMA de 9 jours et 20 jours pour déterminer la direction de la tendance du marché, combinée à l'indicateur RSI pour filtrer les fausses ruptures. Elle utilise également l'indicateur ATR pour calculer les niveaux de stop loss et de profit dynamiques. Cette stratégie convient aux avoirs à moyen et long terme.

La logique de la stratégie

La stratégie utilise l'EMA de 9 jours comme ligne à court terme et l'EMA de 20 jours comme ligne à moyen terme pour déterminer la tendance des prix. Elle est longue lorsque le prix dépasse la ligne à court terme et que le prix de clôture est supérieur au sommet du jour précédent, avec un RSI inférieur à 70 et une clôture supérieure à l'EMA de 20 jours moins 1 ATR. Elle est courte lorsque le prix dépasse la ligne à court terme et que le prix de clôture est inférieur au sommet du jour précédent, avec un RSI supérieur à 30 et une clôture supérieure à l'EMA de 20 jours moins 1 ATR.

Le stop loss est défini au prix de clôture moins 1,5 fois ATR. Le profit est défini au prix de clôture plus ATR multiplié par un coefficient de profit. Il utilise également 2 fois ATR pour définir le stop loss suivant la tendance.

Analyse des avantages

  1. Utiliser des EMA doubles pour déterminer les principales tendances du marché, éviter d'être soumis à la pression du bruit
  2. La combinaison de l'indicateur RSI pour filtrer les fausses pauses, améliore la précision d'entrée
  3. L'opération de stop loss et de prise de bénéfices dynamiques s'adapte à la volatilité du marché
  4. Le suivi de la tendance à la perte maximisera les bénéfices

Analyse des risques

  1. Les lignes EMA ont un effet de retard, peuvent manquer des opportunités à court terme
  2. Un paramètre RSI mal réglé peut manquer des entrées
  3. Le ratio stop loss/take profit peut être trop faible ou trop strict.
  4. Le stop loss peut être pénétré lors de fortes fluctuations du marché

Directions d'optimisation

  1. Testez différentes combinaisons d'EMA pour trouver les paramètres optimaux
  2. Optimiser les paramètres RSI pour équilibrer la précision d'entrée et les opportunités de capture
  3. Testez différents ratios stop loss/take profit pour trouver une configuration optimale
  4. Ajouter plus de conditions de filtre pour réduire la probabilité de pénétration de la perte d'arrêt

Résumé

Dans l'ensemble, il s'agit d'une stratégie de détention à moyen et long terme relativement stable. Elle utilise des EMA doubles pour déterminer la tendance majeure du marché, en évitant d'être affectée par le bruit à court terme. L'ajout du RSI filtre également les fausses pauses dans une certaine mesure. En outre, le mécanisme dynamique de stop loss / take profit permet à la stratégie de s'ajuster en fonction de la volatilité du marché. Cependant, il existe encore des risques tels que le retard des moyennes mobiles et le potentiel de pénétration du stop loss. Nous devons trouver la configuration optimale grâce à l'ajustement et à l'optimisation des paramètres lors de l'application pratique.


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

//@version=4
strategy("CJTrade", overlay=true)

short = ema(close, 9)
medium = ema(close, 20)
long = ema(close, 50)
very_long = ema(close, 200)

plot(short, color=color.gray, linewidth=1)
plot(medium, color=color.red, linewidth=1)
plot(long, color=color.black, linewidth=1)
plot(very_long, color=color.blue, linewidth=1)

rsiValue = rsi(close, 14)

near20EMA = close > medium - atr(14)

longCond = crossover(close[1], short) and close >= high[1] and rsiValue < 70 and near20EMA
shortCond = crossunder(close[1], short) and close <= low[1] and rsiValue > 30 and near20EMA

strategy.entry("Long", strategy.long, when=longCond)
strategy.entry("Short", strategy.short, when=shortCond)

atrValue = atr(14)
stopLossLevel = close - atrValue * 1.5

// Dynamic take profit level based on ATR
takeProfitMultiplier = input(2, title="Take Profit Multiplier", minval=0.1, maxval=10, step=0.1)
takeProfitLevel = close + atrValue * takeProfitMultiplier

// Trailing stop loss for long positions
longTrailingStop = close - atrValue * 2
strategy.exit("LongTrailingStop", from_entry="Long", loss=longTrailingStop)

// Trailing stop loss for short positions
shortTrailingStop = close + atrValue * 2
strategy.exit("ShortTrailingStop", from_entry="Short", loss=shortTrailingStop)

strategy.exit("Take Profit/Stop Loss", from_entry="Long", loss=stopLossLevel, profit=takeProfitLevel)
strategy.exit("Take Profit/Stop Loss", from_entry="Short", loss=stopLossLevel, profit=takeProfitLevel)


Plus de