Stratégie de trading de cassure de la double EMA


Date de création: 2023-10-16 16:24:00 Dernière modification: 2023-10-16 16:24:00
Copier: 1 Nombre de clics: 738
1
Suivre
1617
Abonnés

Stratégie de trading de cassure de la double EMA

Aperçu

La stratégie de rupture de deux EMA est une stratégie de suivi de la tendance qui utilise les moyennes EMA de deux périodes différentes pour juger des signaux d’achat et de vente. Cette stratégie est combinée à des indicateurs EMA supplémentaires pour filtrer les signaux de négociation, ce qui permet d’obtenir un meilleur moment d’entrée dans la tendance.

Le principe

La stratégie utilise les EMA de la ligne rapide (en 9 cycles) et les EMA de la ligne lente (en 21 cycles) pour déterminer le moment de l’achat et de la vente. Un signal d’achat est généré lorsque la ligne rapide traverse la ligne lente et un signal de vente lorsque la ligne rapide traverse la ligne lente. Pour filtrer les faux signaux, la stratégie introduit également l’EMA auxiliaire (en 5 cycles) et deux autres EMA (en 1 et 4 cycles).

Lorsque le signal de négociation est déclenché, la stratégie définit un stop loss et un stop loss en fonction de la valeur de l’ATR. TP1 est six fois plus élevé que l’ATR pour obtenir une partie des bénéfices d’une vitesse plus rapide. Si le prix n’a pas déclenché TP1, la position est immédiatement levée lorsque l’EMA de la ligne rapide recouvre l’EMA auxiliaire.

Les avantages

  • Le filtrage des faux signaux par la combinaison de deux EMA améliore la qualité des signaux de transaction
  • Les indicateurs d’EMA auxiliaires permettent de vérifier davantage la direction de la tendance et de réduire le risque de contre-opération.
  • Une conception à deux étages qui permet de profiter rapidement et durablement des tendances
  • Le stop-loss dynamique ATR peut être ajusté en fonction de la volatilité du marché pour réduire le risque

Risque et optimisation

  • Les EMA sont sujettes à des ajustements de courbe et les signaux de négociation peuvent être retardés
  • Les combinaisons EMA à courte période peuvent générer plus de signaux de négociation bruyants
  • Les opérations sur courte ligne sont sujettes à des incidents et présentent un risque plus élevé de dommages.

Les directions d’optimisation

  • Tester plusieurs combinaisons de paramètres EMA pour trouver le meilleur
  • Ajout de vérifications d’autres indicateurs, tels que le volume de transactions, la volatilité, etc.
  • Laisser une marge de freinage appropriée pour réduire la probabilité que le freinage soit déclenché
  • Optimisation du ratio de placement des doubles portes, équilibrant la vitesse de profit et l’efficacité de l’utilisation des fonds

Résumer

La stratégie de négociation de rupture de double EMA utilise le croisement de deux EMA pour juger de la tendance, avec un filtre EMA multiple et un arrêt de perte dynamique ATR, pour suivre efficacement la tendance. Cependant, il convient de prêter attention aux questions telles que la correspondance de la courbe EMA, le risque de perte.

Overview

The dual EMA crossover trading strategy utilizes two EMA lines of different periods to generate buy and sell signals by identifying trend direction. It also incorporates additional EMA indicators for signal filtering, allowing better entry timing in trending markets.

Principles

The strategy uses a fast EMA line (9 periods) and a slow EMA line (21 periods) to determine entries. A golden cross where the fast EMA crosses above the slow EMA generates a buy signal, while a death cross with the fast EMA crossing below the slow EMA produces a sell signal. To filter out false signals, the strategy also employs an auxiliary EMA (5 periods) and two more EMAs (1 period, 4 periods). A real trading signal is only triggered when the fast and slow EMAs cross while the auxiliary EMA is between the two, and the 1-period EMA is above the 4-period EMA.

Once a trading signal is triggered, the strategy utilizes ATR values to set stop loss and take profit levels. TP1 is set at 6 x ATR for faster profit taking. If price doesn’t hit TP1, the strategy will close the position directly when the fast EMA crosses back over the auxiliary EMA, realizing TP2.

Advantages

  • Dual EMA design filters false signals and improves signal quality
  • Auxiliary EMA adds trend direction verification, reducing reverse trade risks
  • Dual take profit allows fast profit and sustained trend following
  • Dynamic ATR stop loss/take profit adjusts to market volatility

Risks and Improvements

  • EMAs can lag prices and generate late signals
  • Shorter EMA combos may produce more noise
  • Tighter stops face larger sudden event risks

Improvement directions:

  • Test multiple EMA combos for better parameters
  • Add other confirmation indicators like volume, volatility etc.
  • Widen stop loss to lower stop out odds
  • Optimize take profit ratios for profit vs capital efficiency

Conclusion

