Estrategia de tortuga de doble canal de escape


Fecha de creación: 2024-01-05 16:16:44 Última modificación: 2024-01-05 16:16:44
Copiar: 1 Número de Visitas: 339
1
Seguir
1166
Seguidores

Estrategia de tortuga de doble canal de escape

Descripción general

La estrategia Turtle es una estrategia de ruptura que utiliza el indicador de la vía Donchian para construir una señal de negociación. Esta estrategia establece una vía rápida y una vía lenta al mismo tiempo, la vía rápida se utiliza para establecer un precio de parada y la vía lenta para generar una señal de apertura y de cierre de posición.

Principio de estrategia

La lógica central de la estrategia de la tortuga de la ruptura de dos canales se basa en el indicador de los canales de Donchian. Los canales de Donchian se calculan a partir de los precios más altos y más bajos, que incluyen el trayecto ascendente, descendente y intermedio. La estrategia crea al mismo tiempo un canal rápido y un canal lento, con parámetros configurados por el usuario, con un ciclo de canal lento predeterminado de 50 líneas K y un ciclo de canal rápido de 20 líneas K.

Los tramos superior y inferior de la vía lenta (la línea azul) se utilizan para generar señales de negociación. Cuando el precio se eleva, se hace más; cuando el precio cae hacia abajo, se cancela. El tramo medio de la vía rápida (la línea roja) se utiliza para detener.

De esta manera, el canal lento es responsable de la generación de señales, el canal rápido es responsable de la parada de pérdidas, y el uso de la combinación de dos canales garantiza la estabilidad de la señal de negociación y controla el riesgo. El color de fondo indica la dirección de la posición actual, el verde es el político y el rojo es el vacante.

Además, la estrategia también establece el grado de riesgo y la gestión de posiciones. El grado de riesgo es el 2% por defecto, y las posiciones se calculan según el grado de riesgo y la fluctuación del canal. De esta manera, se puede controlar eficazmente cada riesgo y aumentar la posición gradualmente.

Análisis de las ventajas

La estrategia de Turtle tiene las siguientes ventajas:

  1. La capacidad de seguir tendencias es fuerte. El uso del canal Donchian para juzgar tendencias permite capturar de manera efectiva las tendencias de línea media y larga. El diseño de doble canal permite que la estrategia solo siga los casos en los que la tendencia es más fuerte.

  2. La retirada y el control del riesgo. El corredor intermedio de la vía rápida es el área de riesgo, desde el corredor superior al corredor intermedio y desde el corredor inferior al corredor intermedio, lo que garantiza que cada pérdida sea controlada. La estrategia también establece un grado de riesgo que limita directamente la pérdida máxima de la cuenta.

  3. La señal de negociación es estable. El canal lento tiene un gran número de parámetros, y la formación del canal requiere un tiempo más largo, lo que evita el comercio frecuente. El canal rápido, como parada de pérdidas, puede capturar ajustes a corto plazo.

  4. La estrategia utiliza la volatilidad del canal Donchian para calcular el tamaño de la posición y controlar el riesgo de la brecha. La adición gradual de posiciones también equilibra las posiciones de las partes con más espacio.

  5. Los indicadores visuales son intuitivos. El doble canal, la línea de parada y el fondo de la posición están claramente trazados, la lógica de la negociación es evidente. Al mismo tiempo, muestran los indicadores clave como la retirada máxima y la pérdida máxima.

Análisis de riesgos

La estrategia de Turtle de hacerse con dos canales también tiene ciertos riesgos:

  1. La estrategia de la tortuga solo abre una posición cuando se rompe un canal y no puede aprovechar una situación más precisa para aumentar la posición. Esto se puede mejorar mediante la optimización.

  2. El punto de parada es fácil de rastrear. El punto de parada de la estrategia Turtle es el medio de la vía rápida fija. En un mercado activo, esto puede ser bloqueado por el punto de parada. Esto requiere un ajuste dinámico de los parámetros del medio.

  3. Los parámetros de doble canal necesitan ser ajustados. Los parámetros de canal se configuran correctamente para generar una señal razonablemente estable. Los parámetros fijos actuales no pueden adaptarse a los cambios en el mercado, por lo que es necesario introducir una función de adaptación.

  4. No se puede utilizar la información sobre el mercado nocturno y el mercado de antes de la apertura. La estrategia actual solo se basa en la tendencia de los mercados reales, y no se puede utilizar el mercado de antes y después de la apertura para guiar las decisiones de negociación. Esto se puede mejorar mediante la corrección de datos.

Dirección de optimización

