Estrategia de oscilación de resonancia de diez indicadores


Fecha de creación: 2026-02-11 14:05:42 Última modificación: 2026-02-11 14:05:42
Copiar: 2 Número de Visitas: 75
2
Seguir
413
Seguidores

Estrategia de oscilación de resonancia de diez indicadores Estrategia de oscilación de resonancia de diez indicadores

RMI, ALMA, CTI, STC, GUNXO, DEMA-DMI, MM, DMI-LOOP, TO, STOCH

10 Indicadores para Pesar el Voto, no es una decisión de la cabeza

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.

El mecanismo de confirmación de tendencias es más estricto de lo que se podría imaginar.

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 + EMA5 es más sensible que el RSI tradicional

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.

ALMA resuelve el retraso de la EMA

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 índice CTI captura que la fuerza relativa de los precios está gravemente subestimada

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.

El sistema de diferencias de doble EMA es simple pero eficaz

La combinación de EMA de 2150 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%.

DEMA y DMI confirman que no habrá una falsa brecha

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 sistema de MM por ciento es más preciso en la identificación de sobrecompra y sobreventa

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.

El sistema de puntuación ponderada es más científico que el simple voto

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.

Sugerencia de riesgo: La estrategia no es la clave

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%.

Código Fuente de la Estrategia
//@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")