Estrategia de trading de reversión de ruptura de canal


Fecha de creación: 2024-02-19 15:12:44 Última modificación: 2024-02-19 15:12:44
Copiar: 0 Número de Visitas: 603
1
Seguir
1617
Seguidores

Estrategia de trading de reversión de ruptura de canal

Descripción general

La estrategia de inversión de ruptura de canal es una estrategia de inversión de movimiento de stop-loss que sigue el canal de precios. Utiliza el método de las medias móviles ponderadas para calcular el canal de precios y establece posiciones excedentarias o vacantes cuando el precio se rompe el canal.

Principio de estrategia

La estrategia primero calcula la volatilidad de los precios utilizando el indicador de la Rango Real Medio de Wilder (ATR). Luego calcula la constante de rango medio (ARC) en función del valor de ATR. ARC es la mitad del ancho del canal de precios. Luego calcula el tren superior y el tren inferior del canal, el punto de parada y pérdida, llamado punto SAR.

Concretamente, primero se calcula el ATR de la línea N-K más reciente. Luego se obtiene el ARC multiplicado por un coeficiente ATR. El ARC multiplicado por el coeficiente puede controlar el ancho de la vía. El ARC sumado al punto más alto de cierre en la línea N-K se obtiene la subida de la vía, es decir, el SAR alto.

Ventajas estratégicas

  1. Utilizando el cálculo de la volatilidad de los precios, el canal de adaptación puede seguir los cambios en el mercado
  2. Las inversiones en inversiones, para los mercados de inversiones
  3. Stop Loss móvil para bloquear ganancias y controlar el riesgo

Riesgo estratégico

  1. Las inversiones invertidas son susceptibles a estafas y requieren un ajuste adecuado de los parámetros.
  2. Fácil de cerrar posiciones en mercados muy volátiles
  3. Los parámetros incorrectos pueden causar transacciones demasiado frecuentes

La solución:

  1. Optimización del ciclo ATR y el coeficiente ARC para hacer razonable el ancho de la vía
  2. El filtro de los indicadores de tendencia en combinación con el tiempo de entrada
  3. Aumentar el ciclo de ATR y reducir la frecuencia de las transacciones

Dirección de optimización de la estrategia

  1. Optimización del ciclo ATR y el coeficiente ARC
  2. Aumentar las condiciones de apertura, por ejemplo, en combinación con el indicador MACD
  3. Aumentar las estrategias de alto riesgo

Resumir

La estrategia de inversión de ruptura de canal utiliza el canal para rastrear los cambios en los precios, invertir las posiciones cuando la volatilidad se agrava y establecer un stop loss móvil adaptado. Esta estrategia se aplica a los mercados de liquidación dominados por la reversión, y se puede obtener un buen retorno de la inversión si se determina con precisión el punto de inflexión.

Código Fuente de la Estrategia
/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//@author=LucF

// Volatility System [LucF]
// v1.0, 2019.04.14

// The Volatility System was created by Welles Wilder.
// It first appeared in his seminal masterpiece "New Concepts in Technical Trading Systems" (1978).
// He describes it on pp.23-26, in the chapter discussing the first presentation ever of the "Volatility Index",
// which later became known as ATR.
// Performance of the strategy usually increases with the time frame.
// Tuning of ATR length and, especially, the ARC factor, is key.

// This code runs as a strategy, which cannot generate alerts.
// If you want to use the alerts it must be converted to an indicator.
// To do so:
//      1. Swap the following 2 lines by commenting the first and uncommenting the second.
//      2. Comment out the last 4 lines containing the strategy() calls.
//      3. Save.
strategy(title="Volatility System by Wilder [LucF]", shorttitle="Volatility System [Strat]", overlay=true, precision=8, pyramiding=0, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1)
// study("Volatility System by Wilder [LucF]", shorttitle="Volatility System", precision=8, overlay=true)

