Estrategia de seguimiento de tendencia de la media móvil del canal dinámico

El autor:¿ Qué pasa?, Fecha: 2024-02-22 15:51:48
Las etiquetas:

img

Resumen general

Esta estrategia está diseñada basándose en el principio de canal dinámico y seguimiento de tendencia de la media móvil. Cálcula el canal dinámico de precios, juzga la dirección de la tendencia a través de los rieles superiores e inferiores del canal y genera señales comerciales combinando el promedio móvil para filtrar la volatilidad de precios. Esta estrategia es adecuada para el comercio de tendencias a medio y corto plazo.

Principio

Los principios principales de esta estrategia son los siguientes:

  1. Calcular el canal de precios dinámico. La línea media del canal se calcula a partir del precio más alto y el precio más bajo. El carril superior es la línea media + volatilidad de precios MA, y el carril inferior es la línea media - volatilidad de precios MA.

  2. Cuando el precio rompe la línea superior, se define como alcista.

  3. Filtrar el ruido: utilizar el MA de volatilidad de precios de un cierto período para filtrar el ruido de las fluctuaciones aleatorias de precios.

  4. Generar señales de trading. Cuando el precio es alcista, se genera una señal de compra cuando el precio de cierre es inferior al precio de apertura en ese período. Cuando el precio es bajista, se genera una señal de venta cuando el precio de cierre es superior al precio de apertura.

Ventajas

Las ventajas de esta estrategia son:

  1. El canal dinámico puede capturar la tendencia del precio en tiempo real.
  2. El filtro MA puede reducir las señales falsas.
  3. La combinación de la dirección de la tendencia y la dirección de la entidad de la línea K para generar señales comerciales evita quedar atrapado.

Los riesgos

Los riesgos de esta estrategia son:

  1. La selección incorrecta de Param puede conducir a un sobreajuste.
  2. Es fácil generar señales erróneas durante la volatilidad lateral.
  3. No puede predecir fluctuaciones extremas de precios.

Soluciones:

  1. Estricta selección y pruebas de Param.
  2. Añadir las condiciones del filtro para identificar lados.
  3. Establecer el stop loss/profit para controlar los riesgos.

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Estabilidad de ensayo de diferentes parámetros de período.
  2. Añadir indicadores de VOLUMO o volatilidad para evaluar el impulso.
  3. Combinar bandas, canales, etc. para determinar la entrada y salida.

Resumen de las actividades

Esta estrategia integra las ideas de juicio de tendencia dinámico de canal y MA, y tiene un buen rendimiento en la captura de direcciones de tendencia a mediano y corto plazo.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Strategy v1.0", shorttitle = "NoroBands str 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
color = input(true, "Color")
needbb = input(false, defval = false, title = "Show Bands")
needbg = input(false, defval = false, title = "Show Background")
src = close

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

//dist
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma

//Trend
trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 90)

//up =  and trend == 1 ? 1 : 0
//dn =  and trend == -1 ? 1 : 0 

up = close < hd and trend == 1 and (close < open or color == false) ? 1 : 0
dn = close > ld and trend == -1 and (close > open or color == false) ? 1 : 0 

longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)

Más.