La estrategia de ruptura de la doble EMA es una estrategia de seguimiento de tendencias que utiliza dos medias de la EMA de diferentes ciclos para determinar las señales de venta. La estrategia combina indicadores EMA adicionales para filtrar las señales de negociación y obtener mejores momentos de entrada en el mercado de tendencia.
La estrategia utiliza una EMA de 9 ciclos y una EMA de 21 ciclos para determinar el momento de compra y venta. Se produce una señal de compra cuando la línea rápida atraviesa la línea lenta y una señal de venta cuando la línea rápida atraviesa la línea lenta. Para filtrar las falsas señales, la estrategia también introduce una EMA de 5 ciclos y dos EMA de 1 o 4 ciclos adicionales.
Cuando se activa la señal de negociación, la estrategia establece el nivel de stop loss y el nivel de stop loss según el valor del ATR. TP1 es 6 veces el ATR, para obtener una parte de las ganancias de una velocidad más rápida. Si el precio no activa el TP1, cuando el EMA de la línea rápida vuelve a cruzar el EMA auxiliar, la posición se aplanará directamente, logrando el TP2 stop loss.
La dirección de optimización:
La estrategia de ruptura de la EMA doble utiliza el cruce de dos EMA para hacer un juicio de tendencia, complementado con múltiples filtros de EMA y ATR para detener la pérdida y detener la pérdida, lo que permite un seguimiento efectivo de las ganancias de la tendencia. Sin embargo, los problemas de ajuste de la curva EMA, el riesgo de detener la pérdida requieren atención.
La doble estrategia de negociación de cruce de EMA utiliza dos líneas EMA de períodos diferentes para generar señales de compra y venta mediante la identificación de la dirección de la tendencia.
La estrategia utiliza una línea EMA rápida (9 períodos) y una línea EMA lenta (21 períodos) para determinar las entradas. Una cruz de oro donde la EMA rápida cruza por encima de la EMA lenta genera una señal de compra, mientras que una cruz de muerte con la EMA rápida cruzando por debajo de la EMA lenta produce una señal de venta. Para filtrar las señales falsas, la estrategia también emplea una EMA auxiliar (5 períodos) y dos EMA más (1 período, 4 períodos).
Una vez que se activa una señal de negociación, la estrategia utiliza los valores de ATR para establecer niveles de stop loss y take profit. TP1 se establece en 6 x ATR para obtener ganancias más rápidas. Si el precio no alcanza TP1, la estrategia cerrará la posición directamente cuando la EMA rápida cruce de nuevo sobre la EMA auxiliar, realizando TP2.
Direcciones de mejora:
La doble estrategia de cruce de EMA aprovecha los cruces de EMA para la dirección de la tendencia, junto con el filtrado múltiple de EMA y la toma dinámica de pérdida / ganancia de ATR. Esto permite un seguimiento eficaz de la tendencia y la recolección de ganancias. Sin embargo, las limitaciones de ajuste de EMA y los riesgos de pérdida de parada requieren precaución.
[/trans] ¿Qué quieres decir?
/*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")