
Se trata de una estrategia de negociación de energía inteligente basada en TRAMA (Triangular Moving Average) y SMA (Simple Moving Average). La estrategia combina la generación de señales de negociación de dos sistemas equiláteros y establece un mecanismo de stop-loss para controlar el riesgo. La estrategia utiliza cruces SMA de 4 y 28 ciclos y el indicador TRAMA para confirmar las señales de negociación, aumentando la precisión de las operaciones mediante la confirmación de múltiples señales.
La estrategia utiliza dos componentes centrales para generar señales de negociación. El primero es un sistema de cruce basado en 4 y 28 ciclos SMA, que produce señales de multiplicación cuando la media corta cruza hacia arriba la media larga y produce señales de parálisis cuando cruza hacia abajo. La segunda es la introducción del indicador TRAMA como sistema de confirmación auxiliar.
Esta es una estrategia que combina el análisis técnico tradicional y la filosofía moderna de la negociación cuantitativa. La estrategia muestra una buena utilidad a través de la confirmación de múltiples señales y el control riguroso del riesgo. Aunque hay algunos lugares que necesitan optimización, el diseño general del marco es razonable y tiene 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)