Estrategia de negociación cruzada con dos EMA

El autor:¿ Qué pasa?, Fecha: 2023-10-16 16:24:00
Las etiquetas:

img

Resumen

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.

El principio

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.

Las ventajas

  • El uso de una combinación de dos EMA para filtrar señales falsas mejora la calidad de las señales comerciales
  • Los indicadores de EMA auxiliares pueden validar aún más la dirección de la tendencia y reducir el riesgo de operaciones inversas
  • El diseño de dos paradas, tanto para obtener ganancias rápidas como para seguir la tendencia de las ganancias de manera sostenible
  • Los frenos de stop loss dinámicos de ATR pueden ajustarse en función de la volatilidad del mercado para reducir el riesgo

Riesgo y optimización

  • Los indicadores de EMA son propensos a causar ajustes en la curva y las señales de negociación pueden retrasarse.
  • La combinación de EMA de ciclo corto podría generar más señales de comercio de ruido
  • Las operaciones de línea corta son más vulnerables a los eventos de emergencia y tienen un mayor riesgo de pérdida.

La dirección de optimización:

  • Prueba combinaciones de EMA de varios grupos para encontrar parámetros óptimos
  • Añadir otros indicadores de verificación, como volumen de transacciones, volatilidad, etc.
  • Relajar adecuadamente el rango de pérdidas para reducir la probabilidad de que las pérdidas sean provocadas
  • Optimización de la proporción de la configuración de doble parada, equilibrio entre la velocidad de ganancia y la eficiencia en el uso de los fondos

Resumen

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.

Resumen general

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.

Principios

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.

Ventajas

  • El diseño de la EMA doble filtra las señales falsas y mejora la calidad de la señal
  • La EMA auxiliar añade la verificación de la dirección de la tendencia, reduciendo los riesgos comerciales inversos
  • La doble toma de ganancias permite obtener ganancias rápidas y una tendencia sostenida
  • Las pérdidas y ganancias de ATR dinámicas se ajustan a la volatilidad del mercado

Riesgos y mejoras

  • Las EMA pueden retrasar los precios y generar señales tardías
  • Las combinaciones de EMA más cortas pueden producir más ruido
  • Las paradas más estrechas se enfrentan a mayores riesgos de eventos repentinos

Direcciones de mejora:

  • Prueba de múltiples combinaciones de EMA para obtener mejores parámetros
  • Añadir otros indicadores de confirmación como volumen, volatilidad, etc.
  • Ampliar el stop loss para reducir las probabilidades de stop out
  • Optimizar los ratios de toma de ganancias para la rentabilidad frente a la eficiencia del capital

Conclusión

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")


Más.