A estratégia de negociação de ruptura de EMA dupla é uma estratégia de rastreamento de tendências que usa duas medias EMA de diferentes ciclos para julgar os sinais de venda. A estratégia combina indicadores EMA adicionais para filtrar os sinais de negociação, obtendo melhores momentos de entrada no mercado de tendências.
A estratégia usa um EMA auxiliar de 9 ciclos e um EMA auxiliar de 4 ciclos para determinar o tempo de compra e venda. O EMA auxiliar é ativado apenas quando o EMA auxiliar está entre as linhas rápidas e um ciclo é superior a um EMA de 4 ciclos.
Quando o sinal de negociação é desencadeado, a estratégia define um ponto de stop e um ponto de stop de acordo com o valor do ATR. O TP1 é 6 vezes o ATR e é usado para obter lucros em parte da velocidade mais rápida. Se o preço não desencadear o TP1, quando o EMA rápido cruza novamente o EMA auxiliar, o posicionamento é imediatamente despejado, alcançando o TP2 stop.
Otimizar:
A estratégia de negociação de ruptura de EMA dupla usa o cruzamento de dois EMAs para fazer julgamentos de tendências, complementados com múltiplos filtros de EMA e ATR dinâmicos, para acompanhar de forma eficaz os ganhos da tendência. Mas problemas como a adequação da curva EMA, o risco de perda de parâmetros e o gerenciamento de riscos exigem atenção.
A estratégia de negociação crossover dual EMA utiliza duas linhas EMA de períodos diferentes para gerar sinais de compra e venda identificando a direção da tendência.
A estratégia usa uma linha EMA rápida (9 períodos) e uma linha EMA lenta (21 períodos) para determinar as entradas. Uma cruz de ouro onde a EMA rápida cruza acima da EMA lenta gera um sinal de compra, enquanto uma cruz de morte com a EMA rápida cruzando abaixo da EMA lenta produz um sinal de venda. Para filtrar sinais falsos, a estratégia também emprega uma EMA auxiliar (5 períodos) e mais duas EMAs (1 período, 4 períodos). Um sinal de negociação real só é acionado quando as EMAs rápidas e lentas cruzam enquanto a EMA auxiliar está entre os dois, e a EMA de 1 período está acima da EMA de 4 períodos.
Uma vez que um sinal de negociação é acionado, a estratégia utiliza os valores ATR para definir os níveis de stop loss e take profit.
Orientações de melhoria:
A estratégia de cruzamento dupla da EMA aproveita cruzes da EMA para a direção da tendência, juntamente com a filtragem múltipla da EMA e a tomada dinâmica de stop loss / lucro da ATR. Isso permite o seguimento e a colheita de lucros da tendência efetivos. No entanto, as limitações de ajuste da EMA e os riscos de stop loss exigem cautela. A otimização adequada, o gerenciamento de riscos, etc., podem levar a um desempenho mais robusto. A estratégia é adequada para comerciantes experientes para alcançar alta eficiência de capital em mercados de tendência.
[/trans]
/*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")