Stratégie à double croix d'or de l'EMA

Auteur:ChaoZhang est là., Date: 2024-01-22 11:04:41 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie génère des signaux de trading basés sur les croisements entre la ligne EMA rapide et la ligne EMA lente. Lorsque la ligne EMA rapide traverse au-dessus de la ligne EMA lente, un signal d'achat est généré. Lorsque la ligne EMA rapide traverse en dessous de la ligne EMA lente, un signal de vente est généré. Cette stratégie utilise l'avantage de la moyenne mobile pour suivre efficacement la tendance du marché et générer des signaux de trading lors de l'initiation de la tendance.

La logique de la stratégie

La ligne EMA à 10 jours répond plus rapidement aux changements de prix, tandis que la ligne EMA à 20 jours répond plus lentement. Lorsque la ligne EMA à court terme traverse au-dessus de la ligne EMA à long terme, cela signifie que la ligne moyenne à court terme commence à conduire la ligne à long terme vers le haut, ce qui implique que le marché peut passer à l'état haussier. À ce stade, un signal d'achat est généré. Au contraire, lorsque la EMA à court terme tombe en dessous de la EMA à long terme, cela signifie que la EMA à court terme commence à perdre sa puissance de leader avant la EMA à long terme, ce qui implique que le marché peut passer à l'état baissier.

En tirant parti de la logique de croisement entre les lignes EMA rapides et lentes, cette stratégie capture les points de basculement de la tendance du marché en temps opportun et génère des signaux de trading en conséquence.

Analyse des avantages

  • Capture des points de basculement du marché par le biais de règles croisées de l'EMA pour une forte rentabilité
  • Utilise à la fois des lignes EMA rapides et lentes pour leurs mérites respectifs
  • La capacité inhérente de filtrage du bruit de l'EMA réduit les transactions erronées
  • Facile à comprendre, à optimiser et à étendre
  • Une grande extensibilité pour intégrer d'autres indicateurs d'aide

Analyse des risques

  • Des signaux erronés fréquents peuvent se produire sur les marchés à fourchette
  • Un mauvais réglage des paramètres EMA peut entraîner des virages majeurs manquants
  • Une émission en retard peut entraîner une perte de possibilités de négociation à court terme
  • Incapable de s'adapter à des turbulences drastiques sur le marché

Pour faire face à ces risques, des optimisations peuvent être introduites comme l'ajout de règles de filtrage, la combinaison du MACD pour éviter de faux signaux, l'utilisation d'une EMA adaptative pour accélérer la réponse, etc. De plus, des mécanismes d'arrêt des pertes et de prise de profit appropriés sont nécessaires.

Directions d'optimisation

Les orientations possibles pour une optimisation ultérieure comprennent:

  • Ajout de règles de filtrage sur les signaux d'entrée, par exemple le volume de négociation combiné
  • Incorporation d'indicateurs d'aide tels que le MACD pour les signaux supplémentaires
  • Introduction d'une EMA adaptative pour régler les paramètres de façon dynamique
  • Appliquer l'analyse à plusieurs délais pour tirer parti des différentes EMA
  • Optimiser les stratégies de stop loss par le biais d'un stop de trail, d'un stop en pourcentage, etc.
  • Tirer parti des technologies d'IA pour l'ajustement automatique des paramètres

Résumé

Cette stratégie capture les points tournants critiques du marché grâce à la logique de croisement des lignes EMA doubles, ce qui la rend efficace pour le trading en direct. Avec des filtres supplémentaires, des indicateurs d'assistance et des optimisations de stop loss, la stabilité de la stratégie peut être encore améliorée.


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

//@version=4
strategy("Backtest single EMA cross", overlay=true)

qty = input(100000, "Buy quantity")

testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, testStartMin)
testStopYear = input(2099, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? 
   #00FF00 : na
testPeriod() => true


ema1 = input(10, title="Select EMA 1")
ema2 = input(20, title="Select EMA 2")

expo = ema(close, ema1)
ma = ema(close, ema2)

avg_1 = avg(expo, ma)
s2 = cross(expo, ma) ? avg_1 : na
//plot(s2, style=plot.style_line, linewidth=3, color=color.red, transp=0)

p1 = plot(expo, color=#00FFFF, linewidth=2, transp=0)
p2 = plot(ma, color=color.orange, linewidth=2, transp=0)
fill(p1, p2, color=color.white, transp=80)

longCondition = crossover(expo, ma)

shortCondition = crossunder(expo, ma)


if testPeriod()
    strategy.entry("Long", strategy.long, when=longCondition)
    strategy.entry("Short", strategy.short, when=shortCondition)

plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor =#FFFFFF , style=shape.labelup, size = size.normal, location=location.belowbar, color = #1B8112, transp = 0)
plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = #FFFFFF, style=shape.labeldown, size = size.normal, location=location.abovebar, color = #FF5733, transp = 0)



Plus de