La estrategia de Turtle para el desbloqueo de dos canales tiene las siguientes direcciones de optimización:

  1. Utiliza el precio en el disco para ajustar la posición. Puede ajustar el tamaño de la posición en el disco en función de la distancia entre el precio y el canal, en lugar de simplemente hacer más decaimiento.

  2. La inteligencia de las estrategias de stop loss aumentadas. La conversión de la trayectoria de stop loss fija a la calculación dinámica evita que los puntos de stop loss sean seguidos por los golpes.

  3. Optimización de los parámetros del canal para que se ajusten automáticamente según las condiciones del mercado, en lugar de establecerlos manualmente.

  4. Aumentar los juicios de mercado antes y después de la apertura. En los juicios de estrategia, no solo se debe referir a los precios de la apertura física, sino también a los precios antes y después de la apertura, para obtener una situación de mercado más completa.

  5. Combinación de operaciones con varias acciones o índices. Aplicación de estrategias a varias acciones. Arbitraje configurable entre diferentes acciones e índices.

Resumir

La estrategia de doble canal para romper la tortuga es una estrategia de seguimiento de tendencias estable, eficiente y con control de riesgo. La estrategia utiliza a la vez una vía rápida y una vía lenta, lo que garantiza la estabilidad de las señales de negociación y la gestión del riesgo. Además, el color de fondo, el máximo retiro y la gestión de la posición hacen que la estrategia sea fácil de administrar y optimizar. En general, la estrategia es una estrategia de alta calidad que vale la pena estudiar y aplicar.

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

//Noro
//2020

//@version=4
strategy("Noro's RiskTurtle Strategy", shorttitle = "RiskTurtle str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1)

//Settings
needlong  = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
risk      = input(2, minval = 0.1, maxval = 99, title = "Risk size, %")
fast      = input(20, minval = 1, title = "Fast channel (for stop-loss)")
slow      = input(50, minval = 1, title = "Slow channel (for entries)")
showof    = input(true, defval = true, title = "Show offset")
showll    = input(true, defval = true, title = "Show lines")
showdd    = input(true, defval = true, title = "Show label (drawdown)")
showbg    = input(true, defval = true, title = "Show background")
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")

//Donchian price channel fast
hf = highest(high, fast)
lf = lowest(low, fast)
center = (hf + lf) / 2

//Donchian price chennal slow
hs = highest(high, slow)
ls = lowest(low, slow)

//Lines
colorpc = showll ? color.blue : na
colorsl = showll ? color.red : na
offset = showof ? 1 : 0
plot(hs, offset = offset, color = colorpc, title = "Slow channel high")
plot(ls, offset = offset, color = colorpc, title = "Slow channel low")
plot(center, offset = offset, color = colorsl, title = "Fast channel stop-loss")

//Background
size = strategy.position_size
colorbg = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(colorbg, transp = 70)

//Var
loss = 0.0
maxloss = 0.0
equity = 0.0
truetime = true

//Lot size
risksize = -1 * risk
risklong = ((center / hs) - 1) * 100
coeflong = abs(risksize / risklong)
lotlong = (strategy.equity / close) * coeflong
riskshort = ((center / ls) - 1) * 100
coefshort = abs(risksize / riskshort)
lotshort = (strategy.equity / close) * coefshort

//Orders
strategy.entry("Long", strategy.long, lotlong, stop = hs, when = needlong and strategy.position_size == 0 and hs > 0 and truetime)
strategy.entry("Short", strategy.short, lotshort, stop = ls, when = needshort and strategy.position_size == 0 and ls > 0 and truetime)
strategy.exit("LongExit", "Long", stop = center, when = needlong and strategy.position_size > 0)
strategy.exit("Short", stop = center, when = needshort and strategy.position_size < 0)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")
    
if showdd

    //Drawdown
    max = 0.0
    max := max(strategy.equity, nz(max[1]))
    dd = (strategy.equity / max - 1) * 100
    min = 100.0
    min := min(dd, nz(min[1]))
    
    //Max loss size
    equity := strategy.position_size == 0 ? strategy.equity : equity[1]
    loss := equity < equity[1] ? ((equity / equity[1]) - 1) * 100 : 0
    maxloss := min(nz(maxloss[1]), loss)
    
    //Label
    min := round(min * 100) / 100
    maxloss := round(maxloss * 100) / 100
    labeltext = "Drawdown: " + tostring(min) + "%" + "\nMax.loss " + tostring(maxloss) + "%"
    var label la = na
    label.delete(la)
    tc = min > -100 ? color.white : color.red
    osx = timenow + round(change(time)*10)
    osy = highest(100)
    // la := label.new(x = osx, y = osy, text = labeltext, xloc = xloc.bar_time, yloc = yloc.price, color = color.black, style = label.style_labelup, textcolor = tc)