Esta es una estrategia de negociación doble de EMA cruzada basada en indicadores de EMA rápida y EMA lenta. La estrategia genera señales largas cuando la EMA rápida cruza por encima de la EMA lenta, y cierra posiciones largas cuando la EMA rápida cruza por debajo de la EMA lenta. La estrategia es simple y práctica para el comercio a mediano plazo.
La estrategia se aplica principalmente con los indicadores de la EMA dual: la EMA rápida tiene un período más corto para reflejar sensiblemente los cambios de precios, mientras que la EMA lenta tiene un período más largo para indicar tendencias a largo plazo.
Cuando la EMA rápida cruza por encima de la EMA lenta, se forma una cruz de oro, lo que indica el impulso al alza del precio a corto plazo para ir largo.
En concreto, la estrategia incluye:
Parámetros de entrada para la EMA rápida y lenta, incluido el período, la fuente, etc.
Calcule la EMA rápida y la EMA lenta.
Define la cruz dorada cuando la EMA rápida cruza por encima de la EMA lenta.
Define la cruz de muerte cuando la EMA rápida cruza por debajo de la EMA lenta.
Ir largo en cruces de oro.
Posiciones cerradas en las cruces de la muerte.
Opciones para el cortocircuito y para la obtención de pérdidas/ganancias.
Notificaciones de compra y venta de salida.
Con este simple sistema de doble cruce de EMA, la estrategia puede capturar las tendencias a corto plazo para obtener ganancias.
La estrategia tiene las siguientes ventajas:
La lógica es simple y clara, fácil de entender.
Sólo utiliza doble EMA, fácil de implementar.
Puede detectar tendencias a corto plazo para obtener ganancias.
Periodos de EMA personalizables para diferentes mercados.
Opción de cortocircuito para controlar los riesgos.
Opción para la obtención de pérdidas o ganancias.
Notificaciones de compra/venta para el seguimiento.
Fácil de optimizar los parámetros de EMA para mejores ganancias.
También hay algunos riesgos:
La doble EMA puede generar señales falsas que causan pérdidas innecesarias.
La configuración incorrecta del stop loss puede aumentar las pérdidas.
La alta frecuencia de negociación aumenta los costes y los riesgos de deslizamiento.
Los parámetros fijos de la EMA no pueden adaptarse a los cambios del mercado.
Suele perseguir el impulso, pierde el juicio tranquilo.
No puede identificar la inversión de tendencia, puede abrir posiciones invertidas.
Medidas de gestión de riesgos correspondientes:
Optimice los parámetros de EMA para reducir las señales falsas.
Establezca el límite de stop loss adecuado por pérdida comercial.
Optimizar los períodos de EMA para reducir la frecuencia.
Ajuste dinámico de la EMA para las diferentes etapas del mercado.
Agregue indicadores de tendencia para evitar perseguir el impulso.
Identificar las principales direcciones de tendencia con herramientas de tendencia.
La estrategia se puede optimizar en los siguientes aspectos:
Optimización dinámica de los parámetros de la EMA para diferentes mercados.
Añadir filtros de stock para mejorar la precisión.
Incorporar el índice de volatilidad para reducir la posición en entornos de baja volatilidad.
Añadir confirmación de volumen para las señales.
Establecer niveles de precios, como 20SMA breakout antes de tomar las señales.
Mejorar las estrategias de stop loss y take profit.
Añadir análisis de la tendencia principal para evitar el comercio contra la tendencia.
Optimice continuamente la estrategia con algoritmos de aprendizaje automático.
En resumen, la estrategia de cruce dual EMA tiene una lógica simple y clara para capturar tendencias a corto plazo, pero también tiene algunos riesgos de ganancias. Podemos gestionar los riesgos optimizando parámetros, implementando stop loss / taking profit, filtrando acciones, juzgando tendencias principales, etc., para obtener constantemente rendimientos satisfactorios. La estrategia se puede mejorar de manera incremental con investigaciones y mejoras continuas.
/*backtest start: 2023-09-15 00:00:00 end: 2023-10-15 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("EMA Strategy", shorttitle="EMA Strategy", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // === Inputs === // short ma maFastSource = input(defval=close, title="Fast MA Source") maFastLength = input(defval=3, title="Fast MA Period", minval=1) // long ma maSlowSource = input(defval=close, title="Slow MA Source") maSlowLength = input(defval=9, title="Slow MA Period", minval=1) // invert trade direction shorting = input(defval=false, title="Allow Shorting?") // risk management useStop = input(defval=false, title="Use Initial Stop Loss?") slPoints = input(defval=25, title="Initial Stop Loss Points", minval=1) useTS = input(defval=false, title="Use Trailing Stop?") tslPoints = input(defval=120, title="Trail Points", minval=1) useTSO = input(defval=false, title="Use Offset For Trailing Stop?") tslOffset = input(defval=20, title="Trail Offset Points", minval=1) // Messages for buy and sell message_buy = input("Buy message", title="Buy Alert Message") message_sell = input("Sell message", title="Sell Alert Message") // Calculate start/end date and time condition startDate = input(timestamp("2021-01-01T00:00:00"), type = input.time) finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time) time_cond = true // === Vars and Series === fastMA = ema(maFastSource, maFastLength) slowMA = ema(maSlowSource, maSlowLength) plot(fastMA, color=color.blue) plot(slowMA, color=color.purple) goLong() => crossover(fastMA, slowMA) killLong() => crossunder(fastMA, slowMA) strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_buy) strategy.close("Buy", when=killLong() and time_cond, alert_message = message_sell) // Shorting if using if shorting strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_sell) strategy.close("Sell", when=goLong() and time_cond, alert_message = message_buy) if useStop strategy.exit("XLS", from_entry="Buy", stop=strategy.position_avg_price / 1.08) strategy.exit("XSS", from_entry="Sell", stop=strategy.position_avg_price * 1.08)