
RMI, ALMA, CTI, STC, GUNXO, DEMA-DMI, MM, DMI-LOOP, TO, STOCH
Jangan lagi berdagang dengan satu petunjuk. Strategi ini menggabungkan 10 petunjuk teknikal dimensi yang berbeza untuk “pemungutan suara demokrasi” melalui sistem penilaian bertimbangan. ALMA dan STC, DEMA-DMI mempunyai berat 2, dan indikator lain mempunyai berat 1. Apabila skor kepala kosong > 4 mencetuskan isyarat trend yang kuat, dan > 1 adalah trend yang lemah. Kuncinya adalah: bukan keputusan majoriti sederhana, tetapi pengesahan resonansi bertimbangan.
Strategi ini merancang mekanisme pengesahan berganda: isyarat asal mesti kekal sama arah selama 2 kitaran berturut-turut untuk membentuk Trend yang disahkan. Ini bermakna bahawa satu penembusan palsu sukar untuk mencetuskan isyarat perdagangan.
RMI ((8 kitaran) digabungkan dengan kadar perubahan EMA5, bertindak balas 15% lebih cepat daripada RSI standard. Apabila RMI meningkat dan kemiringan EMA5 tepat pada masanya, ia menghasilkan isyarat berbilang arah.
82 kitaran ALMA ((0.7 bias, 3.8 sigma) 2-3 kitaran lebih awal daripada EMA yang sama. Kombinasi parameter ini dioptimumkan untuk memaksimumkan kelajuan tindak balas sambil mengekalkan kehalusan. Harga menembusi garis ALMA adalah syarat penapisan teras, dan data sejarah menunjukkan bahawa isyarat itu mencapai 72%, tetapi perlu disahkan dengan penunjuk lain.
45 kitaran CTI terhad ditetapkan sebagai ± 0.3, yang lebih sensitif daripada 0.5 tradisional. CTI> 0.3 menunjukkan harga berada dalam julat yang kuat berbanding turun naik sejarah, <-0.3 adalah lemah.
EMA 21⁄50 kitaran adalah konfigurasi klasik, melintasi garis pendek untuk mengesahkan trend berbilang mata. Walaupun kelihatan biasa, ia berfungsi sebagai penapis asas dalam sistem pelbagai indikator.
50 kitaran DEMA digabungkan dengan 14 kitaran DMI, menghasilkan isyarat berbilang arah apabila harga menembusi DEMA dan DI+>DI-. DEMA dikurangkan kira-kira 30% ketinggalan daripada EMA biasa, DMI memastikan kekuatan trend mencukupi. Kombinasi ini mengambil 2 mata dalam reka bentuk berat, menunjukkan kepentingannya.
Penunjuk MM 13 kitaran menstandardkan kedudukan harga dalam julat 0-100,> 70 untuk overbuy,<30 untuk oversell. Tetapi strategi ini bukan operasi terbalik yang mudah, tetapi memerlukan harga untuk meneruskan trend pengesahan EMA yang melampau. Reka bentuk ini mengelakkan kekecewaan “menyalin di lereng bukit” dan mengekalkan kedudukan dalam trend yang kuat dan tidak keluar terlalu awal.
Dalam sistem berat 13 mata, ALMA, STC, dan DEMA-DMI masing-masing mempunyai 2 mata yang mencerminkan kepentingan trend. Apabila perbezaan skor kosong adalah > 4, isyarat kuat dicetuskan, dan isyarat lemah adalah > 1. Reka bentuk ini memastikan kebebasan bersuara untuk indikator trend utama, dan mengelakkan penunjuk goyah yang keliru dalam keadaan trend.
Strategi ini berfungsi dengan baik di pasaran yang jelas dalam trend, tetapi sering menimbulkan isyarat palsu ketika bergejolak. Data retrospektif berdasarkan prestasi sejarah, tidak mewakili keuntungan masa depan. Disarankan untuk dikombinasikan dengan pengurusan dana yang ketat, kawalan risiko tunggal dalam 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")