Estrategia de entrada unilateral basada en la media móvil

El autor:¿ Qué pasa?, Fecha: 2023-12-25 14:09:49
Las etiquetas:

img

Resumen general

Esta estrategia calcula diferentes tipos de promedios móviles para determinar la dirección de la tendencia del precio e implementar una entrada unilateral.

Principio de la estrategia

La estrategia permite seleccionar entre 7 tipos diferentes de promedios móviles, incluyendo promedio móvil simple (SMA), promedio móvil exponencial (EMA), promedio móvil ponderado por volumen (VWMA), promedio móvil exponencial doble (DEMA), promedio móvil exponencial triple (TEMA), promedio móvil adaptativo de Kaufman (KAMA) y línea media del canal de precios.

Cuando el precio de cierre rompe la línea media móvil hacia arriba, se juzga como una tendencia alcista y se abre una posición larga. Cuando el precio de cierre rompe la línea media móvil hacia abajo, se juzga como una tendencia bajista y se abre una posición corta. Esto puede capturar puntos de inflexión en la tendencia del precio y lograr una entrada unilateral.

Análisis de ventajas

Las ventajas de esta estrategia son:

  1. Se pueden seleccionar varios tipos de medias móviles para facilitar su adaptación a diferentes productos y ciclos.

  2. La entrada de un solo lado puede controlar los riesgos de manera efectiva.

  3. Entrar en la dirección de tendencia es fácil de ganar.

  4. Es fácil de entender y aplicar.

Análisis de riesgos

También hay algunos riesgos con esta estrategia:

  1. Cuando el precio oscila alrededor de la línea media móvil, habrá múltiples señales falsas y posiciones de entrada inversa.

  2. No se pueden evitar por completo los riesgos causados por movimientos rápidos de los precios hacia arriba o hacia abajo.

  3. El analista debe seleccionar los parámetros de media móvil adecuados.

Direcciones de optimización

La estrategia se puede optimizar a partir de los siguientes aspectos:

  1. Combinar con otros indicadores técnicos como MACD, RSI para juzgar la señal de tendencia y formar una combinación comercial.

  2. Añadir una lógica de stop loss, como la de stop loss de seguimiento o la de stop loss de orden pendiente.

  3. Prueba y optimiza parámetros como el período promedio móvil, tipo promedio móvil para encontrar la combinación óptima de parámetros.

  4. Considere utilizar el tipo de orden MarketIfTouched para la entrada, para seguir la tendencia.

Resumen de las actividades

La estrategia determina la dirección de la tendencia del precio basada en promedios móviles e implementa una entrada de un solo lado. Es simple de usar e implementar, y puede controlar los riesgos de manera efectiva. Pero también hay riesgos de señales falsas y entradas inversas. Se puede mejorar continuamente combinando otros indicadores de señal, optimizando parámetros, agregando stop loss, para hacer que la estrategia sea más estable y confiable.


/*backtest
start: 2023-11-24 00:00:00
end: 2023-12-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's MAs Tests v1.1", shorttitle = "MAs tests 1.1", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

needlong = input(true, "long")
needshort = input(true, "short")
len = input(30, defval = 30, minval = 2, maxval = 1000, title = "MA length")
type = input(1, defval = 1, minval = 1, maxval = 7, title = "Type")
src = input(close, defval = close, title = "Source")
anti = input(true, defval = true, title = "Antipila")

//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)

//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3

//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
kama = nz(kama[1]) + nsmooth * (src - nz(kama[1]))

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0

plot(ma, color = blue, linewidth = 3, transp = 0)

trend = anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1]

longCondition = trend == 1 and trend[1] == -1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = trend == -1 and trend[1] == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
    
    
    

Más.