Esta estrategia es un sistema de seguimiento de tendencias basado en las rupturas históricas de precios y los filtros de promedio móvil. Combina señales de ruptura de precios de varios períodos con promedios móviles para identificar las tendencias del mercado, utilizando reglas estrictas de entrada y salida para capturar los movimientos del mercado a mediano y largo plazo. La estrategia utiliza rupturas de precios de 55 días para señales largas, rupturas de precios de 20 días para salidas e incorpora un promedio móvil de 200 días como filtro de tendencia para reducir eficazmente los riesgos de ruptura falsa.
La lógica básica se basa en las rupturas de precios y la tendencia siguiente. 1. señal de entrada: el sistema genera una señal larga cuando el precio alcanza un máximo de 55 días y cierra por encima del promedio móvil de 200 días 2. señal de salida: el sistema cierra las posiciones cuando el precio se rompe por debajo del mínimo de 20 días Filtro de tendencia: utiliza la media móvil de 200 días como indicador de tendencia principal, solo ingresando compras por encima del promedio 4. Gestión de posiciones: utiliza el 10% del capital de la cuenta para cada operación Opciones de promedio móvil: admite SMA, EMA, WMA, VWMA, lo que permite flexibilidad basada en las características del mercado
Este es un sistema estratégico que combina reglas clásicas de trading de tortugas con herramientas modernas de análisis técnico. Captura tendencias a través de breakouts de precios, confirma la dirección utilizando promedios móviles y controla el riesgo con una gestión de posición razonable. La lógica de la estrategia es clara, práctica y tiene buena escalabilidad. Aunque puede tener un rendimiento inferior en mercados agitados, a través de la optimización adecuada de parámetros y control de riesgos, aún puede lograr retornos estables en mercados de tendencia. Se aconseja a los operadores que ajusten los parámetros en función de características específicas del mercado y establezcan sistemas integrales de gestión de dinero cuando se apliquen a la negociación en vivo.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-04 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Turtle Traders - Andrei", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10) // ====== Inputs ====== // Período para a máxima das compras lookback_buy = input.int(title="Período para Máxima de Compra", defval=55, minval=1) // Período para a mínima das vendas lookback_sell = input.int(title="Período para Mínima de Venda", defval=20, minval=1) // Período da Média Móvel ma_length = input.int(title="Período da Média Móvel", defval=200, minval=1) // Tipo de Média Móvel ma_type = input.string(title="Tipo de Média Móvel", defval="SMA", options=["SMA", "EMA", "WMA", "VWMA"]) // ====== Cálculos ====== // Cálculo da Média Móvel baseada no tipo selecionado ma = switch ma_type "SMA" => ta.sma(close, ma_length) "EMA" => ta.ema(close, ma_length) "WMA" => ta.wma(close, ma_length) "VWMA" => ta.vwma(close, ma_length) // Cálculo da máxima dos últimos 'lookback_buy' candles highest_buy = ta.highest(high, lookback_buy) // Cálculo da mínima dos últimos 'lookback_sell' candles lowest_sell = ta.lowest(low, lookback_sell) // ====== Condições de Negociação ====== // Condição de entrada: fechamento acima da máxima dos últimos 'lookback_buy' candles E acima da MA longCondition = (high == highest_buy) and (close > ma) if (longCondition) strategy.entry("Comprar", strategy.long) // Condição de saída: fechamento abaixo da mínima dos últimos 'lookback_sell' candles exitCondition = (low == lowest_sell) if (exitCondition) strategy.close("Comprar") // ====== Plotagens ====== // Plotar a máxima de 'lookback_buy' candles plot(highest_buy, color=color.green, title="Máxima", linewidth=2) // Plotar a mínima de 'lookback_sell' candles plot(lowest_sell, color=color.red, title="Mínima", linewidth=2) // Plotar a Média Móvel plot(ma, color=color.blue, title="Média Móvel", linewidth=2) // ====== Sinais Visuais ====== // Sinal de entrada plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Sinal de Compra", text="") // Sinal de saída plotshape(series=exitCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sinal de Venda", text="")