Esta es una estrategia de negociación cuantitativa inteligente basada en TRAMA (Triangular Moving Average) y Simple Moving Average (SMA). La estrategia combina dos sistemas de promedio móvil para generar señales de negociación e implementa un mecanismo de stop-loss / take-profit para el control de riesgos. Utiliza cruces SMA de 4 períodos y 28 períodos junto con el indicador TRAMA para confirmar las señales de negociación, mejorando la precisión a través de la confirmación de múltiples señales.
La estrategia emplea dos componentes principales para generar señales comerciales. Primero es el sistema de cruce basado en SMA de 4 períodos y 28 períodos, que genera señales largas cuando el MA a corto plazo cruza por encima del MA a largo plazo y señales cortas cuando cruza por debajo. Segundo, la estrategia incorpora el indicador TRAMA como un sistema de confirmación auxiliar. TRAMA es un promedio móvil mejorado con un tiempo de respuesta más rápido y menos retraso. Se generan señales comerciales adicionales cuando el precio rompe el TRAMA. La estrategia también incluye mecanismos de toma de ganancias y stop-loss basados en porcentajes establecidos en el 2% y el 1% respectivamente.
Esta es una estrategia que combina el análisis técnico tradicional con conceptos de trading cuantitativos modernos. A través de la confirmación de múltiples señales y el estricto control de riesgos, la estrategia demuestra una buena practicidad. Si bien hay áreas para la optimización, el diseño general del marco es razonable con buenas perspectivas de aplicación.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 08:00:00 period: 1d basePeriod: 1d 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/ // © ivanvallejoc //@version=5 strategy("MANCOS2.0", overlay=true, margin_long=80, margin_short=80) longCondition = ta.crossover(ta.sma(close, 4), ta.sma(close, 28)) if (longCondition) strategy.entry("My Long Entry Id", strategy.long) shortCondition = ta.crossunder(ta.sma(close, 4), ta.sma(close, 28)) if (shortCondition) strategy.entry("My Short Entry Id", strategy.short) // Parámetros de la TRAMA length = input(1.5, title="TRAMA Length") src = close filt = 2 / (length + 1) trama = 0.0 var tramaPrev = na(trama[1]) ? close : trama[1] trama := (src - tramaPrev) * filt + tramaPrev // Plot de la TRAMA plot(trama, color=color.blue, linewidth=2, title="TRAMA") // Señales de compra y venta basadas en TRAMA buySignal = ta.crossover(close, trama) sellSignal = ta.crossunder(close, trama) // Configuración de Take Profit y Stop Loss takeProfitPerc = input(2, title="Take Profit (%)") / 100 stopLossPerc = input(1, title="Stop Loss (%)") / 100 // Precios de TP y SL takeProfitPrice = strategy.position_avg_price * (1 + takeProfitPerc) stopLossPrice = strategy.position_avg_price * (1 - stopLossPerc) // Condiciones de entrada en largo if (buySignal) strategy.entry("Long", strategy.long) // Condiciones de salida para posición larga (TP/SL) if (strategy.position_size > 0) strategy.exit("TP/SL", "Long", limit=takeProfitPrice, stop=stopLossPrice) // Entrada en corto basada en TRAMA if (sellSignal) strategy.entry("Short", strategy.short) // Precios de TP y SL para posiciones cortas takeProfitPriceShort = strategy.position_avg_price * (1 - takeProfitPerc) stopLossPriceShort = strategy.position_avg_price * (1 + stopLossPerc) if (strategy.position_size < 0) strategy.exit("TP/SL", "Short", limit=takeProfitPriceShort, stop=stopLossPriceShort)