Estrategia de retroceso por ruptura del canal de Keltner


Fecha de creación: 2023-12-27 14:49:39 Última modificación: 2023-12-27 14:49:39
Copiar: 0 Número de Visitas: 761
1
Seguir
1621
Seguidores

Estrategia de retroceso por ruptura del canal de Keltner

Descripción general

Esta estrategia diseña una estrategia de retracción basada en el indicador de la vía de Keltner. Esta estrategia compara la relación entre el precio y la subida y bajada de la vía de Keltner para determinar el momento en que el precio puede revertirse y tomar la acción de hacer más o menos apropiada.

Principio de estrategia

Esta estrategia utiliza el indicador de la vía de Keltner para determinar la tendencia de los precios. La vía de Keltner se compone de la línea media y la amplitud real media (ATR). La vía superior es igual a la línea media más N veces la ATR; la vía inferior es igual a la línea media menos N veces la ATR.

Además, la estrategia determina la oportunidad de retracción en función de si el precio vuelve a tocar o si se rompe el límite del canal. Por ejemplo, si el precio sube y se rompe el tren descendente, y luego cae nuevamente sin tocar el tren superior y toca el tren inferior, esta es una oportunidad para hacer más salidas. La estrategia abrirá la posición para hacer más en este momento.

Análisis de las ventajas

Se trata de una estrategia de negociación que aprovecha las características de retracción del precio.

  1. El uso de los canales Keltner para determinar la dirección de la tendencia de los precios puede filtrar el ruido de manera efectiva.
  2. Adoptar estrategias de retroceso que permitan entrar en el campo antes de la vuelta y capturar la mayor cantidad de movimientos.

Análisis de riesgos

Los principales riesgos de esta estrategia son:

  1. Cuando el mercado es unilateral a largo plazo, las oportunidades de retorno pueden ser escasas y no pueden ser rentables.
  2. Si la señal de retorno es inexacta, puede causar pérdidas.

Respuesta:

  1. Optimización de parámetros, ajuste de la anchura del canal, adaptación al entorno del mercado.
  2. La gestión de las posiciones se ha incrementado y las pérdidas individuales se han reducido.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. El filtro de brechas basado en el volumen de transacciones evita falsas brechas.
  2. El tamaño de la posición se ajusta a la volatilidad.
  3. Actualizar los métodos de stop loss y mover los stop loss para bloquear más ganancias.

Resumir

Esta estrategia integra métodos de análisis de tendencias y retracción de operaciones, y tiene una ventaja única en la captura de situaciones de reversión. La estabilidad y la rentabilidad de la estrategia se pueden mejorar aún más mediante el ajuste de parámetros y la extensión de funciones.

Código Fuente de la Estrategia
/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-26 00:00:00
period: 1h
basePeriod: 15m
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 = close

// build Keltner
keltnerLength = input(defval=200, minval=1, title="Keltner EMA Period Length")
keltnerATRLength = input(defval=200, minval=1, title="Keltner ATR Period Length (the same as EMA length in classic Keltner Channels)")
keltnerDeviation = input(defval=8, minval=1, maxval=15, 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)")
enterOnBorderTouchFromInside = input(type=bool, defval=false, title="Enter on border touch from inside? (by default from outside, which is less risky but less profitable)")
SL = input(defval=50, minval=0, maxval=10000, title="Stop loss in ticks (leave zero to skip)")
EMA = sma(price, keltnerLength)
ATR = atr(keltnerATRLength)
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)

tradeSize = input(defval=1, minval=1, title="Trade size")

if ( enterOnBorderTouchFromInside and crossunder(price, bottom) )
    strategy.entry("BUY", strategy.long, qty=tradeSize, comment="BUY")
else
    if( crossover(price, bottom) )
        strategy.entry("BUY", strategy.long, qty=tradeSize, comment="BUY")

if( crossover(price,EMA) and closeOnEMATouch )
    strategy.close("BUY")

if( 0 != SL )
    strategy.exit("EXIT BUY", "BUY", qty=tradeSize, loss=SL)
    strategy.exit("EXIT SELL", "SELL", qty=tradeSize, loss=SL)
   
if( enterOnBorderTouchFromInside and crossover(price, bottom) )
    strategy.entry("SELL", strategy.long, qty=tradeSize, comment="SELL")
else
    if ( crossunder(price, top) )
        strategy.entry("SELL", strategy.short, qty=tradeSize, comment="SELL")
    
    
if( crossunder(price, EMA) and closeOnEMATouch )
    strategy.close("SELL")