Tradition de tendance avec double EMA crossover

Auteur:ChaoZhang est là., Date: le 26 octobre 2023 à 17h15h46
Les étiquettes:

img

Résumé

Le double EMA Crossover est un système de trading basé sur deux moyennes mobiles exponentielles (EMA). Il utilise deux EMA avec des périodes différentes pour déterminer la direction de la tendance actuelle et générer des signaux de trading en conséquence.

Comment fonctionne- t- il?

Le noyau de ce système repose sur deux EMA, une EMA plus rapide et une EMA plus lente. Lorsque l'EMA rapide est au-dessus de l'EMA lente, il est considéré comme haussier. Lorsque l'EMA rapide est en dessous de l'EMA lente, il est considéré comme baissier.

En fonction de la relation entre les prix et les deux EMA, les barres peuvent être classées en différentes zones de négociation:

  • Lorsque l'EMA rapide est au-dessus de l'EMA lente et que le prix est au-dessus de l'EMA rapide (G1), il s'agit d'une zone d'achat forte, une position longue peut être prise ici.

  • Lorsque l'EMA rapide est inférieure à l'EMA lente et que le prix est inférieur à l'EMA rapide (R1), il s'agit d'une zone de vente forte, une position courte peut être prise ici.

  • Lorsque les deux EMA se croisent, les zones d'avertissement (jaune) et de transition (orange) sont déterminées en fonction de la relation des prix avec les deux EMA.

Les signaux de trading sont générés lorsque le prix se déplace à travers différentes zones. Dans les zones fortes G1 et R1, les signaux peuvent être pris directement. Dans les zones d'avertissement et de transition, une confirmation supplémentaire de l'indicateur est requise.

Les lectures de survente et de surachat du StochRSI peuvent fournir des signaux d'achat et de vente supplémentaires.

Les avantages

  • Une logique simple et claire, facile à comprendre et à mettre en œuvre

  • Capture efficacement les tendances à moyen et long terme

  • Distingue les zones fortes des zones d'alerte/de transition, produisant des signaux commerciaux fiables

  • L'inclusion de StochRSI améliore encore le calendrier d'entrée et de sortie

Les risques

  • En tant que système purement de suivi de tendance, les performances peuvent être affectées sur les marchés qui ne sont pas en tendance

  • Des paramètres de période EMA inappropriés peuvent provoquer de faux signaux

  • Les zones d'alerte et de transition comportent des risques commerciaux plus élevés et doivent être traitées avec prudence

  • L'absence de stop loss peut entraîner des pertes accentuées

Les risques peuvent être réduits par:

  1. Sélection d'instruments présentant une forte tendance et interruption de la négociation lorsque la tendance est faible

  2. Optimisation des périodes EMA pour minimiser les faux signaux

  3. Introduction d'indicateurs supplémentaires de confirmation dans les zones d'alerte ou de transition

  4. Mise en œuvre d'un stop loss pour contrôler les pertes par transaction

Des possibilités d'amélioration

Le système peut être encore amélioré dans les domaines suivants:

  1. Incorporer plus d'indicateurs comme MACD, KDJ pour la confirmation du signal

  2. Ajouter des filtres tels que l'expansion du volume dans les zones de négociation pour améliorer le taux de réussite des échanges

  3. Ajustez dynamiquement les périodes EMA en fonction des conditions du marché pour des paramètres optimisés

  4. Mettre en œuvre des stratégies de stop loss pour sortir des transactions à certains pourcentages de perte

  5. Optimiser la taille des positions et la gestion des fonds

  6. Testez et ajustez les paramètres de différents instruments pour trouver les meilleures configurations

En introduisant plus de confirmation de signal, d'optimisation des paramètres dynamiques, d'arrêt de perte et d'une bonne gestion de l'argent, la robustesse du système peut être améliorée et les risques réduits pour de meilleurs résultats.

Conclusion

Le double EMA Crossover est un système de suivi des tendances basé sur la comparaison de deux EMA. Il identifie différentes zones de trading basées sur la relation des prix avec les EMA pour déterminer la direction de la tendance et générer des signaux de trading.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Vvaz_
//base-on CDC ActionZone By Piriya   a simple 2EMA and is most suitable for use with medium volatility market
//@version=4
strategy(title="Vin's Playzone" ,shorttitle="VPz", overlay=true, margin_long=4, margin_short=2)

