Estrategia de ruptura del canal de media móvil

El autor:¿ Qué pasa?, Fecha: 2023-12-12 17:38:19
Las etiquetas:

img

Resumen general

Esta es una estrategia de ruptura de canal de promedio móvil basada en promedios móviles y canales de rango.

Estrategia lógica

La lógica central de esta estrategia es la siguiente:

  1. Establezca una línea media móvil de cierto período como la línea media.

  2. Establezca las líneas de canal superior e inferior multiplicando la línea media por ciertos porcentajes. La línea superior es la línea media * (100% + porcentaje preestablecido). La línea inferior es la línea media * (100% - porcentaje preestablecido).

  3. Cuando el precio se rompe por encima de la línea superior, ir corto. Cuando el precio se rompe por debajo de la línea inferior, ir largo.

  4. Establecer los precios de las órdenes en las líneas superior/inferior correspondientes.

  5. Cierre posiciones cuando el precio vuelva a la línea media.

Así que se negocia en base a las rupturas del canal de media móvil.

Análisis de ventajas

Las ventajas de esta estrategia son:

  1. Concepto simple y claro, fácil de entender e implementar.

  2. Parámetros ajustables para adaptarse a las diferentes condiciones del mercado.

  3. La línea media y el rango del canal pueden filtrar el ruido del mercado y detectar tendencias.

  4. Control de riesgos de órdenes limitadas.

  5. Reduzca las pérdidas cuando el precio vuelva a la línea media.

Análisis de riesgos

También hay algunos riesgos:

  1. La configuración incorrecta de los parámetros puede provocar una operación excesiva o insuficiente.

  2. Alta probabilidad de fuga falsa y stop loss.

  3. Fallo de las líneas medias y canales bajo grandes oscilaciones del mercado.

  4. Salida prematura cuando se vio obligado a cerrar en la línea media.

Soluciones:

  1. Optimizar parámetros como el período de MA y el porcentaje de canal.

  2. Añadir otros indicadores como el volumen para evitar falsas rupturas.

  3. Aumentar la intervención manual.

  4. Utilice un período de admisión más largo y un rango de canales más amplio.

Optimización

La estrategia puede mejorarse en los siguientes aspectos:

  1. Agregue métodos de stop loss como el stop de trailing para limitar las pérdidas.

  2. Añadir indicadores de filtrado como el MACD para reducir las señales falsas.

  3. Habilitar la optimización automática de parámetros.

  4. Añadir más criterios de posición abierta más allá de la ruptura.

  5. Optimice los parámetros de MA y canal.

Conclusión

En conclusión, esta es una estrategia práctica de ruptura del canal MA. Tiene una lógica simple para un uso fácil, mientras que el rango del canal puede filtrar el ruido. Tiene un buen rendimiento en los mercados de tendencia. Pero existen riesgos y los parámetros junto con filtros adicionales necesitan optimización para el comercio real. La estrategia tiene cierto valor práctico y de desarrollo.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-08-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Robot WhiteBox ShiftMA", shorttitle = "Robot WhiteBox ShiftMA", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
per = input(3, title = "Length")
src = input(ohlc4, title = "Source")
shortlevel = input(10.0, title = "Short line (red)")
longlevel = input(-5.0, title = "Long line (lime)")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//SMAs
sma = sma(src, per) 
shortline = sma * ((100 + shortlevel) / 100)
longline = sma * ((100 + longlevel) / 100)
plot(shortline, linewidth = 2, color = red, title = "Short line")
plot(sma, linewidth = 2, color = blue, title = "SMA line")
plot(longline, linewidth = 2, color = lime, title = "Long line")

//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if (not na(close[per])) and size == 0 and needlong
    strategy.entry("L", strategy.long, lot, limit = longline)
    
if (not na(close[per])) and size == 0 and needshort
    strategy.entry("S", strategy.short, lot, limit = shortline)
    
if (not na(close[per])) and size > 0 
    strategy.entry("Close", strategy.short, 0, limit = sma)
    
if (not na(close[per])) and size < 0 
    strategy.entry("Close", strategy.long, 0, limit = sma)

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Más.