Estrategia de comercio de tortugas

El autor:¿ Qué pasa?, Fecha: 2023-12-25 17:12:05
Las etiquetas:

img

Resumen general

La Estrategia de Comercio de Tortuga es una estrategia de seguimiento de tendencias que rastrea las rupturas de impulso. Fue desarrollada por el famoso comerciante Richard Dennis en la década de 1980 para demostrar que los comerciantes podrían ser alimentados por reglas en lugar de nacer. La idea central de la estrategia es rastrear las rupturas de precios y seguir las tendencias, al tiempo que se adhieren estrictamente a los principios de gestión de dinero para limitar el riesgo de caída.

Estrategia lógica

La estrategia de trading de tortuga utiliza dos parámetros N y N/2 para construir canales. Específicamente, calcula los precios más altos y más bajos durante los últimos N días y N/2 días. Cuando el precio excede el canal de N días, se establece una posición larga. Cuando el precio cae por debajo del canal de N/2 días, la posición se cierra. Del mismo modo, cuando el precio rompe el canal de N días hacia la baja, se establece una posición corta y se cierra cuando el precio se eleva por encima del canal de N/2 días. El objetivo es seguir las tendencias del precio mientras se controla el riesgo.

En el código, N corresponde aenter_slowy N/2 corresponde aenter_fastLos precios más altos (slowLyfastL) y los precios más bajos (slowSyfastSLas posiciones largas se abren cuando el precio excede el canal de 55 días (enterL2) y se cierra cuando el precio cae por debajo del canal de 20 días (exitL1Las posiciones cortas se abren cuando el precio rompe el canal de 55 días a la baja (enterS2) y se cierra cuando el precio se eleva por encima del canal de 20 días (exitS1).

Análisis de ventajas

La mayor ventaja de la estrategia de negociación de tortuga es el control del riesgo. Al establecer posiciones en las rupturas de precios y detener rápidamente los retrocesos, controla eficazmente las pérdidas en operaciones individuales.

Otra ventaja es la simple selección de parámetros. Toda la estrategia tiene solo 4 parámetros que son fáciles de entender y ajustar. Los parámetros mismos también son bastante estables, sin necesidad de optimización frecuente.

Análisis de riesgos

El mayor riesgo de la Estrategia de Comercio de Tortuga es la incapacidad de rastrear las tendencias a largo plazo. Puede perder oportunidades de entrada cuando las tendencias comienzan a formarse. Además, en entornos de oscilación de precios agitados, la estrategia desencadenará entradas y salidas frecuentes, aumentando los costos de transacción y los riesgos de deslizamiento.

Además, los parámetros fijos podrían funcionar de manera muy diferente según los productos y los regímenes del mercado, lo que requiere un ajuste manual basado en la experiencia.

Oportunidades de mejora

La estrategia de comercio de tortugas puede mejorarse de varias maneras:

  1. Añadir capacidades de adaptación a los parámetros N y N/2 basados en la volatilidad del mercado y la frecuencia de la señal para hacer que el sistema sea más robusto en todos los escenarios.

  2. Incorporar reglas de detección de tendencias antes de la entrada para evitar entradas equivocadas en mercados agitados.

  3. Adoptar un enfoque de varios plazos para confirmar las tendencias en períodos más altos y realizar operaciones en períodos más bajos.

  4. Optimizar las reglas de stop loss con trailing stops o stops basados en el tiempo para reducir los drawdowns.

Conclusión

La estrategia de trading de tortuga rastrea de manera efectiva las tendencias mediante un sistema de breakout simple. El control de riesgos es su mayor fortaleza, gracias a paradas rápidas y tamaño de posición fraccionario fijo. Al mismo tiempo, vemos múltiples dimensiones a lo largo de las cuales la estrategia se puede extender y optimizar para adaptarse a más instrumentos y condiciones de mercado. En general, proporciona una forma controlada por el riesgo para capturar las tendencias de precios que es una referencia importante para la negociación cuantitativa.


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

//@version=2
//oringinally coded by tmr0, modified by timchep
//original idea from «Way of the Turtle: The Secret Methods that Turned Ordinary People into Legendary Traders» (2007) CURTIS FAITH
strategy("Turtles", shorttitle = "Turtles", overlay=true, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100)
//////////////////////////////////////////////////////////////////////
// Component Code Start
testStartYear = input(2011, "Backtest Start Year")
testStartMonth = input(12, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=false)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop
//////////////////////////////////////////////////////////////////////

shortingEnabled = input(title="Enable Shorting?", type=bool, defval=true)

enter_fast = input(20, minval=1)
exit_fast = input(10, minval=1)
enter_slow = input(55, minval=1)
exit_slow = input(20, minval=1)

fastL = highest(enter_fast)
fastLC = lowest(exit_fast)
fastS = lowest(enter_fast)
fastSC = highest(exit_fast)

slowL = highest(enter_slow)
slowLC = lowest(exit_slow)
slowS = lowest(enter_slow)
slowSC = highest(exit_slow)

enterL1 = high > fastL[1] 
exitL1 = low <= fastLC[1] 
enterS1 = low < fastS[1]
exitS1 = high >= fastSC[1]

enterL2 = high > slowL[1] 
exitL2 = low <= slowLC[1] 
enterS2 = low < slowS[1]
exitS2 = high >= slowSC[1]


if testPeriod()
    strategy.entry("fast L", strategy.long, when = enterL1) 
    
    if not enterL1
        strategy.entry("slow L", strategy.long, when = enterL2)
        
    strategy.close("fast L", when = exitL1)
    strategy.close("slow L", when = exitL2)

if shortingEnabled and testPeriod()
    strategy.entry("fast S", strategy.short, when = enterS1)
    if not enterS2
        strategy.entry("slow S", strategy.short, when = enterS2)
        
    strategy.close("fast S", when = exitS1)
    strategy.close("slow S", when = exitS2)

Más.