Stratégie de suivi des tendances inter-marchés basée sur le stop loss dynamique bidirectionnel de la moyenne mobile EMA


Date de création: 2024-01-29 09:57:20 Dernière modification: 2024-01-29 09:57:20
Copier: 0 Nombre de clics: 587
1
Suivre
1617
Abonnés

Stratégie de suivi des tendances inter-marchés basée sur le stop loss dynamique bidirectionnel de la moyenne mobile EMA

Aperçu

Cette stratégie est basée sur le suivi bidirectionnel de l’EMA avec une ligne de stop-loss dynamique et une ligne de stop-loss longue et courte pour capturer les tendances.

Principe de stratégie

  1. Calculer les lignes EMA rapides ((5) et les lignes EMA lentes ((20)
  2. Faire plus lorsque la ligne rapide traverse la ligne lente par le bas; faire moins lorsque la ligne rapide traverse la ligne lente par le haut
  3. Le prix d’entrée est le prix d’entrée de la transaction.(1- pourcentage de stop-loss pour les positions longues); après la clôture du marché, définissez une ligne de stop-loss dynamique comme prix d’entrée(1 + le pourcentage de la position à court terme)
  4. Une fois que le prix a déclenché la ligne de stop correspondante, le stop est lancé.

Analyse des avantages

  1. Les moyennes EMA ont une forte capacité à suivre les tendances, avec des croisements bidirectionnels formant un chronomètre permettant de localiser efficacement les opportunités de tendance
  2. Calculer dynamiquement les lignes de stop-loss, suivre la mise sur le marché après réalisation des bénéfices, afin de maximiser les bénéfices de la tendance
  3. L’utilisation du VWP comme condition de filtrage additionnelle pour éviter l’encombrement et améliorer la qualité du signal

Analyse des risques

  1. La stratégie de la tendance pure, facile à piéger en cas de bouleversement
  2. Le blocage des pertes est trop souple et risque d’amplifier les pertes.
  3. Le retard de la génération de signaux de l’EMA moyenne peut manquer les meilleurs points du marché

L’ATR peut être optimisé par des méthodes telles que la gestion des risques, l’optimisation des stratégies de stop-loss à court terme ou la combinaison d’autres indicateurs pour filtrer le bruit des transactions.

Direction d’optimisation

  1. Combinez des indicateurs de stop-loss dynamiques tels que ATR ou DONCH pour définir une ligne de stop-loss plus adaptée au marché
  2. Ajout d’autres indicateurs techniques pour filtrer les signaux, tels que MACD, KDJ, etc., afin de réduire les erreurs d’entrée et de sortie
  3. Optimiser les paramètres pour trouver la meilleure combinaison de longueurs de ligne moyenne lente et rapide
  4. On peut essayer d’apprendre à la machine pour trouver les paramètres optimaux.

Résumer

Cette stratégie est une stratégie de suivi de tendance très typique dans son ensemble. Les doubles EMA forment des fourches dorées, les arrêts dynamiques permettent de bloquer efficacement la tendance à la rentabilité. Il existe également un certain risque de retard et un risque d’arrêt trop large.

Code source de la stratégie
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5

strategy("EMA Crossover Strategy", shorttitle="EMAC", overlay=true,calc_on_every_tick=true)

// Input parameters
shortEmaLength = input(5, title="Short EMA Length")
longEmaLength = input(20, title="Long EMA Length")
priceEmaLength = input(1, title="Price EMA Length")

// Set stop loss level with input options (optional)
longLossPerc = input.float(0.05, title="Long Stop Loss (%)",
     minval=0.0, step=0.1) * 0.01

shortLossPerc = input.float(0.05, title="Short Stop Loss (%)",
     minval=0.0, step=0.1) * 0.01

// Calculating indicators
shortEma = ta.ema(close, shortEmaLength)
longEma = ta.ema(close, longEmaLength)
//priceEma = ta.ema(close, priceEmaLength)
vwap = ta.vwap(close)

// Long entry conditions
longCondition = ta.crossover(shortEma, longEma) and close > vwap
// Short entry conditions
shortCondition = ta.crossunder(shortEma, longEma) and close > vwap

// STEP 2:
// Determine stop loss price
longStopPrice  = strategy.position_avg_price * (1 - longLossPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)


if (longCondition)
    strategy.entry("Enter Long", strategy.long)
    strategy.exit("Exit Long",from_entry = "Enter Long",stop= longStopPrice)
plotshape(series=longCondition, title="Long Signal", color=color.green, style=shape.triangleup, location=location.belowbar)


if (shortCondition)
    strategy.entry("Enter Short", strategy.short)
    strategy.exit("Exit Short", from_entry = "Enter Short",stop = shortStopPrice)
plotshape(series=shortCondition, title="Short Signal", color=color.red, style=shape.triangledown, location=location.abovebar)

// Stop loss levels
//longStopLoss = (1 - stopLossPercent) * close
//shortStopLoss = (1 + stopLossPercent) * close

// Exit conditions
//strategy.exit("Long", from_entry="Long", loss=longStopLoss)
//strategy.exit("Short", from_entry="Short", loss=shortStopLoss)

// Plotting indicators on the chart
plot(shortEma, color=color.yellow, title="Short EMA")
plot(longEma, color=color.green, title="Long EMA")
plot(close, color=color.black, title="Close")
plot(vwap, color=color.purple, title="VWAP")

// Plot stop loss values for confirmation
plot(strategy.position_size > 0 ? longStopPrice : na,
     color=color.red, style=plot.style_line,
     linewidth=2, title="Long Stop Loss")

plot(strategy.position_size < 0 ? shortStopPrice : na,
     color=color.blue, style=plot.style_line,
     linewidth=2, title="Short Stop Loss")
// Plotting stop loss lines
//plot(longStopLoss, color=color.red, title="Long Stop Loss", linewidth=2, style=plot.style_line)
//plot(shortStopLoss, color=color.aqua, title="Short Stop Loss", linewidth=2, style=plot.style_line)