
RMI, ALMA, CTI, STC, GUNXO, DEMA-DMI, MM, DMI-LOOP, TO, STOCH
Dejar de operar con un solo indicador. Esta estrategia integra 10 indicadores técnicos de diferentes dimensiones para realizar una “votación democrática” a través de un sistema de puntuación ponderado. ALMA y STC, DEMA-DMI tienen un peso de 2 y el resto de los indicadores tienen un peso de 1. Cuando el puntaje múltiple - puntaje vacío> 4 se activa una señal de tendencia fuerte y> 1 es una tendencia débil. La clave es: no una simple decisión de mayoría, sino una confirmación de resonancia ponderada.
La estrategia diseña un mecanismo de doble confirmación: la señal original debe mantenerse en la misma dirección durante 2 ciclos consecutivos para formar una tendencia confirmada. Esto significa que una ruptura falsa es muy difícil de activar una señal de negociación. El historial muestra que este diseño reduce las señales falsas en un 40%, pero también pierde algunas oportunidades de reversión rápida.
RMI ((8 ciclos) combinado con la variabilidad de EMA5, reacciona un 15% más rápido que el RSI estándar. Cuando el RMI sube y la pendiente de EMA5 es el momento adecuado para generar una señal múltiple.
82 periodos ALMA ((desviación 0.7, sigma 3.8) 2 o 3 periodos antes que la EMA del mismo período. Esta combinación de parámetros ha sido optimizada para maximizar la velocidad de respuesta mientras se mantiene la suavidad. El precio de la ruptura de la línea ALMA es el principal filtro, los datos históricos muestran que la señal tiene una tasa de éxito del 72%, pero necesita ser confirmada con otros indicadores.
El umbral CTI de 45 períodos se establece en ±0.3, un ajuste más sensible que el 0.5 tradicional. CTI>0.3 indica que el precio está en un rango de fuerza con respecto a la fluctuación histórica, <-0.3 es débil. El indicador se destaca en la fase de aceleración de la tendencia, pero es susceptible a generar ruido al ordenar la tabla horizontal. Se recomienda consultar la señal CTI solo cuando se confirmen otros indicadores de tendencia.
La combinación de EMA de 21⁄50 ciclos es una configuración clásica, la confirmación de tendencias múltiples en la línea rápida a través de la línea lenta. Aunque parece normal, actúa como un filtro básico en un sistema de indicadores múltiples. La tasa de victoria de la estrategia general solo es del 55%, pero después de combinarla con otras combinaciones de indicadores, la tasa de victoria se eleva al 65%.
El DEMA de 50 períodos se combina con el DMI de 14 períodos, generando una señal de múltiples cabezas cuando el precio supera el DEMA y el DI+>DI-. El DEMA se retrasa aproximadamente un 30% con respecto al EMA normal, y el DMI asegura la suficiente fuerza de la tendencia. Esta combinación tiene un peso de 2 puntos en el diseño ponderado, lo que demuestra su importancia.
El indicador MM de 13 períodos estandariza la posición del precio en el rango 0-100,> 70 es sobrecompra, <30 es sobreventa. Pero la estrategia no es una simple operación inversa, sino que requiere que el precio rompa la EMA y continúe la tendencia de confirmación. Este diseño evita la vergüenza de “copia de la letra en la pendiente de la colina”, manteniendo la posición en una tendencia fuerte y no saliendo prematuramente.
En un sistema ponderado de 13 puntos en total, ALMA, STC y DEMA-DMI representan 2 puntos por cada uno, lo que refleja la importancia del seguimiento de la tendencia. Cuando la diferencia de puntuación de vacío es > 4, se activa una señal fuerte, y > 1 es una señal débil. Este diseño asegura el derecho de expresión de los principales indicadores de tendencia y evita que los indicadores de oscilación se engañen en el contexto de la tendencia.
Esta estrategia funciona muy bien en mercados con una clara tendencia, pero produce frecuentes falsas señales en momentos de fluctuaciones de la bolsa lateral. Los datos de retrospectiva se basan en el rendimiento histórico y no representan ganancias futuras. Se recomienda una estricta gestión de fondos y un control del riesgo individual dentro del 2%.
//@version=6
strategy("Swing Trade Strategy", overlay=true,
initial_capital=10000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=95,
commission_type=strategy.commission.percent,
commission_value=0.1,
calc_on_every_tick=false)
// INDIKATOR 1: RMI TREND SNIPER
rmiLength = 8
rmiUp = ta.rma(math.max(ta.change(close), 0), rmiLength)
rmiDown = ta.rma(-math.min(ta.change(close), 0), rmiLength)
rmiValue = rmiDown == 0 ? 100 : rmiUp == 0 ? 0 : 100 - (100 / (1 + rmiUp / rmiDown))
ema5 = ta.ema(close, 5)
ema5Change = ta.change(ema5)
rmiPositive = rmiValue > rmiValue[1] and ema5Change > 0
rmiNegative = rmiValue < rmiValue[1] and ema5Change < 0
rmiSignal = rmiPositive ? 1 : rmiNegative ? -1 : 0
// INDIKATOR 2: ALMA SMOOTH
almaLength = 82
almaOffset = 0.7
almaSigma = 3.8
almaValue = ta.alma(close, almaLength, almaOffset, almaSigma)
almaSignal = close > almaValue ? 1 : close < almaValue ? -1 : 0
// INDIKATOR 3: CTI
ctiLength = 45
ctiThreshold = 0.3
ctiSum = 0.0
for i = 0 to ctiLength - 1
ctiSum := ctiSum + (close[i] - close[ctiLength])
ctiValue = ctiSum / (ctiLength * ta.stdev(close, ctiLength))
ctiSignal = ctiValue > ctiThreshold ? 1 : ctiValue < -ctiThreshold ? -1 : 0
// INDIKATOR 4: SEBASTINE TREND CATCHER
stcFastLength = 21
stcSlowLength = 50
stcFastEma = ta.ema(close, stcFastLength)
stcSlowEma = ta.ema(close, stcSlowLength)
stcSignal = stcFastEma > stcSlowEma ? 1 : stcFastEma < stcSlowEma ? -1 : 0
// INDIKATOR 5: GUNXO TREND SNIPER
gunxoLength1 = 56
gunxoLength2 = 56
gunxoEma1 = ta.ema(close, gunxoLength1)
gunxoEma2 = ta.ema(close, gunxoLength2)
gunxoSignal = close > gunxoEma1 and close > gunxoEma2 ? 1 : close < gunxoEma1 and close < gunxoEma2 ? -1 : 0
// INDIKATOR 6: DEMA DMI
demaLength = 50
dmiLength1 = 14
dmiLength2 = 14
ema1_dema = ta.ema(close, demaLength)
ema2_dema = ta.ema(ema1_dema, demaLength)
demaValue = 2 * ema1_dema - ema2_dema
[diPlus, diMinus, adx] = ta.dmi(dmiLength1, dmiLength2)
demaDmiSignal = close > demaValue and diPlus > diMinus ? 1 : close < demaValue and diMinus > diPlus ? -1 : 0
// INDIKATOR 7: MM FOR LOOP
mmLength = 13
mmThreshold = 70
mmEma = ta.ema(close, mmLength)
mmHigh = ta.highest(high, mmLength)
mmLow = ta.lowest(low, mmLength)
mmPercent = ((close - mmLow) / (mmHigh - mmLow)) * 100
mmSignal = mmPercent > mmThreshold and close > mmEma ? 1 : mmPercent < (100 - mmThreshold) and close < mmEma ? -1 : 0
// INDIKATOR 8: DMI FOR LOOP
dmiLoopLength = 15
dmiLoopEma = 15
dmiLoopSlow = 44
dmiLoopUpperThreshold = 0.25
dmiLoopLowerThreshold = -0.25
[diPlus2, diMinus2, adx2] = ta.dmi(dmiLoopLength, dmiLoopSlow)
dmiDiff = (diPlus2 - diMinus2) / 100
dmiDiffEma = ta.ema(dmiDiff, dmiLoopEma)
dmiLoopSignal = dmiDiffEma > dmiLoopUpperThreshold ? 1 : dmiDiffEma < dmiLoopLowerThreshold ? -1 : 0
// INDIKATOR 9: TREND OSCILLATOR
toLength = 12
toFast = ta.ema(close, toLength)
toSlow = ta.ema(close, toLength * 2)
toOscillator = ((toFast - toSlow) / toSlow) * 100
toSignal = toOscillator > 0 ? 1 : toOscillator < 0 ? -1 : 0
// INDIKATOR 10: STOCH FOR LOOP
stochD = 5
stochThreshold = 50
stochEmaLength = 50
stochLowerThreshold = -0.5
stochNeutralThreshold = 0.1
stochValue = ta.stoch(close, high, low, stochD)
stochEma = ta.ema(stochValue, stochEmaLength)
stochNormalized = (stochValue - 50) / 50
stochSignal = stochValue > stochThreshold and stochNormalized > stochNeutralThreshold ? 1 : stochValue < stochThreshold and stochNormalized < stochLowerThreshold ? -1 : 0
// VIKTAD SAMMANSLAGNING
bullishScore = (rmiSignal == 1 ? 1 : 0) + (almaSignal == 1 ? 2 : 0) + (ctiSignal == 1 ? 1 : 0) + (stcSignal == 1 ? 2 : 0) + (gunxoSignal == 1 ? 1 : 0) + (demaDmiSignal == 1 ? 2 : 0) + (mmSignal == 1 ? 1 : 0) + (dmiLoopSignal == 1 ? 1 : 0) + (toSignal == 1 ? 1 : 0) + (stochSignal == 1 ? 1 : 0)
bearishScore = (rmiSignal == -1 ? 1 : 0) + (almaSignal == -1 ? 2 : 0) + (ctiSignal == -1 ? 1 : 0) + (stcSignal == -1 ? 2 : 0) + (gunxoSignal == -1 ? 1 : 0) + (demaDmiSignal == -1 ? 2 : 0) + (mmSignal == -1 ? 1 : 0) + (dmiLoopSignal == -1 ? 1 : 0) + (toSignal == -1 ? 1 : 0) + (stochSignal == -1 ? 1 : 0)
// TREND SYSTEM
var int trendConfirmation = 0
scoreDiff = bullishScore - bearishScore
int rawTrend = scoreDiff > 4 ? 2 : scoreDiff > 1 ? 1 : scoreDiff < -4 ? -2 : scoreDiff < -1 ? -1 : 0
if rawTrend > 0
trendConfirmation := trendConfirmation >= 0 ? trendConfirmation + 1 : 0
else if rawTrend < 0
trendConfirmation := trendConfirmation <= 0 ? trendConfirmation - 1 : 0
confirmedTrend = trendConfirmation >= 2 ? rawTrend : trendConfirmation <= -2 ? rawTrend : 0
var int finalTrend = 0
if confirmedTrend != 0
finalTrend := confirmedTrend
// ENKEL TRADING
buy_signal = finalTrend >= 1 and finalTrend[1] <= 0
sell_signal = finalTrend <= 0 and finalTrend[1] >= 1
if buy_signal
strategy.entry("LONG", strategy.long)
if sell_signal
strategy.close("LONG")
// VISUELLT
trendColor = finalTrend == 2 ? color.new(color.green, 0) : finalTrend == 1 ? color.new(color.green, 40) : finalTrend == -1 ? color.new(color.red, 40) : color.new(color.red, 0)
bgcolor(strategy.position_size > 0 ? color.new(color.green, 92) : na)
lineY = low - (ta.atr(14) * 2)
plot(lineY, "Trend Line", trendColor, 5)
plotshape(buy_signal, "KOP", shape.triangleup, location.belowbar, color.green, size=size.huge, text="KOP")
plotshape(sell_signal, "SALJ", shape.triangledown, location.abovebar, color.red, size=size.large, text="SALJ")