Estrategia de ruptura de la EMA triple

El autor:¿ Qué pasa?, Fecha: 2023-12-28 15:56:54
Las etiquetas:

img

Resumen general

La estrategia Triple EMA Crossover Breakout utiliza indicadores de media móvil exponencial triple (EMA) para determinar la dirección de la tendencia del mercado y entrar en los puntos de ruptura de la tendencia.

Estrategia lógica

La estrategia se basa principalmente en los siguientes principios:

  1. Utilice tres EMA con períodos diferentes (200 días, 50 días, 20 días) para determinar las principales tendencias del mercado a medio y corto plazo.

  2. Cuando la EMA a corto plazo (20 días) se cruza por encima de la EMA a mediano plazo (50 días), se genera una señal de compra.

  3. Sólo cuando el precio de cierre de la segunda vela es más alto (bajo) que el precio alto (bajo) de la vela anterior, la ruptura se considera confiable.

  4. Establezca niveles de stop loss y de ganancias para limitar los riesgos más allá de las fluctuaciones razonables de los precios.

Análisis de ventajas

  1. El uso de múltiples EMA mejora la precisión del juicio de tendencia.

  2. El filtrado de señales falsas con patrones de candelabro evita riesgos comerciales innecesarios.

  3. Detener pérdidas y tomar ganancias controla las pérdidas de una sola operación de manera efectiva.

Análisis de riesgos

  1. En los mercados variados, las EMA pueden generar señales falsas excesivas y no pueden determinar la dirección del mercado.

  2. El sistema de indicadores únicos tiene una capacidad limitada en situaciones de mercado complejas.

  3. No tiene en cuenta los costes comerciales que podrían conducir a la falta de rentabilidad en los mercados de altas tarifas.

Optimización

  1. Introducir otros indicadores como MACD y KDJ para formar un sistema combinado y mejorar la precisión del juicio.

  2. Optimizar los parámetros a través de backtesting para símbolos y plazos específicos para hacer que la estrategia se adapte mejor.

  3. Aumentar el volumen de operaciones para evitar señales falsas de bajo volumen.

Conclusión

La estrategia de triple EMA Crossover tiene una lógica clara y fácil de entender para determinar las tendencias del mercado y encontrar el momento de entrada utilizando los cruces de EMA. Pero también tiene algunas limitaciones para lidiar con situaciones de mercado complejas.


/*backtest
start: 2022-12-21 00:00:00
end: 2023-12-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("GHG RETRACEMENT MODE 1", overlay=true)

entryLevel1 = input(0.5, "ENTRY LEVEL 1")
entryLevel2 = input(0.25, "ENTRY LEVEL 2")
entryLevel3 = input(0.0, "ENTRY LEVEL 3")

stopLevel = input(-0.35, "STOP LEVEL")
tpLevel = input(0.88, "TP LEVEL")
dontUseEma = input(false, "Don't Use EMA")


get_level(level, level100, level0) =>
    level * (level100 - level0) + level0

buySignal = close[2] < open[2] and close[1] > open[1] and close[0] > open[0] and high[0] > open[2] and high[1] < high[2]
sellSignal = close[2] > open[2] and close[1] < open[1] and close[0] < open[0] and low[0] < open[2] and low[1] > low[2]

if buySignal and (close[0] > ta.ema(close, 200) or dontUseEma)
    l = label.new(bar_index, na)
    entryPrice1 = get_level(entryLevel1, high[0], low[2])
    entryPrice2 = get_level(entryLevel2, high[0], low[2])
    entryPrice3 = get_level(entryLevel3, high[0], low[2])
    
    exitPrice = get_level(tpLevel, high[0], low[2])
    stopPrice = get_level(stopLevel, high[0], low[2])
    
    strategy.order("BUY 1", strategy.long, comment="BUY 1", limit=entryPrice1)
    strategy.exit("exit", "BUY 1", limit=high[0], stop=stopPrice)
    strategy.order("BUY 2", strategy.long, comment="BUY 2", limit=entryPrice2)
    strategy.exit("exit", "BUY 2", limit=high[0], stop=stopPrice)

    label.set_text(l, "Buy => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) )
    label.set_color(l, color.green)
    label.set_yloc(l, yloc.belowbar)
    label.set_style(l, label.style_label_up)
    
if sellSignal and (close[0] < ta.ema(close, 200) or dontUseEma)
    a = label.new(bar_index, na)
    entryPrice1 = get_level(entryLevel1, low[0], high[2])
    entryPrice2 = get_level(entryLevel2, low[0], high[2])
    entryPrice3 = get_level(entryLevel3, low[0], high[2])
    
    exitPrice = get_level(tpLevel, low[0], high[2])
    stopPrice = get_level(stopLevel,low[0], high[2])
    
    strategy.order("SELL 1", strategy.short, comment="SELL 1", limit=entryPrice1)
    strategy.exit("exit", "SELL 1", limit=low[0], stop=stopPrice) 
    strategy.order("SELL 2", strategy.short, comment="SELL 2", limit=entryPrice2)
    strategy.exit("exit", "SELL 2", limit=low[0], stop=stopPrice) 

    label.set_text(a,"Sell => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) )
    label.set_color(a, color.red)
    label.set_yloc(a, yloc.abovebar)
    label.set_style(a, label.style_label_down)
   


Más.