Estrategia de trading cuantitativo que combina EMA y supertendencia

EMA
Fecha de creación: 2024-06-17 16:52:17 Última modificación: 2024-06-17 16:52:17
Copiar: 1 Número de Visitas: 773
1
Seguir
1617
Seguidores

Estrategia de trading cuantitativo que combina EMA y supertendencia

Descripción general

La estrategia combina el promedio móvil de índice (EMA) y el indicador de tendencia súper (Supertrend) para generar una señal de compra y venta. Se genera una señal de compra cuando el precio supera el 20o EMA desde arriba y el indicador de tendencia súper está en una tendencia bajista. Se genera una señal de venta cuando el precio cae desde abajo y el indicador de tendencia súper está en una tendencia bajista.

Principio de estrategia

  1. Calcula el EMA de 20 días como condición de filtro para juzgar la tendencia.
  2. Cálculo del indicador de tendencia súper, que se basa en el rango medio real (ATR) y la tendencia de la pluralidad para trazar el ascenso y el descenso.
  3. La dirección de la tendencia de los indicadores de tendencia súper y la posición relativa de los precios con respecto a la EMA del día 20 generan una señal de compra o venta:
    • Una señal de compra se genera cuando el precio rompe la EMA de 20 días desde arriba y el indicador de tendencia súper está en una tendencia bajista.
    • Una señal de venta se genera cuando el precio cae por debajo de la EMA del día 20 y el indicador de tendencia súper está en una tendencia bajista.
  4. Estrategia: abrir más posiciones de acuerdo con la señal de compra y cerrar más posiciones de acuerdo con la señal de venta.

Ventajas estratégicas

  1. La combinación de la EMA y el indicador de tendencias súper puede capturar de manera eficaz las tendencias y reducir las falsas señales.
  2. El indicador de tendencias súper está basado en el ATR y puede ajustar dinámicamente la distancia de subida y bajada para adaptarse a las diferentes fluctuaciones del mercado.
  3. La EMA sirve como filtro para juzgar la tendencia, asegurando que las posiciones se abran en la dirección de la tendencia y aumentando la probabilidad de éxito de la estrategia.
  4. La lógica de la estrategia es simple y clara, fácil de entender y de implementar.

Riesgo estratégico

  1. En un mercado convulso, esta estrategia puede generar señales de compra y venta frecuentes, lo que lleva a un exceso de operaciones y pérdidas de comisiones.
  2. La estrategia depende de los EMA y los indicadores de tendencia súper, que pueden fallar o retrasarse en ciertas condiciones de mercado.
  3. Las estrategias no tienen en cuenta la gestión de riesgos, como el stop loss y la gestión de posiciones, lo que puede conducir a retiros más grandes en momentos de gran volatilidad en el mercado.

Dirección de optimización de la estrategia

  1. Incorporar un mecanismo de stop loss, como el stop loss dinámico configurado según el ATR, para controlar la pérdida máxima de una sola transacción.
  2. Optimización de los parámetros de los EMA y los indicadores de tendencias súper, como el uso de métodos de optimización de parámetros para encontrar la combinación óptima de parámetros y mejorar la adaptabilidad y la estabilidad de las estrategias.
  3. Introducir la gestión de posiciones, ajustando dinámicamente el tamaño de las posiciones en función de la volatilidad del mercado o de las pérdidas de las cuentas para controlar el riesgo general.
  4. Considere agregar otros filtros, como volumen de transacciones, volatilidad, etc., para reducir aún más las falsas señales.

Resumir

La estrategia genera señales de compra y venta por medio de la combinación de una EMA de 20 días y un indicador de tendencia súper, con el objetivo de capturar el comportamiento de tendencia. La ventaja de la estrategia es que la lógica es simple, y la combinación de EMA y un indicador de tendencia súper puede reducir eficazmente las señales falsas. Sin embargo, en un mercado convulso, la estrategia puede operar con frecuencia y carecer de medidas de gestión del riesgo.

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

//@version=5
strategy("20 EMA and Supertrend Strategy", overlay=true)

// Inputs
emaLength = input(20, title="EMA Length")
supertrendMultiplier = input.float(3.0, title="Supertrend Multiplier")
supertrendPeriod = input(10, title="Supertrend Period")

// EMA Calculation
ema = ta.ema(close, emaLength)

// Supertrend Calculation
Periods = supertrendPeriod
src = hl2
Multiplier = supertrendMultiplier
changeATR= input.bool(true, title="Change ATR Calculation Method?")
showsignals = input.bool(true, title="Show Buy/Sell Signals?")
highlighting = input.bool(true, title="Highlighter On/Off?")
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - (Multiplier * atr)
up1 = na(up[1]) ? up : up[1]
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + (Multiplier * atr)
dn1 = na(dn[1]) ? dn : dn[1]
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := na(trend[1]) ? trend : trend[1]
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(series=buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(series=buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.white)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(series=sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(series=sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.white)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=1)
longFillColor = highlighting ? (trend == 1 ? color.new(color.green, 90) : color.new(color.white, 0)) : color.new(color.white, 0)
shortFillColor = highlighting ? (trend == -1 ? color.new(color.red, 90) : color.new(color.white, 0)) : color.new(color.white, 0)
fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)
alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!")
alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!")
changeCond = trend != trend[1]
alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")

// Buy and Sell Signals based on EMA and Supertrend
buySignalEMA = ta.crossover(close, ema) and trend == 1
sellSignalEMA = ta.crossunder(close, ema) and trend == -1

// Plot EMA
plot(ema, color=color.blue, title="20 EMA")

// Plot Buy and Sell Signals
plotshape(series=buySignalEMA, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY")
plotshape(series=sellSignalEMA, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")

// Strategy Entries and Exits
if (buySignalEMA)
    strategy.entry("Buy", strategy.long)

if (sellSignalEMA)
    strategy.close("Buy")