//variable
srcf = input(title="Source",type=input.source,defval=close)
tffix = input(title="Fixed Timeframe",type=input.bool,defval=true)
tfn = input(title="Timeframe in",type=input.resolution,defval="D")
ema1 = input(title="Fast EMA",type=input.integer,defval=12)
ema2 = input(title="Slow EMA",type=input.integer,defval=26)
ema3 = input(title="EMA 100",type=input.bool,defval=true)
smooter =input(title="Smoothing period (1 = no smoothing)",type=input.integer,defval=2)
fillbar =input(title="Fill Bar Color",type=input.bool,defval=true)
emasw = input(title="Show EMA",type=input.bool,defval=true)
bssw = input(title="Show Buy-Sell signal",type=input.bool,defval=true)
plotmm = input(title="Show Buy-Sell Momentum",type=input.bool,defval=true)
plotmmsm = input(title="RSI Smoothing",type=input.integer,defval=0,minval=0,maxval=2)

//math
xcross =ema(srcf,smooter)
efast = tffix ?  ema(security(syminfo.tickerid,tfn,ema(srcf,ema1), gaps = barmerge.gaps_off,lookahead = barmerge.lookahead_on),smooter) :ema(xcross,ema1)
eslow = tffix ?  ema(security(syminfo.tickerid,tfn,ema(srcf,ema2), gaps = barmerge.gaps_off,lookahead = barmerge.lookahead_on),smooter) :ema(xcross,ema2)
ema3x = ema(xcross,100)


//Zone
Bull = efast > eslow
Bear = efast < eslow

G1 = Bull and xcross > efast //buy
G2 = Bear and xcross > efast and xcross > eslow //pre-buy1
G3 = Bear and xcross > efast and xcross < eslow //pre-buy2

R1 = Bear and xcross < efast //sell
R2 = Bull and xcross < efast and xcross < eslow //pre-sell1
R3 = Bull and xcross < efast and xcross > eslow //pre-sell2

//color
bcl =   G1 ? color.green :  G2 ? color.yellow : G3 ? color.orange :R1 ? color.red :R2 ? color.orange : R3 ? color.yellow : color.black
barcolor(color=fillbar ? bcl : na )

//plots
line1 = plot(ema3 ? ema3x : na ,"EMA100",color=color.white)
line2 = plot(emasw ? efast : na ,"Fast EMA",color=color.green)
line3 = plot(emasw ? eslow : na ,"Slow EMA",color=color.red)
fillcl = Bull ? color.green : Bear ? color.red : color.black
fill(line2,line3,fillcl)

//actions
buywhen = G1 and G1[1]==0
sellwhen = R1 and R1[1]==0

bullish = barssince(buywhen) < barssince(sellwhen)
bearish = barssince(sellwhen) < barssince(buywhen)

buy = bearish[1] and buywhen
sell = bullish[1] and sellwhen

bullbearcl = bullish ? color.green : bearish ? color.red : color.black

//plot trend
plotshape(bssw ? buy : na ,style=shape.arrowup,title="BUY",location=location.belowbar,color=color.green)
plotshape( bssw ? sell : na ,style=shape.arrowdown ,title="Sell",location=location.abovebar,color=color.red)

// Momentum Signal using StochRSI

smoothK = input(5,"StochRSI smooth K",type=input.integer,minval=1)
smoothD = input(4,"StochRSI smooth D",type=input.integer,minval=1)
RSIlen = input(14,"RSI length",type=input.integer,minval=1)
STOlen = input(14,"Stochastic length",type=input.integer,minval=1)
SRsrc = input(close,"Source for StochasticRSI",type=input.source)
OSlel = input(20,"Oversold Threshold",type=input.float,minval=0.00)
OBlel = input(80,"Oversold Threshold",type=input.float,minval=0.00)
rsil = rsi(SRsrc,RSIlen)
K = sma(stoch(rsil,rsil,rsil,STOlen),smoothK)
D = sma(K,smoothD)

buymore = iff( bullish ,iff(D < OSlel and crossover(K,D),	2,	 iff(D > OSlel and crossover(K,D),	 1,0)),0)
sellmore = iff( bearish,iff(D > OBlel and crossunder(K,D),	2,	 iff(D < OBlel and crossunder(K,D),	 1,0)),0)
//plot momentum
plotshape(plotmm ? buymore > plotmmsm ? buymore : na : na ,"Buy More!" ,style=shape.triangleup,location=location.belowbar,color=color.green)
plotshape(plotmm ? sellmore > plotmmsm ? sellmore : na : na ,"Sell More!" ,style=shape.triangledown,location=location.abovebar,color=color.red)


// === INPUT BACKTEST RANGE ===
FromYear  = input(defval = 2009, title = "From Year", minval = 2009)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2009)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 31, title = "To Day", minval = 1, maxval = 31)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

//stratgy excuter
strategy.entry("Long",true,when=window() and buy or buymore)
strategy.close("Long",when=window() and sell or sellmore,comment="TP Long")
strategy.entry("Short",false,when=window() and sell or sellmore)
strategy.close("Short",when=window() and buy or buymore,comment="TP Short")




        

Plus de