Tendance suivant une stratégie basée sur la moyenne mobile

Auteur:ChaoZhang est là.
Les étiquettes:

img

Résumé

La logique de la stratégie

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. Une logique simple et claire, facile à comprendre et à mettre en œuvre, adaptée aux débutants.

Analyse des risques

Il existe également certains risques:

Directions d'optimisation

Quelques conseils pour optimiser:

  1. Ajoutez des stratégies de stop loss pour limiter la baisse des transactions uniques.
  2. Incorporer des indicateurs de la force de la tendance pour éviter les revers de tendance.
  3. Introduire une optimisation des paramètres pour une plus grande adaptabilité.

Conclusion

Cette stratégie construit un système de négociation basé sur des doubles croisements EMA, en utilisant des relations EMA rapides et lentes pour déterminer la tendance du marché. La génération de signaux est simple et claire. Elle filtre un peu de bruit et va de pair avec les tendances, adaptée au trading de tendance à moyen et long terme. Il y a place à l'amélioration de l'universalité et de l'efficacité via l'optimisation multi-indicateurs et le contrôle des risques.


/*backtest
start: 2023-01-21 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("EMA Strategy v2", shorttitle = "EMA Strategy v2", overlay=true, pyramiding = 3,default_qty_type = strategy.percent_of_equity, default_qty_value = 10)


// === Inputs ===
// short ma
maFastSource   = input(defval = close, title = "Fast MA Source")
maFastLength   = input(defval = 30, title = "Fast MA Period", minval = 1)

// long ma
maSlowSource   = input(defval = close, title = "Slow MA Source")
maSlowLength   = input(defval = 100, title = "Slow MA Period", minval = 1)

// invert trade direction
tradeInvert = input(defval = false, title = "Invert Trade Direction?")
// risk management
useStop     = input(defval = true, title = "Use Initial Stop Loss?")
slPoints    = input(defval = 0, title = "Initial Stop Loss Points", minval = 1)
useTS       = input(defval = true, title = "Use Trailing Stop?")
tslPoints   = input(defval = 0, title = "Trail Points", minval = 1)
useTSO      = input(defval = false, title = "Use Offset For Trailing Stop?")
tslOffset   = input(defval = 0, title = "Trail Offset Points", minval = 1)

// === Vars and Series ===
fastMA = ema(maFastSource, maFastLength)
slowMA = ema(maSlowSource, maSlowLength)

plot(fastMA, color=blue)
plot(slowMA, color=purple)

goLong() => crossover(fastMA, slowMA)
killLong() => crossunder(fastMA, slowMA)
strategy.entry("Buy", strategy.long, when = goLong())
strategy.close("Buy", when = killLong())

// Shorting if using
goShort() => crossunder (fastMA, slowMA)
killShort() => crossover(fastMA, slowMA)
//strategy.entry("Sell", strategy.short, when = goShort())
//strategy.close("Sell", when = killShort())

if (useStop)
    strategy.exit("XLS", from_entry ="Buy", stop = strategy.position_avg_price / 1.08 )
    strategy.exit("XSS", from_entry ="Sell", stop = strategy.position_avg_price * 1.58)

Plus de