Estrategia de trading dinámico con períodos EMA múltiples


Fecha de creación: 2023-12-12 12:18:41 Última modificación: 2023-12-12 12:18:41
Copiar: 1 Número de Visitas: 1090
1
Seguir
1621
Seguidores

Estrategia de trading dinámico con períodos EMA múltiples

Descripción general

La idea central de esta estrategia es generar señales de negociación basadas en el cruce de múltiples EMAs. Cuando el EMA de corto plazo está en el EMA de largo plazo, haga más; cuando el EMA de corto plazo está en el EMA de largo plazo, apague. Esta estrategia permite la configuración de varios períodos de EMA, cada EMA puede activarse de forma independiente, y la estrategia se cruza en todos los EMAs activados.

Principio de estrategia

La estrategia establece 8 períodos de EMA, los cuales son: línea 8, 13, 21, 34, 55, 89, 144 y 233. Estos EMA están configurados para que puedan ser activados o desactivados de forma independiente.

Cuando el EMA más corto se cruza con el EMA más largo desde abajo, se genera una señal de compra; cuando el EMA más corto se cruza con el EMA más largo desde arriba hacia abajo, se genera una señal de venta. Si ambos EMA están activados, shorterEMA > longerEMA es una señal múltiple, y shorterEMA < longerEMA es una señal de liquidación.

Por ejemplo, si el EMA de 55 días y el EMA de 89 días están activados, se hace más cuando el EMA de 55 días está sobre el EMA de 89 días; cuando el EMA de 55 días está debajo del EMA de 89 días, se hace un par. Esto permite que esta estrategia ajuste dinámicamente la combinación de EMA utilizada, cambiando de un período más largo a un período más corto, o viceversa.

El número de posiciones se establece como el derecho a la cuenta dividido por el número de grupos de EMA activados. Esto asegura que el tamaño de la posición en cada EMA sea el mismo.

Análisis de las ventajas

  • Flexibilidad en el ciclo de la estrategia que se puede ajustar mediante la configuración de diferentes EMA
  • Cada EMA se puede configurar de forma independiente, lo que permite una gran personalización
  • Las posiciones se distribuyen proporcionalmente en cada EMA, lo que facilita la gestión de riesgos
  • Se utilizan varios EMA para cambiar a otros más adecuados en diferentes fases del mercado.
  • Las estrategias son simples, claras, fáciles de entender y de configurar

Análisis de riesgos

  • La EMA no puede determinar la estructura del mercado como un solo indicador, lo que podría enviar una señal errónea
  • Los EMAs en mercados con grandes fluctuaciones se cruzan fácilmente, aumentando la frecuencia de las operaciones y los costos de los puntos de deslizamiento.
  • Optimización de los parámetros de EMA para adaptarse a los diferentes mercados
  • Es posible que se necesite combinar con otros indicadores para confirmar la señal de transacción.

Se puede considerar el uso de EMA en combinación con otros indicadores, como el indicador de canal o el indicador de convulsión para filtrar señales, o en combinación con el indicador de tendencia y el indicador de reversión. Además, la optimización de los parámetros de EMA es muy importante y requiere ajustes para diferentes mercados.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Optimización de parámetros de la EMA. Se puede encontrar la combinación óptima de parámetros de la EMA a través de la exploración de parámetros y el método de Análisis Avanzado.

  2. Se pueden agregar condiciones de filtración adicionales para evitar señales erróneas, como filtros de volumen de transacción, filtros de fluctuación, etc. en los cruces de EMA.

  3. En combinación con otros indicadores. Se puede combinar la EMA con otros indicadores, como MACD, KDJ, Brin Belt, para aprovechar su complementariedad.

  4. Las posiciones en cada EMA se pueden ajustar dinámicamente según la volatilidad del mercado o la fuerza de la tendencia.

  5. Optimización de la relación de ganancias y pérdidas. Optimización del nivel de parada de pérdidas para encontrar la mejor relación de riesgo y ganancias.

Resumir

La estrategia en su conjunto es muy sencilla y directa, captando las tendencias a corto y medio plazo a través de EMA cruzados. Su ventaja reside en su alta configurabilidad y flexibilidad, permitiendo a los operadores elegir la combinación de EMA que mejor se adapte a ellos. Sin embargo, los EMA como indicador único son propensos a generar señales erróneas, que es el mayor riesgo de la estrategia.

Código Fuente de la Estrategia
/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("EMA Fan", shorttitle = "EMA Fan", overlay=true)

// Revision:        1
// Author:          @ToS_MavericK

buyprice = 0.0
buyprice := buyprice[1]

