Estrategia de seguimiento cuantitativo del mercado alcista


Fecha de creación: 2024-01-04 15:25:42 Última modificación: 2024-01-04 15:25:42
Copiar: 0 Número de Visitas: 572
1
Seguir
1621
Seguidores

Estrategia de seguimiento cuantitativo del mercado alcista

Descripción general

La estrategia de seguimiento cuantitativo de los mercados alcistas es una estrategia de seguimiento de tendencias basada en la media EMA y los paros ATR. Utiliza la media EMA para determinar la dirección de la gran tendencia y utiliza el seguimiento dinámico de los paros ATR para bloquear las ganancias de la tendencia y maximizar los beneficios.

Principio de estrategia

La estrategia se compone principalmente de las siguientes partes:

  1. La EMA también se mostró moderada con respecto a la tendencia.

El uso de líneas de 13, 50 y 100 días constituye una perspectiva pluralista para determinar la dirección de las principales tendencias.

  1. Deterioro dinámico del ATR

Utiliza el indicador ATR para calcular el rango de cambio de precios durante el ciclo, para establecer el punto de parada y lograr el stop loss.

  1. La señal es suave.

El SMA para el cierre de la línea K se suaviza con un cierto ciclo para evitar señales falsas.

  1. Señales de aire libre

Haga más cuando el precio cruza la línea media EMA arriba, y haga vacío cuando el precio cruza la línea media EMA abajo. Y configure el ATR para detener el seguimiento dinámico de pérdidas.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. El control de retracción es excelente, el máximo retracción se puede controlar dentro del 160%.
  2. El seguimiento del stop loss es más inteligente que el stop loss fijo y puede bloquear más tendencias para obtener ganancias.
  3. Utiliza la EMA para determinar la dirección de las tendencias principales y evitar inversiones.
  4. La línea K es suave, puede filtrar falsas señales y aumentar la tasa de éxito.

Análisis de riesgos

La estrategia también tiene ciertos riesgos:

  1. La configuración de parámetros fijos puede no ser adecuada para diferentes variedades y requiere optimización.
  2. En caso de temblor, puede ocurrir un salto paralizado.
  3. Se necesita soporte de estabilidad del servidor para evitar que se pierda la señal.

Se pueden reducir estos riesgos mediante la optimización de parámetros y pruebas de adaptabilidad.

Dirección de optimización

La estrategia se puede optimizar en las siguientes direcciones:

  1. Optimización automática de los parámetros mediante algoritmos de aprendizaje automático.
  2. Incrementar el mecanismo de amortización de pérdidas, adaptado a las condiciones del mercado.
  3. Aumentar las condiciones de selección combinadas y mejorar la estabilidad de las estrategias.
  4. Considerar pruebas entre variedades para mejorar la adaptabilidad de las estrategias.

Resumir

La estrategia en general es una estrategia cuantitativa basada en el diseño de la idea de seguimiento de tendencias. Utiliza EMA para determinar la dirección de la tendencia y, al mismo tiempo, utiliza ATR para realizar un alto inteligente. Puede controlar eficazmente el retroceso y obtener ganancias de la tendencia.

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

//@version=4
strategy("Combined Strategy", overlay=true)

// Input variables for EMA Crossover
ema13_length = input(13, title="EMA 13 Length")
ema50_length = input(50, title="EMA 50 Length")
ema100_length = input(100, title="EMA 100 Length")
ema200_length = input(200, title="EMA 200 Length")

// Calculate EMAs for EMA Crossover
ema13 = ema(close, ema13_length)
ema50 = ema(close, ema50_length)
ema100 = ema(close, ema100_length)
ema200 = ema(close, ema200_length)

// Plot EMAs for EMA Crossover
plot(ema13, color=color.blue, title="EMA 13")
plot(ema50, color=color.orange, title="EMA 50")
plot(ema100, color=color.green, title="EMA 100")
plot(ema200, color=color.red, title="EMA 200")

// Input variables for LinReg Candles
signal_length = input(title="Signal Smoothing", type=input.integer, minval=1, maxval=200, defval=11)
sma_signal = input(title="Simple MA (Signal Line)", type=input.bool, defval=true)

lin_reg = input(title="Lin Reg", type=input.bool, defval=true)
linreg_length = input(title="Linear Regression Length", type=input.integer, minval=1, maxval=200, defval=11)

// Calculate LinReg Candles
bopen = lin_reg ? linreg(open, linreg_length, 0) : open
bhigh = lin_reg ? linreg(high, linreg_length, 0) : high
blow = lin_reg ? linreg(low, linreg_length, 0) : low
bclose = lin_reg ? linreg(close, linreg_length, 0) : close

r = bopen < bclose

signal = sma_signal ? sma(bclose, signal_length) : ema(bclose, signal_length)

plotcandle(r ? bopen : na, r ? bhigh : na, r ? blow: na, r ? bclose : na, title="LinReg Candles", color=color.green, wickcolor=color.green, bordercolor=color.green, editable=true)
plotcandle(r ? na : bopen, r ? na : bhigh, r ? na : blow, r ? na : bclose, title="LinReg Candles", color=color.red, wickcolor=color.red, bordercolor=color.red, editable=true)

plot(signal, color=color.white)

// Input variables for UT Bot Alerts
a = input(1, title="Key Value. 'This changes the sensitivity'")
c = input(10, title="ATR Period")
h = input(false, title="Signals from Heikin Ashi Candles")

// Calculate UT Bot Alerts
xATR = atr(c)
nLoss = a * xATR

src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=false) : close

xATRTrailingStop = 0.0
xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss),
   iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss), 
   iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss)))

pos = 0   
pos := iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1,
   iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 

xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue 

ema = ema(src,1)
above = crossover(ema, xATRTrailingStop)
below = crossover(xATRTrailingStop, ema)

buy = src > xATRTrailingStop and above 
sell = src < xATRTrailingStop and below

barbuy = src > xATRTrailingStop 
barsell = src < xATRTrailingStop 

strategy.entry("Buy", strategy.long, when=buy)
strategy.close("Buy", when=sell)
strategy.entry("Sell", strategy.short, when=sell)
strategy.close("Sell", when=buy)

plotshape(buy, title="Buy", text='Buy', style=shape.labelup, location=location.belowbar, color=color.green, textcolor=color.white, transp=0, size=size.tiny)
plotshape(sell, title="Sell", text='Sell', style=shape.labeldown, location=location.abovebar, color=color.red, textcolor=color.white, transp=0, size=size.tiny)

barcolor(barbuy ? color.green : na)
barcolor(barsell ? color.red : na)

alertcondition(buy, "UT Long", "UT Long")
alertcondition(sell, "UT Short", "UT Short")