En la carga de los recursos... Cargando...

Una tendencia que sigue una estrategia basada en los canales de Keltner

El autor:¿ Qué pasa?, Fecha: 2023-11-28 11:50:09
Las etiquetas:

img

Resumen general

Esta estrategia está diseñada sobre la base del indicador Keltner Channel de gráficos de velas para rastrear las tendencias al juzgar las rupturas de precios de las bandas de canales.

Estrategia lógica

El núcleo de esta estrategia radica en la construcción de un canal de Keltner para juzgar las tendencias de los precios y los niveles de soporte / resistencia potenciales. Específicamente, primero calcula la línea EMA de los candelabros, luego agrega las bandas superior e inferior a una distancia de keltnerDeviation veces la volatilidad ATR para construir el canal de Keltner. Cuando el precio se rompe por encima de la banda inferior, se abre una posición larga. Cuando el precio se rompe por debajo de la banda superior, se abre una posición corta para seguir las tendencias. Además, la estrategia también proporciona un parámetro closeOnEMATouch para controlar si se debe obtener ganancias cuando el precio toca la línea EMA.

La lógica clave se centra en tres partes:

  1. Construir el indicador del canal de Keltner, incluido el cálculo de la EMA, la volatilidad del ATR, las bandas superior e inferior.

  2. Juzgar las señales de entrada en función de las rupturas de las bandas de canal, incluida la compra larga cuando el precio se rompe por encima de la banda inferior y la compra corta cuando el precio se rompe por debajo de la banda superior.

  3. Proporcione el parámetro closeOnEMATouch para controlar si se obtiene ganancia cuando el precio toca la línea EMA.

Al combinar estas tres partes, se implementa una estrategia de negociación de tendencia basada en indicadores de canal.

Análisis de ventajas

En comparación con las estrategias de stop loss móviles tradicionales, esta estrategia tiene las siguientes ventajas principales:

  1. Puede seguir eficazmente las tendencias del mercado y la dirección general.

  2. Los períodos de retención a medio plazo relativamente largos evitan una negociación demasiado frecuente.

  3. Al tener en cuenta la volatilidad, tiene un cierto efecto filtrante frente a las condiciones anormales del mercado.

  4. Proporciona mecanismos de control de riesgos a través del stop loss.

Por lo tanto, esta estrategia es muy adecuada para los operadores cuantitativos que tienen juicios precisos sobre las tendencias del mercado y persiguen una alta utilización del capital.

Análisis de riesgos

A pesar de sus ventajas, la estrategia también se enfrenta a algunos riesgos clave en el comercio real:

  1. La inversión repentina y violenta de la tendencia representa el mayor riesgo, que puede penetrar el punto de stop loss y causar enormes pérdidas.

  2. El precio puede oscilar dentro del canal y desencadenar una stop loss repetidamente.

  3. La alta frecuencia de negociación puede tener un impacto grave en las ganancias derivadas de los costes de negociación y el deslizamiento.

Para controlar estos riesgos, podemos ajustar los parámetros para hacer que el rango del canal sea más razonable, elegir productos con fluctuaciones de precios más pequeñas o ampliar adecuadamente la distancia de stop loss.

Direcciones de optimización

Teniendo en cuenta los riesgos potenciales, podemos optimizar aún más la estrategia en los siguientes aspectos:

  1. Aumentar la diversidad de métodos de stop loss. Actualmente sólo se proporciona el método closeOnEMATouch. Podemos introducir más indicadores auxiliares de stop loss para un control de riesgos más completo y multidimensional.

  2. Se pueden introducir métodos más automatizados para optimizar los parámetros para hacer que la configuración del canal de Keltner sea más inteligente y adaptable.

  3. Añadir el control de tamaño de la posición mediante la introducción de módulos de gestión de capital, podemos ajustar dinámicamente las posiciones basadas en las reducciones o la volatilidad del mercado.

  4. Añadir condiciones de filtración: se pueden configurar más filtros auxiliares tanto en la entrada como en la parada de pérdidas para evitar pérdidas innecesarias debido a señales incorrectas.

Resumen de las actividades

En resumen, esta es una típica estrategia de tendencia a mediano plazo basada en indicadores de canal. En comparación con las estrategias de stop loss móviles simples, proporciona una cierta función de ajuste de riesgo a través de factores de volatilidad y puede seguir efectivamente las tendencias para obtener ganancias. Sin embargo, los riesgos de reversión y oscilación aún deben ser observados en el comercio en vivo. La optimización de parámetros, la expansión de los métodos de stop loss y la adición de condiciones de filtrado pueden ayudar a mejorar aún más la estrategia.


/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Keltner bounce from border. No repaint. (by Zelibobla)", shorttitle="Keltner border bounce", overlay=true)

price = open

// build Keltner
keltnerLength = input(defval=20, minval=1, title="Keltner EMA Period Length")
keltnerDeviation = input(defval=2, minval=1, maxval=5, title="Keltner band width (in ATRs)")
closeOnEMATouch = input(type=bool, defval=false, title="Close trade on EMA touch? (less drawdown, but less profit and higher commissions impact)")
EMA = sma(price, keltnerLength)
ATR = atr(keltnerLength)
top = EMA + ATR * keltnerDeviation
bottom = EMA - ATR * keltnerDeviation

buyEntry = crossover(price, bottom)
sellEntry = crossunder(price, top)
plot(EMA, color=aqua,title="EMA")
p1 = plot(top, color=silver,title="Keltner top")
p2 = plot(bottom, color=silver,title="Keltner bottom")
fill(p1, p2)

if ( crossover(price, bottom))
    strategy.entry("BUY", strategy.long, stop=bottom,  comment="BUY")

if( crossover(price,EMA) and closeOnEMATouch )
    strategy.close("BUY")
    
if ( crossunder(price, top))
    strategy.entry("SELL", strategy.short, stop=top,  comment="SELL")
if( crossunder(price, EMA) and  closeOnEMATouch )
    strategy.close("SELL")

Más.