La stratégie de rupture double EMA est une stratégie de suivi de tendance qui utilise deux moyennes EMA de deux cycles différents pour juger des signaux de vente. Cette stratégie est également combinée à des indicateurs EMA supplémentaires pour filtrer les signaux de négociation afin d'obtenir de meilleurs moments d'entrée dans un marché tendance.
La stratégie utilise l'EMA à 9 cycles et l'EMA à 21 cycles pour déterminer le moment où acheter et vendre. Elle génère un signal d'achat lorsque la ligne lente passe sur la ligne rapide et un signal de vente lorsque la ligne lente passe sous la ligne rapide. Pour filtrer les signaux de faux-fuyant, la stratégie introduit également une EMA auxiliaire à 5 cycles et deux EMA supplémentaires à 1, 4 cycles.
Lorsque le signal de négociation est déclenché, la stratégie met en place des niveaux de stop-loss et de stop-loss en fonction de la valeur de l'ATR. TP1 est 6 fois plus élevé que l'ATR et est utilisé pour obtenir une partie des bénéfices d'une vitesse plus rapide. Si le prix ne déclenche pas le TP1, le TP2 est déclenché lorsque l'EMA rapide franchit à nouveau l'EMA auxiliaire.
L'optimisation:
La stratégie de rupture de la double EMA utilise deux EMAs croisés pour faire des jugements de tendance, accompagnés de plusieurs filtres EMA et d'ATR pour suivre efficacement les gains de la tendance. Cependant, des problèmes tels que l'ajustement de la courbe EMA, le risque de rupture nécessitent une attention particulière. Des mesures telles que l'optimisation des paramètres et la gestion des risques permettent d'obtenir des performances de trading plus stables.
La double stratégie de négociation EMA utilise deux lignes EMA de périodes différentes pour générer des signaux d'achat et de vente en identifiant la direction de la tendance.
La stratégie utilise une ligne EMA rapide (9 périodes) et une ligne EMA lente (21 périodes) pour déterminer les entrées. Une croix d'or où l'EMA rapide traverse au-dessus de l'EMA lente génère un signal d'achat, tandis qu'une croix de mort avec l'EMA rapide traversant au-dessous de l'EMA lente produit un signal de vente. Pour filtrer les faux signaux, la stratégie utilise également une EMA auxiliaire (5 périodes) et deux EMA supplémentaires (1 période, 4 périodes).
Une fois qu'un signal de trading est déclenché, la stratégie utilise les valeurs ATR pour définir les niveaux d'arrêt des pertes et de prise de profit.
Directions d'amélioration:
La double stratégie de croisement EMA exploite les croisements EMA pour la direction de la tendance, ainsi que le filtrage multiple EMA et le stop loss / profit dynamique ATR. Cela permet de suivre efficacement la tendance et de récolter des bénéfices. Cependant, les limitations d'ajustement EMA et les risques de stop loss nécessitent des précautions. Une optimisation appropriée, une gestion des risques, etc. peuvent conduire à une performance plus robuste.
Je ne sais pas.
/*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")