Estrategia de negociación cruzada a corto, mediano y largo plazo de la EMA

El autor:¿ Qué pasa?, Fecha: 2023-11-24 13:33:21
Las etiquetas:

img

Esta estrategia genera señales de negociación basadas en tres líneas de promedio móvil exponencial (EMA) con diferentes períodos: EMA a corto plazo con período de 5 días, EMA a mediano plazo con período de 8 días y EMA a largo plazo con período de 13 días.

Estrategia lógica

Esta estrategia juzga la tendencia del mercado mediante el cálculo de EMA de diferentes períodos. La EMA a corto plazo refleja el precio promedio de los últimos días, mientras que las EMA a mediano y largo plazo reflejan el precio promedio en períodos de tiempo más largos. El cruce de la EMA a corto plazo con las EMA a mediano y largo plazo señala una ruptura al alza del precio, por lo que se toma una posición larga. Por el contrario, cuando la EMA a corto plazo cruza por debajo de las otras dos, señala una ruptura al descenso del precio, por lo que se toma una posición corta.

Específicamente, esta estrategia calcula simultáneamente las EMA de 5 días, 8 días y 13 días. Genera señales largas cuando la EMA de 5 días cruza las de 8 días y 13 días; genera señales cortas cuando la EMA de 5 días cruza por debajo de las otras dos. Después de ir largo, la posición se cierra una vez que la EMA de 5 días cruza de nuevo por debajo de la EMA de 13 días. Del mismo modo para la posición corta.

Ventajas de la estrategia

  1. El uso de EMA de varios períodos evita la falta de puntos clave de inversión de tendencia que podrían ocurrir con períodos de EMA únicos demasiado cortos o largos
  2. La combinación de tres EMA a corto, mediano y largo plazo mejora la fiabilidad de las señales de negociación
  3. La fijación de precios suavizada a través de los EMA filtra parte del ruido del mercado y evita entradas innecesarias

Riesgos de la estrategia

  1. Los tres EMA son indicadores de tendencia con retraso, que contienen, por naturaleza, algunos retrasos de tiempo antes de las rupturas reales de los precios, lo que corre el riesgo de señales tardías.
  2. Las EMA no pueden distinguir eficazmente las tendencias reales de las correcciones a corto plazo, lo que puede producir señales falsas.
  3. Los períodos de EMA fijos no pueden adaptarse a diferentes regímenes de mercado en diferentes plazos

Ideas de mejora:

  1. Añadir otros indicadores como el MACD para medir mejor la tendencia real, evitando señales falsas
  2. Ajuste flexible de los parámetros del período de EMA para diferentes productos y entornos de mercado
  3. Añadir un stop loss móvil para bloquear las ganancias y controlar los riesgos

Resumen de las actividades

Este es un sistema típico de ruptura que juzga las reversiones de tendencia comparando cruces entre EMAs de corto, mediano y largo período. Su simplicidad en la señalización facilita la facilidad de negociación, pero también sufre de retraso inherente a las EMAs e incapacidad para filtrar tendencias reales de correcciones temporales.


/*backtest
start: 2023-11-16 00:00:00
end: 2023-11-23 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// 
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © gregoirejohnb
// @It is modified by ttsaadet.
// Moving average crossover systems measure drift in the market. They are great strategies for time-limited people.
// So, why don't more people use them?
// 

//
strategy(title="EMA Crossover Strategy", shorttitle="EMA-5-8-13 COS by TTS", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, currency=currency.TRY,commission_type=strategy.commission.percent,commission_value=0.04, process_orders_on_close = true, initial_capital = 100000)

// === GENERAL INPUTS ===
//strategy start date
start_year = input(defval=2020, title="Backtest Start Year")

// === LOGIC ===
short_period = input(type=input.integer,defval=5,minval=1,title="Length")
mid_period = input(type=input.integer,defval=8,minval=1,title="Length")
long_period = input(type=input.integer,defval=13,minval=1,title="Length")

longOnly = input(type=input.bool,defval=false,title="Long Only")
shortEma = ema(hl2,short_period)
midEma = ema(hl2,mid_period)
longEma = ema(hl2,long_period)

plot(shortEma,linewidth=2,color=color.red,title="Fast")
plot(midEma,linewidth=2,color=color.orange,title="Fast")
plot(longEma,linewidth=2,color=color.blue,title="Slow")

longEntry = ((shortEma > midEma) and crossover(shortEma,longEma)) or ((shortEma > longEma) and crossover(shortEma,midEma))
shortEntry =((shortEma < midEma) and crossunder(shortEma,longEma)) or ((shortEma < longEma) and crossunder(shortEma,midEma))

plotshape(longEntry ? close : na,style=shape.triangleup,color=color.green,location=location.belowbar,size=size.small,title="Long Triangle")
plotshape(shortEntry and not longOnly ? close : na,style=shape.triangledown,color=color.red,location=location.abovebar,size=size.small,title="Short Triangle")
plotshape(shortEntry and longOnly ? close : na,style=shape.xcross,color=color.black,location=location.abovebar,size=size.small,title="Exit Sign")

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() =>
    longEntry 
exitLong() =>
    crossunder(shortEma,longEma)

strategy.entry(id="Long", long=strategy.long, when=enterLong())
strategy.close(id="Long", when=exitLong())


// === STRATEGY - SHORT POSITION EXECUTION ===

enterShort() =>
    not longOnly and shortEntry  
exitShort() =>
    crossover(shortEma,longEma)

strategy.entry(id="Short", long=strategy.short, when=enterShort())
strategy.close(id="Short", when=exitShort())

Más.