// === INPUT SMA ===
EMA1  = input(8)
EMA2  = input(13)
EMA3  = input(21)
EMA4  = input(34)
EMA5  = input(55)
EMA6  = input(89)
EMA7  = input(144)
EMA8  = input(233)

EnableEMA1 = input(true)
EnableEMA2 = input(true)
EnableEMA3 = input(true)
EnableEMA4 = input(true)
EnableEMA5 = input(true)
EnableEMA6 = input(true)
EnableEMA7 = input(true)
EnableEMA8 = input(true)

//Profit  = input(defval = 5, type = integer, title = "Profit", minval = 1, step = 1)
//StopLoss    = input(defval = 15, type = integer, title = "StopLoss", minval = 1, step = 1)

// === INPUT BACKTEST RANGE ===
FromMonth   = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear    = input(defval = 2018, title = "From Year", minval = 2012)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay   = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear  = input(defval = 2020, title = "To Year", minval = 2012)


// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

// === SERIES SETUP ===
vEMA1 = ema(close, EMA1)
vEMA2 = ema(close, EMA2)
vEMA3 = ema(close, EMA3)
vEMA4 = ema(close, EMA4)
vEMA5 = ema(close, EMA5)
vEMA6 = ema(close, EMA6)
vEMA7 = ema(close, EMA7)
vEMA8 = ema(close, EMA8)

count = -1
if (EnableEMA1 == true)
    count := count + 1
if (EnableEMA2 == true)
    count := count + 1
if (EnableEMA3 == true)
    count := count + 1
if (EnableEMA4 == true)
    count := count + 1
if (EnableEMA5 == true)
    count := count + 1
if (EnableEMA6 == true)
    count := count + 1
if (EnableEMA7 == true)
    count := count + 1
if (EnableEMA8 == true)
    count := count + 1

// set position size
Amount = 1 / (close * count)

// === EXECUTION ===
strategy.entry("EMA1", strategy.long, qty = Amount, when = window() and crossover(vEMA1,vEMA2) and EnableEMA1 and EnableEMA2)
strategy.close("EMA1", time > finish or crossunder(vEMA1,vEMA2))

strategy.entry("EMA2", strategy.long, qty = Amount, when = window() and crossover(vEMA2,vEMA3) and EnableEMA2 and EnableEMA3)
strategy.close("EMA2", time > finish or crossunder(vEMA2,vEMA3))

strategy.entry("EMA3", strategy.long, qty = Amount, when = window() and crossover(vEMA3,vEMA4) and EnableEMA3 and EnableEMA4)
strategy.close("EMA3", time > finish or crossunder(vEMA3,vEMA4))

strategy.entry("EMA4", strategy.long, qty = Amount, when = window() and crossover(vEMA4,vEMA5) and EnableEMA4 and EnableEMA5)
strategy.close("EMA4", time > finish or crossunder(vEMA4,vEMA5))

strategy.entry("EMA5", strategy.long, qty = Amount, when = window() and crossover(vEMA5,vEMA6) and EnableEMA5 and EnableEMA6)
strategy.close("EMA5", time > finish or crossunder(vEMA5,vEMA6))

strategy.entry("EMA6", strategy.long, qty = Amount, when = window() and crossover(vEMA6,vEMA7) and EnableEMA6 and EnableEMA7)
strategy.close("EMA6", time > finish or crossunder(vEMA6,vEMA7))

strategy.entry("EMA7", strategy.long, qty = Amount, when = window() and crossover(vEMA7,vEMA8) and EnableEMA7 and EnableEMA8)
strategy.close("EMA7", time > finish or crossunder(vEMA7,vEMA8))

plot(vEMA1, title = 'EMA1', color = red, linewidth = 2, style = line)  // plot FastMA
plot(vEMA2, title = 'EMA2', color = orange, linewidth = 2, style = line)    // plot SlowMA
plot(vEMA3, title = 'EMA3', color = yellow, linewidth = 2, style = line)    // plot SlowMA
plot(vEMA4, title = 'EMA4', color = green, linewidth = 2, style = line)    // plot SlowMA
plot(vEMA5, title = 'EMA5', color = teal, linewidth = 2, style = line)    // plot SlowMA
plot(vEMA6, title = 'EMA6', color = blue, linewidth = 2, style = line)    // plot SlowMA
plot(vEMA7, title = 'EMA7', color = maroon, linewidth = 2, style = line)    // plot SlowMA
plot(vEMA8, title = 'EMA8', color = white, linewidth = 2, style = line)    // plot SlowMA

//plot(long_stop, title = 'High-ATR', color = red, linewidth = 2, style = line)    // plot SlowMA
//plot(short_stop, title = 'Low+ATR', color = green, linewidth = 2, style = line)    // plot SlowMA