Esta estrategia es un sistema de negociación de doble marco de tiempo basado en el indicador SuperTrend y el RSI. Combina indicadores de análisis técnico de marcos de tiempo de 120 minutos y 15 minutos, utilizando SuperTrend para capturar la dirección de la tendencia a mediano plazo mientras utiliza el RSI para obtener ganancias. La estrategia implementa el tamaño de la posición a través de la asignación porcentual e incluye condiciones de toma de ganancias basadas en porcentajes.
La lógica central se basa en varios elementos clave:
Es una estrategia bien estructurada de seguimiento de tendencias con lógica clara. Combina diferentes indicadores técnicos de marco de tiempo para capturar tendencias mientras se mantiene el control de riesgos. Si bien hay espacio para la optimización, el diseño general se alinea con los principios de negociación cuantitativos. Los operadores deben hacer pruebas posteriores y optimizar los parámetros antes de negociar en vivo y ajustar el tamaño de la posición de acuerdo con su tolerancia al riesgo.
/*backtest start: 2024-10-01 00:00:00 end: 2024-10-31 23:59:59 period: 1h 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/ // © felipemiransan //@version=5 strategy("Supertrend Strategy", overlay=true) // Function for Supertrend supertrend(_factor, _atrPeriod) => [out, _] = ta.supertrend(_factor, _atrPeriod) out // Supertrend Settings factor = input.float(3.42, title="Supertrend Factor") atrPeriod = input.int(14, title="ATR Period") tf2 = input.timeframe("120", title="Supertrend Timeframe") // RSI Settings rsi_tf = input.timeframe("15", title="RSI Timeframe") rsiLength = input.int(5, title="RSI Length") rsiUpper = input.int(95, title="RSI Upper Limit") rsiLower = input.int(5, title="RSI Lower Limit") // RSI Timeframe rsi_tf_value = request.security(syminfo.tickerid, rsi_tf, ta.rsi(close, rsiLength), lookahead=barmerge.lookahead_off, gaps=barmerge.gaps_off) // Supertrend Timeframe supertrend_tf2 = request.security(syminfo.tickerid, tf2, supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off, gaps=barmerge.gaps_off) // Take Profit Settings (Percentage in relation to the average price) takeProfitPercent = input.float(30, title="Take Profit", step=0.1) / 100 // Entry conditions based on price crossover with Supertrend Timeframe longCondition = ta.crossover(close, supertrend_tf2) and barstate.isconfirmed shortCondition = ta.crossunder(close, supertrend_tf2) and barstate.isconfirmed // Execution of reversal orders with closing of previous position if (longCondition) // Close a short position before opening a long position if (strategy.position_size < 0) strategy.close("Short", comment="Close Short for Long Entry") strategy.entry("Long", strategy.long) if (shortCondition) // Close long position before opening short position if (strategy.position_size > 0) strategy.close("Long", comment="Close Long for Short Entry") strategy.entry("Short", strategy.short) // Calculate take profit levels relative to the average entry price if (strategy.position_size > 0) takeProfitLong = strategy.position_avg_price * (1 + takeProfitPercent) strategy.exit("Take Profit Long", "Long", limit=takeProfitLong) if (strategy.position_size > 0 and (rsi_tf_value >= rsiUpper)) strategy.close("Long", comment="RSI Take Profit Long") if (strategy.position_size < 0) takeProfitShort = strategy.position_avg_price * (1 - takeProfitPercent) strategy.exit("Take Profit Short", "Short", limit=takeProfitShort) if (strategy.position_size < 0 and (rsi_tf_value <= rsiLower)) strategy.close("Short", comment="RSI Take Profit Short") // Plot Supertrend timeframe with commit check to avoid repainting plot(barstate.isconfirmed ? supertrend_tf2 : na, color=color.blue, title="Supertrend Timeframe (120 min)", linewidth=1) // Plot RSI for visualization plot(rsi_tf_value, "RSI", color=color.purple) hline(rsiUpper, "RSI Upper", color=color.red) hline(rsiLower, "RSI Lower", color=color.green)