Esta es una estrategia de seguimiento de tendencias basada en las reglas de Turtle Trading. La estrategia utiliza ATR (Average True Range) para determinar la dirección de la tendencia y el tamaño de la posición de negociación. Cuando el precio rompe con el precio más alto o más bajo en un cierto período, la estrategia abrirá una posición larga o corta. La posición se mantendrá hasta que el precio rompa con el precio más bajo o más alto en un cierto período, momento en el que la estrategia cerrará la posición.
El núcleo de esta estrategia es utilizar el indicador ATR para determinar la dirección de la tendencia y el tamaño de la posición de negociación. El indicador ATR puede medir la volatilidad del mercado, ayudándonos a determinar los niveles de stop-loss y tamaños de posición apropiados. Los pasos principales de la estrategia son los siguientes:
El uso del indicador ATR nos ayuda a ajustar dinámicamente los tamaños de las posiciones para adaptarnos mejor a la volatilidad del mercado.
Para hacer frente a estos riesgos, se pueden considerar las siguientes soluciones:
A través de las optimizaciones anteriores, la estabilidad y la rentabilidad de la estrategia pueden mejorarse aún más.
La Estrategia de Breakout de Bandas de Bollinger es una estrategia de seguimiento de tendencias basada en las reglas de Turtle Trading. La estrategia utiliza el indicador ATR para determinar la dirección de la tendencia y el tamaño de la posición de negociación, abriendo posiciones cuando el precio se rompe con el precio más alto o más bajo durante un cierto período y manteniendo posiciones hasta que la tendencia se invierta. Las ventajas de la estrategia se encuentran en su capacidad de capturar mercados de tendencia fuerte mientras controla estrictamente el riesgo. Sin embargo, la estrategia también enfrenta riesgos como inversiones de tendencia, mercados agitados y sensibilidad de parámetros. Para mejorar aún más el rendimiento de la estrategia, se pueden considerar optimizaciones en áreas como introducir más indicadores, ajustar dinámicamente los parámetros, incorporar mecanismos de toma de ganancias y optimizar la gestión de posiciones.
/*backtest start: 2023-05-28 00:00:00 end: 2024-06-02 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © luisfeijoo22 //@version=5 strategy("Estrategia de las tortugas_ES", overlay=true, pyramiding=3) // Parámetros atrLength = input.int(20, "Longitud del ATR") atrFactor = input.float(2, "Factor del ATR") entryBreakout = input.int(20, "Breakout de entrada") exitBreakout = input.int(10, "Breakout de salida") longOnly = input.bool(false, "Solo largos") shortOnly = input.bool(false, "Solo cortos") // Cálculo del ATR atr = ta.atr(atrLength) // Cálculo de los niveles de breakout longEntry = ta.highest(high, exitBreakout)[1] longExit = ta.lowest(low, exitBreakout)[1] shortEntry = ta.lowest(low, exitBreakout)[1] shortExit = ta.highest(high, exitBreakout)[1] // Cálculo del tamaño de la posición nContracts = math.floor((strategy.equity * 0.01) / (atrFactor * atr)) // Filtra las fechas según el rango deseado // in_range = time >= timestamp(year(start_date), month(start_date), dayofmonth(start_date)) // Condiciones de entrada y salida longCondition = not longOnly and close > longEntry and time >= timestamp("2023-03-15") if longCondition strategy.entry("Long", strategy.long, qty = nContracts) shortCondition = not shortOnly and close < shortEntry and time >= timestamp("2023-03-15") if shortCondition strategy.entry("Short", strategy.short, qty = nContracts) strategy.exit("Exit Long", "Long", stop = longExit) strategy.exit("Exit Short", "Short", stop = shortExit) // Visualización de los niveles de breakout plot(longEntry, "Entrada larga", color.green, style = plot.style_line) plot(longExit, "Salida larga", color.red, style = plot.style_line) plot(shortEntry, "Entrada corta", color.green, style = plot.style_line) plot(shortExit, "Salida corta", color.red, style = plot.style_line)