// -------------- Colors
MyGreenRaw = color(#00FF00,0),      MyGreenMedium = color(#00FF00,50),  MyGreenDark = color(#00FF00,75),    MyGreenDarkDark = color(#00FF00,92)
MyRedRaw = color(#FF0000,0),        MyRedMedium = color(#FF0000,30),    MyRedDark = color(#FF0000,75),      MyRedDarkDark = color(#FF0000,90)

// -------------- Inputs
LongsOnly = input(false,"Longs only")
ShortsOnly = input(false,"Shorts only")
AtrLength = input(9, "ATR length", minval=2)
ArcFactor = input(1.8, "ARC factor", minval=0, type=float,step=0.1)
ShowSAR = input(false, "Show all SARs (Stop & Reverse)")
HideSAR = input(false, "Hide all SARs")
ShowTriggers = input(false, "Show Entry/Exit triggers")
ShowTradedBackground = input(false, "Show Traded Background")

FromYear  = input(defval = 2000,    title = "From Year", minval = 1900)
FromMonth = input(defval = 1,      title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1,       title = "From Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999,    title = "To Year", minval = 1900)
ToMonth   = input(defval = 1,       title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1,       title = "To Day", minval = 1, maxval = 31)

// -------------- Date range filtering
FromDate = timestamp(FromYear, FromMonth, FromDay, 00, 00)
ToDate = timestamp(ToYear, ToMonth, ToDay, 23, 59)
TradeDateIsAllowed() => true

// -------------- Calculate Stop & Reverse (SAR) points using Average Range Constant (ARC)
Arc   = atr(AtrLength)*ArcFactor
SarLo = highest(close, AtrLength)-Arc
SarHi = lowest(close, AtrLength)+Arc

// -------------- Entries/Exits
InLong = false
InShort = false
EnterLong = TradeDateIsAllowed() and not InLong[1] and crossover(close, SarHi[1])
EnterShort = TradeDateIsAllowed() and not InShort[1] and crossunder(close, SarLo[1])
InLong := (InLong[1] and not EnterShort[1]) or (EnterLong[1] and not ShortsOnly)
InShort := (InShort[1] and not EnterLong[1]) or (EnterShort[1] and not LongsOnly)

// -------------- Plots
// SAR points
plot( not HideSAR and ((InShort or EnterLong) or ShowSAR)? SarHi:na, color=MyRedMedium, style=circles, linewidth=2, title="SAR High")
plot( not HideSAR and ((InLong or EnterShort) or ShowSAR)? SarLo:na, color=MyGreenMedium, style=circles, linewidth=2, title="SAR Low")
// Entry/Exit markers
plotshape( ShowTriggers and not ShortsOnly and EnterLong, style=shape.triangleup, location=location.belowbar, color=MyGreenRaw, size=size.small, text="")
plotshape( ShowTriggers and not LongsOnly and EnterShort, style=shape.triangledown, location=location.abovebar, color=MyRedRaw, size=size.small, text="")
// Exits when printing only longs or shorts
plotshape( ShowTriggers and ShortsOnly and InShort[1] and EnterLong, style=shape.triangleup, location=location.belowbar, color=MyRedMedium, transp=70, size=size.small, text="")
plotshape( ShowTriggers and LongsOnly and InLong[1] and EnterShort, style=shape.triangledown, location=location.abovebar, color=MyGreenMedium, transp=70, size=size.small, text="")
// Background
bgcolor( color=ShowTradedBackground? InLong and not ShortsOnly?MyGreenDarkDark: InShort and not LongsOnly? MyRedDarkDark:na:na)

// ---------- Alerts
alertcondition( EnterLong or EnterShort, title="1. Reverse", message="Reverse")
alertcondition( EnterLong, title="2. Long", message="Long")
alertcondition( EnterShort, title="3. Short", message="Short")

// ---------- Strategy reversals
strategy.entry("Long", strategy.long, when=EnterLong and not ShortsOnly)
strategy.entry("Short", strategy.short, when=EnterShort  and not LongsOnly)
strategy.close("Short", when=EnterLong and ShortsOnly)
strategy.close("Long", when=EnterShort and LongsOnly)