The dual EMA crossover strategy leverages EMA crosses for trend direction, along with multiple EMA filtering and dynamic ATR stop loss/profit taking. This allows effective trend following and profit harvesting. However, EMA fitting limitations and stop loss risks require caution. Proper optimization, risk management etc. can lead to more robust performance. The strategy suits experienced traders to achieve high capital efficiency in trending markets.

[/trans]

Code source de la stratégie
/*backtest
start: 2022-10-09 00:00:00
end: 2023-04-13 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/
// @author ADHDCRYPT0

//@version=4
strategy(title = "EMA double crossover", shorttitle = "(TEST) double cross over", overlay = true, default_qty_value = 100, initial_capital = 1000,default_qty_type=strategy.percent_of_equity, pyramiding=0, process_orders_on_close=true)


// Variables
ema_len1 = input(9 , title="Fast EMA")
ema_len2 = input(21, title="Slow EMA")
ema_len3 = input(5, title="Exit EMA")
ema_len4 = input(1, title="FastConf EMA")
ema_len5 = input(4, title="SlowConf EMA")

fastEMA = ema(open, ema_len1)
slowEMA = ema(open, ema_len2)
exitEMA = ema(open, ema_len3)
conf1EMA = ema(open, ema_len4)
conf2EMA = ema(open, ema_len5)
plot(fastEMA, title='fastEMA', transp=0, color=color.green)
plot(slowEMA, title='slowEMA', transp=0, color=color.red  )
plot(exitEMA, title='exitEMA', transp=0, color=color.orange)
plot(conf1EMA, title='conf1EMA', transp=0, color=color.blue)
plot(conf2EMA, title='conf2EMA', transp=0, color=color.black)

vol = volume 
volma = sma(volume,7)
vol_cond = vol>volma

atr = atr(5)


// Entry Conditions and vol_cond
long = crossover(fastEMA, slowEMA) and (conf1EMA > conf2EMA) and (fastEMA < exitEMA)
short= crossunder(fastEMA, slowEMA) and (conf1EMA < conf2EMA) and (fastEMA > exitEMA)

tradeType = input("BOTH", title="What trades should be taken : ", options=["LONG", "SHORT", "BOTH", "NONE"])

pos = 0.0

if tradeType=="BOTH"
    pos:= long? 1 : short? -1 : pos[1]
if tradeType=="LONG"
    pos:= long? 1 : pos[1]
if tradeType=="SHORT"
    pos:=short? -1 : pos[1]

longCond  = long  and (pos[1]!= 1 or na(pos[1]))
shortCond = short and (pos[1]!=-1 or na(pos[1]))

// EXIT FUNCTIONS //
sl  = input(1, title="Stop Loss (ATR)", minval=0)
tp  = input(6, title="Take Profit 1 (ATR)", minval=0)

// Simple Stop Loss + 2 Take Profits
sl_long   =  valuewhen(longCond , low - atr * sl, 0)
sl_short  =  valuewhen(shortCond, high+ atr * sl, 0)

tp_long  = valuewhen(longCond , high + atr * tp, 0)
tp_short = valuewhen(shortCond, low  - atr * tp, 0)


long_exit = crossover(fastEMA, exitEMA) and pos[1]==1
short_exit= crossover(exitEMA, fastEMA) and pos[1]==-1

if long_exit or short_exit
	pos:=0


// Position Adjustment
long_sl  = low <sl_long [1] and pos[1]==1
short_sl = high>sl_short[1] and pos[1]==-1

if long_sl or short_sl
    pos:=0
    
//  Strategy Backtest Limiting Algorithm
i_startTime = input(defval = timestamp("01 Sep 2002 13:30 +0000"), title = "Backtesting Start Time", type = input.time)
i_endTime = input(defval = timestamp("30 Sep 2099 19:30 +0000"), title = "Backtesting End Time", type = input.time)
timeCond = true


// Make sure we are within the bar range, Set up entries and exit conditions
if strategy.equity >0
    strategy.entry("long" , strategy.long , when=longCond  and timeCond and tradeType!="SHORT" , alert_message="INSERT MESSAGE HERE")
    strategy.entry("short", strategy.short, when=shortCond and timeCond and tradeType!="LONG" , alert_message="INSERT MESSAGE HERE")
    
    strategy.exit("SL/TP1", from_entry = "long" , stop=sl_long , limit=tp_long , alert_message="INSERT MESSAGE HERE")
    strategy.exit("SL/TP1", from_entry = "short", stop=sl_short, limit=tp_short, alert_message="INSERT MESSAGE HERE")

    strategy.exit("SL", from_entry = "long" , stop=sl_long, alert_message="INSERT MESSAGE HERE")
    strategy.exit("SL", from_entry = "short", stop=sl_short, alert_message="INSERT MESSAGE HERE")
    
    strategy.close("long", when=long_exit , comment="TP2", alert_message="INSERT MESSAGE HERE")
    strategy.close("short", when=short_exit, comment="TP2", alert_message="INSERT MESSAGE HERE")