Ventaja del sistema de seguimiento de tendencia de la media móvil de ruptura

El autor:¿ Qué pasa?, Fecha: 2023-11-15 11:00:25
Las etiquetas:

img

Resumen general

Este es un sistema clásico de seguimiento de tendencias. Utiliza cruces de promedios móviles para determinar la dirección de la tendencia y entra cuando el precio rompe con los canales de Donchian. El parámetro del canal de Donchian se establece en 50 días para filtrar el ruido del mercado a corto plazo. Los promedios móviles son promedios móviles exponenciales de 40 días y 120 días, que pueden capturar mejor las tendencias a medio y largo plazo.

Estrategia lógica

La estrategia se basa principalmente en los siguientes puntos:

  1. Los promedios móviles exponenciales de 40 días y 120 días se utilizan para construir un indicador de determinación de tendencia. Cuando la línea rápida cruza por encima de la línea lenta desde abajo, es una señal de cruz dorada, que indica una tendencia alcista. Cuando la línea rápida cruza por debajo de la línea lenta desde arriba, es una señal de cruz de muerte, que indica una tendencia bajista.

  2. El parámetro del canal de Donchian está establecido en 50 días para filtrar el ruido del mercado.

  3. El stop loss se establece en 4x ATR por debajo del precio. ATR puede medir efectivamente la volatilidad y el riesgo del mercado.

  4. Las medias móviles exponenciales se adaptan mejor a las tendencias actuales de precios, mientras que las medias móviles simples son demasiado suaves.

  5. El período de canal de 50 días funciona bien con las medias móviles de 40 días y 120 días para filtrar eficazmente las fallas.

Análisis de ventajas

Las ventajas de esta estrategia incluyen:

  1. La combinación de promedios móviles puede determinar eficazmente la dirección de la tendencia del mercado.

  2. El canal de Donchian filtra el ruido y evita perseguir los picos y los fondos.

  3. La configuración de stop loss es razonable para controlar las pérdidas en operaciones individuales y evitar las explosiones de cuentas.

  4. Las medias móviles exponenciales se adaptan mejor a las tendencias de cambio de precios, lo que permite períodos de retención más largos que se ajustan a la idea de negociación de tendencia.

  5. Los parámetros de la media móvil logran un equilibrio entre la sensibilidad de captura de tendencia y la estabilidad del filtro de ruido.

Análisis de riesgos

Los riesgos de esta estrategia incluyen:

  1. Riesgo de largo periodo de tenencia: como estrategia de tendencia, pueden producirse grandes pérdidas durante intervalos laterales prolongados o inversiones de tendencia.

  2. Riesgo de ruptura falsa: puede haber un cierto porcentaje de rupturas falsas cuando el precio toca cerca de las bandas del canal, causando operaciones innecesarias.

  3. Parámetros que establecen el riesgo: los parámetros para las medias móviles y los canales son subjetivos. Los diferentes mercados necesitan combinaciones ajustadas, de lo contrario la estabilidad del sistema se ve afectada.

  4. Riesgo de stop loss demasiado ajustado: establecer el stop loss demasiado ajustado puede dar lugar a demasiados stop out, lo que afecta a la rentabilidad.

Soluciones:

  1. Determinar los períodos de retención con precaución para evitar los riesgos de los períodos de retención largos.
  2. Optimizar los parámetros para hacer que las señales de fuga sean más estables y confiables.
  3. Prueba de datos de diferentes mercados y optimiza las combinaciones de parámetros.
  4. Las paradas deben ser relajadas razonablemente para evitar paradas demasiado frecuentes.

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Prueba diferentes combinaciones de promedios móviles para encontrar los parámetros óptimos.

  2. Optimizar el período y la configuración del canal para hacer que las señales de ruptura sean más efectivas.

  3. Optimice la estrategia de stop loss. Adopte las paradas de seguimiento durante los períodos de tendencia y las paradas fijas después del final de la tendencia.

  4. Añadir indicadores de confirmación como MACD, KD para mejorar la precisión de la señal.

  5. Introduzca estrategias de posicionamiento, pirámide durante los períodos de tendencia para optimizar las ganancias.

  6. Seleccionar combinaciones de parámetros de acuerdo con las diferentes características del producto para hacer que el sistema sea más robusto.

