
RMI, ALMA, CTI, STC, GUNXO, DEMA-DMI, MM, DMI-LOOP, TO, STOCH
Deixe de negociar com um único indicador. Esta estratégia integra 10 indicadores técnicos de diferentes dimensões para “voto democrático” por meio de um sistema de pontuação ponderado. ALMA e STC, DEMA-DMI têm um peso de 2 e os outros indicadores têm um peso de 1. Quando o escore múltiplo de cabeça-escore em branco é > 4, o sinal de tendência forte é acionado, e > 1 é a tendência fraca.
É muito ingênuo. A estratégia foi projetada com um mecanismo de dupla confirmação: o sinal original deve permanecer isotérmico por 2 ciclos consecutivos para formar uma tendência confirmada. Isso significa que uma falsa ruptura é muito difícil de desencadear um sinal de negociação.
RMI ((8 ciclos) combinado com a taxa de variação EMA5 responde 15% mais rápido do que o RSI padrão. Quando RMI sobe e a inclinação EMA5 é o momento certo para produzir um sinal de múltiplas cabeças.
82 ciclos ALMA ((desvio de 0,7, sigma de 3,8) 2 a 3 ciclos de reconhecimento de tendências antes do EMA do mesmo período. Esta combinação de parâmetros foi otimizada para maximizar a velocidade de resposta, mantendo a suavidade. O preço quebra a linha ALMA é a condição de filtragem central, os dados históricos mostram que o sinal venceu 72%, mas precisa ser confirmado em conjunto com outros indicadores.
O limiar CTI de 45 períodos é definido como ± 0.3, um ajuste mais sensível do que o 0.5 tradicional. CTI> 0.3 indica que o preço está na faixa de força em relação à flutuação histórica, <-0.3 é fraco. O indicador se destaca durante a aceleração da tendência, mas é propenso a ruído durante a composição horizontal. Recomenda-se consultar o sinal CTI apenas quando outros indicadores de tendência são confirmados.
A combinação de EMA de 21⁄50 de ciclo é a configuração clássica, a confirmação de tendências múltiplas através de linhas rápidas e lentas. Embora pareça normal, ela atua como um filtro básico no sistema de múltiplos indicadores.
O DEMA de 50 períodos combina com o DMI de 14 períodos, gerando um sinal de múltiplas cabeças quando o preço supera o DEMA e o DI+>DI- ❚ O DEMA diminui cerca de 30% do atraso do EMA normal, o DMI assegura a força da tendência suficiente ❚ Esta combinação representa 2 pontos no desenho ponderado, demonstrando sua importância ❚ Os testes mostraram que o recebimento após o ajuste de risco do sinal foi aumentado em 40% em relação ao único DEMA ❚
O indicador MM de 13 períodos padroniza a posição do preço na faixa de 0-100, com > 70 para sobrecompra e < 30 para sobrevenda. Mas a estratégia não é uma simples operação de reversão, mas exige que o preço continue a tendência de confirmação ao mesmo tempo em que quebra a EMA. Esse design evita o embaraço de “cobrar no meio da montanha”, mantendo a posição em uma forte tendência e não saindo prematuramente.
Em um sistema ponderado de 13 pontos, ALMA, STC e DEMA-DMI representam a importância do acompanhamento de tendências em 2 pontos. Quando a diferença de pontuação de vazio é > 4, o sinal forte é acionado, e > 1 é o sinal fraco. Este design assegura o direito de expressão dos principais indicadores de tendência, evitando que os indicadores de oscilação sejam enganados no contexto da tendência.
Esta estratégia tem um excelente desempenho em mercados com tendências claras, mas produz falsos sinais frequentes em momentos de oscilação horizontal. Os dados de retrospectiva são baseados em desempenho histórico e não representam receitas futuras. É recomendado o uso de um rigoroso gerenciamento de fundos, com o risco individual controlado em menos de 2%. A estratégia é adequada para operadores de média e longa linha e não para operações diárias de alta frequência.
//@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")