
RMI, ALMA, CTI, STC, GUNXO, DEMA-DMI, MM, DMI-LOOP, TO, STOCH
Die Strategie integriert 10 verschiedene technische Indikatoren, um eine “demokratische Abstimmung” durch ein gewichtetes Bewertungssystem durchzuführen. ALMA und STC, DEMA-DMI haben eine Gewichtung von 2, die übrigen Indikatoren haben eine Gewichtung von 1. Wenn die Mehrkopf-Leerkopf-Werte > 4 sind, wird ein starkes Trendsignal ausgelöst, wenn > 1 ein schwaches Trendsignal ausgelöst wird.
Die Strategie hat einen doppelten Bestätigungsmechanismus entwickelt: Das ursprüngliche Signal muss 2 aufeinanderfolgende Zyklen gleichgewichtig bleiben, um einen bestätigten Trend zu bilden. Das bedeutet, dass ein falscher Durchbruch kaum ein Handelssignal auslösen kann. Historische Rückblicke zeigen, dass diese Design False-Signale um etwa 40% reduziert, aber auch einige schnelle Umkehrmöglichkeiten verpasst.
RMI ((8 Zyklen) kombiniert mit EMA5-Wechselraten reagiert 15% schneller als der Standard-RSI. Es erzeugt ein mehrseitiges Signal, wenn der RMI steigt und die EMA5-Schräglage rechtzeitig ist. Diese Kombination übertrifft die reine Dynamik des Indikators in schwankenden Verhältnissen, ist jedoch leicht nach dem Ende eines einseitigen Trends zu verzögern.
82 Periodische ALMA ((Abweichung 0.7, Sigma 3.8) 2 bis 3 Perioden vor der EMA. Diese Kombination wurde optimiert, um die Reaktionsgeschwindigkeit zu maximieren und gleichzeitig die Glattigkeit zu bewahren. Der Preis ist die zentrale Filterbedingung für das Durchbrechen der ALMA-Linie. Die historischen Daten zeigen, dass das Signal 72% erreicht hat.
Der 45-Perioden-CTI-Throughput ist auf ±0.3 eingestellt, eine Einstellung, die empfindlicher ist als die herkömmliche 0.5. CTI> 0.3 bedeutet, dass der Preis im Vergleich zu historischen Schwankungen im Bereich der Stärke liegt, <-0.3 ist die Schwäche. Der Indikator zeigt sich in der Phase des Trendbeschleunigens, ist aber leicht zu Lärm bei der Querverarbeitung.
Die 21⁄50-Zyklus-EMA-Palette ist eine klassische Konfiguration, die einen mehrköpfigen Trend auf der Schnelllinie bestätigt. Obwohl es normal aussieht, spielt es eine grundlegende Filterfunktion in einem Mehrindikator-System. Die Gewinnrate allein beträgt nur 55%, aber nach der Kombination mit anderen Indikatoren erhöht sich die Gesamtstrategie-Gewinnrate auf 65%.
Die 50-Zyklus-DEMA kombiniert mit der 14-Zyklus-DMI erzeugt ein Mehrkopfsignal, wenn der Preis die DEMA überschreitet und DI+>DI−. Die DEMA verringert den Rückstand um etwa 30% gegenüber der normalen EMA und die DMI sorgt dafür, dass die Trendstärke ausreicht. Die Kombination erhielt 2 Punkte in der gewichteten Gestaltung, was ihre Bedeutung verdeutlicht.
Der 13-Zyklus-MM-Indikator standardisiert die Preisposition in der Bandbreite 0-100,> 70 als Überkauf und <30 als Überverkauf. Die Strategie ist jedoch kein einfacher Umkehrschlag, sondern verlangt, dass der Preis die Bestätigung des Trends fortsetzt, während er die EMA durchbricht. Diese Konstruktion vermeidet die Peinlichkeit des “Kopierens auf der Halbinsel” und hält die Position in einem starken Trend und verlässt nicht vorzeitig.
In einem gewichteten System von insgesamt 13 Punkten spiegeln ALMA, STC und DEMA-DMI jeweils 2 Punkte die Bedeutung des Trendverfolgens wider. Das Design gewährleistet die Meinungsäußerung der wichtigsten Trendindikatoren und verhindert die Irreführung der Schwingungsindikatoren in der Trendbewegung.
Diese Strategie ist in klaren Trends hervorragend, aber bei Fluktuationen am Horizont erzeugt sie häufige Falschsignale. Die Rückdaten basieren auf der historischen Performance und nicht auf den zukünftigen Erträgen. Es wird empfohlen, eine strenge Kapitalverwaltung zu verwenden, wobei das einzelne Risiko innerhalb von 2% kontrolliert wird.
//@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")