Conclusión

En general, este es un sistema típico y simple de seguimiento de tendencias. El núcleo radica en el uso de promedios móviles y rupturas de canal. La estrategia de stop loss también es clásica y práctica. La estrategia puede funcionar como un marco básico para el desarrollo de sistemas cuánticos, y también se puede implementar directamente para obtener ganancias relativamente estables. Una optimización adicional a través de pruebas puede mejorar la estabilidad y rentabilidad del sistema. En resumen, la estrategia presenta facilidad de uso y versatilidad, lo que la hace adecuada como una estrategia comercial cuantitativa fundamental.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Robrecht99

//@version=5
strategy("Long Term Trend Following System", overlay=true, margin_long=0, margin_short=0, pyramiding=4)

// Backtest Range //

Start = input(defval = timestamp("01 Jan 2017 00:00 +0000"), title = "Backtest Start Date", group = "backtest window")
Finish = input(defval = timestamp("01 Jan 2100 00:00 +0000"), title = "Backtest End Date", group = "backtest window")

//Moving Averages //

len1 = input.int(40, minval=1, title="Length Fast EMA", group="Moving Average Inputs")
len2 = input.int(120, minval=1, title="Length Slow EMA", group="Moving Average Inputs")
src1 = input(close, title="Source Fast MA")
src2 = input(close, title="Source Slow MA")
maFast = input.color(color.new(color.red, 0), title = "Color Fast EMA", group = "Moving Average Inputs", inline = "maFast")
maSlow = input.color(color.new(color.blue, 0), title = "Color Slow EMA", group = "Moving Average Inputs", inline = "maSlow")
fast = ta.ema(src1, len1)
slow = ta.ema(src2, len2)
plot(fast, color=maFast, title="Fast EMA")
plot(slow, color=maSlow, title="Slow EMA")

// Donchian Channels //

Length1 = input.int(title="Length Upper Channel", defval=50, minval=1, group="Donchian Channels Inputs")
Length2 = input.int(title="Length Lower Channel", defval=50, minval=1, group="Donchian Channels Inputs")
h1 = ta.highest(high[1], Length1)
l1 = ta.lowest(low[1], Length2)
fillColor = input.color(color.new(color.purple, 95), title = "Fill Color", group = "Donchian Channels Inputs")
upperColor = input.color(color.new(color.orange, 0), title = " Color Upper Channel", group = "Donchian Channels Inputs", inline = "upper")
lowerColor = input.color(color.new(color.orange, 0), title = " Color Lower Channel", group = "Donchian Channels Inputs", inline = "lower")
u = plot(h1, "Upper", color=upperColor)
l = plot(l1, "Lower", color=upperColor)
fill(u, l, color=fillColor)
strategy.initial_capital = 50000
//ATR and Position Size //

length = input.int(title="ATR Period", defval=14, minval=1, group="ATR Inputs")
risk = input(title="Risk Per Trade", defval=0.01, group="ATR Inputs")
multiplier = input(title="ATR Multiplier", defval=2, group="ATR Inputs")
atr = ta.atr(length)
amount = (risk * strategy.initial_capital / (multiplier * atr))

// Buy and Sell Conditions //

entrycondition1 = ta.crossover(fast, slow)
entrycondition2 = fast > slow
sellcondition1 = ta.crossunder(fast, slow)
sellcondition2 = slow > fast

// Buy and Sell Signals //

if (close > h1 and entrycondition2)
    strategy.entry("long", strategy.long, qty=amount)
    stoploss = close - atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (sellcondition1 and sellcondition2)
    strategy.close(id="long")

if (close < l1 and sellcondition2)
    strategy.entry("short", strategy.short, qty=amount)
    stoploss = close + atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (entrycondition1 and entrycondition2)
    strategy.close(id="short")

Más.