Tendance à la suite d'une stratégie basée sur un stop-loss dynamique de double croisement EMA

Auteur:ChaoZhang est là., Date: 2024-01-29 09:57:20 Le projet de loi est en cours d'adoption.
Les étiquettes:

img

Résumé

Cette stratégie utilise la croix dorée et la croix morte des lignes EMA pour suivre la tendance bidirectionnelle et établit des lignes de stop loss dynamiques pour les positions longues et courtes afin de capturer les mouvements de tendance sur le marché.

La logique de la stratégie

  1. L'indicateur EMA est utilisé pour calculer la ligne EMA rapide (5 jours) et lente (20 jours).
  2. Aller long lorsque la ligne rapide traverse la ligne lente d'en bas; aller court lorsque la ligne rapide traverse la ligne lente d'en haut
  3. Après entrée longue, définir un stop-loss dynamique au prix d'entrée * (1 - pourcentage de stop-loss long); après entrée courte, définir un stop-loss dynamique au prix d'entrée * (1 + pourcentage de stop-loss court)
  4. Position de sortie avec stop loss une fois que le prix atteint le niveau de stop loss

Analyse des avantages

  1. Les lignes EMA ont des capacités plus fortes pour suivre les tendances.
  2. Le stop loss dynamique se déplace avec le profit, maximisant le profit de capture de tendance
  3. Filtre supplémentaire avec vwap évite d'être pris au piège dans les fouets et améliore la qualité du signal

Analyse des risques

  1. En tant que pure tendance à la suite d'une stratégie, il est vulnérable à la variation des marchés avec des
  2. L'excès d'arrêt-perte peut entraîner une augmentation des pertes
  3. La nature retardée des signaux croisés EMA peut manquer les meilleurs points d'entrée

Des améliorations telles que la gestion des risques basée sur l'ATR, l'optimisation des règles de stop loss, l'ajout d'indicateurs de filtre, etc. peuvent aider à améliorer la stratégie.

Directions de renforcement

  1. Incorporer des indicateurs dynamiques d'arrêt de perte comme ATR ou DONCH pour définir de meilleurs arrêts adaptatifs
  2. Ajoutez plus d'indicateurs de filtrage comme MACD, KDJ pour éviter les mauvaises transactions
  3. Optimiser les paramètres pour trouver la meilleure combinaison de longueurs EMA
  4. Utiliser des méthodes d'apprentissage automatique pour découvrir les paramètres optimaux

Conclusion

En conclusion, il s'agit d'une stratégie de suivi de tendance très typique. Le double croisement EMA avec stop loss dynamique peut effectivement verrouiller les bénéfices de la tendance. Pendant ce temps, des risques tels que des signaux de retard et des arrêts généraux existent toujours. Grâce à l'ajustement des paramètres, à la gestion des risques, aux ajouts de filtres, etc., un raffinement supplémentaire peut conduire à de meilleurs résultats.


/*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)

Plus de