
RMI, ALMA, CTI, STC, GUNXO, DEMA-DMI, MM, DMI-LOOP, TO, STOCH
Berhentilah berdagang dengan satu indikator tunggal. Strategi ini mengintegrasikan 10 indikator teknis dimensi yang berbeda untuk “pemungutan suara demokrasi” melalui sistem penilaian bertimbang. ALMA dan STC, DEMA-DMI memiliki bobot 2, dan indikator lainnya memiliki bobot 1. Ketika skor multihead - skor kosong > 4 memicu sinyal tren yang kuat, dan > 1 untuk tren yang lemah. Kuncinya adalah: bukan keputusan mayoritas sederhana, tetapi konfirmasi resonansi berimbang.
Apakah terlalu naif? Strategi ini dirancang dengan mekanisme double confirmation: sinyal asli harus tetap searah selama 2 periode berturut-turut untuk membentuk confirmedTrend. Ini berarti bahwa sebuah terobosan palsu sangat sulit untuk memicu sinyal perdagangan.
RMI ((8 siklus) dengan perubahan EMA5 bereaksi 15% lebih cepat dari RSI standar. Ketika RMI naik dan EMA5 bergeser tepat waktu, sinyal multihead dihasilkan. Kombinasi ini lebih baik dalam situasi yang bergoyang daripada indikator momentum tunggal, tetapi mudah terjadi lag setelah akhir tren unilateral.
82 Periode ALMA ((0.7 offset, 3.8 sigma) 2-3 periode lebih awal dari EMA periode yang sama. Kombinasi parameter ini dioptimalkan untuk memaksimalkan kecepatan respons sambil tetap halus. Harga menembus garis ALMA adalah kondisi penyaringan inti, dan data historis menunjukkan bahwa sinyal ini menang 72%, tetapi perlu dikonfirmasi dengan indikator lain.
45 Periode CTI threshold ditetapkan menjadi ± 0.3, yang lebih sensitif daripada 0.5 tradisional. CTI> 0.3 menunjukkan harga berada dalam kisaran kuat relatif terhadap pergerakan historis, <-0.3 adalah lemah. Indikator ini tampil menonjol pada fase percepatan tren, tetapi mudah berisik ketika menyusun secara horizontal.
EMA siklus 21⁄50 adalah konfigurasi klasik, yang mengkonfirmasi tren multi-head melalui garis cepat. Meskipun terlihat biasa, EMA ini berfungsi sebagai filter dasar dalam sistem multi-indikator. Pemenangannya hanya 55% dengan menggunakan satu indikator saja, tetapi setelah dikombinasikan dengan indikator lain, kemenangan strategi keseluruhan meningkat menjadi 65%.
50 siklus DEMA digabungkan dengan 14 siklus DMI, yang menghasilkan sinyal multihead ketika harga menembus DEMA dan DI+>DI-. DEMA mengurangi sekitar 30% dari EMA biasa, DMI memastikan kekuatan tren yang cukup. Kombinasi ini mengambil 2 poin dalam desain berbobot, menunjukkan pentingnya.
Indikator MM periode 13 menstandarisasi posisi harga dalam kisaran 0-100,> 70 untuk overbought, <30 untuk oversold. Namun, strategi ini bukan operasi terbalik yang sederhana, tetapi mengharuskan harga untuk melanjutkan tren konfirmasi EMA yang terobosan. Desain ini menghindari ketidaknyamanan “menyalin di lereng gunung”, mempertahankan posisi dalam tren yang kuat dan tidak keluar terlalu dini.
Dalam total 13 poin, ALMA, STC, dan DEMA-DMI masing-masing 2 poin yang mencerminkan pentingnya pelacakan tren. Ketika perbedaan skor kosong lebih besar dari 4, sinyal kuat dipicu, dan sinyal lemah lebih kecil dari 1. Desain ini memastikan bahwa indikator tren utama memiliki suara dan menghindari indikator getaran yang salah dalam situasi tren.
Strategi ini berkinerja baik di pasar dengan tren yang jelas, tetapi sering menimbulkan sinyal palsu saat bergejolak di pivot. Data retrospektif didasarkan pada kinerja historis, bukan keuntungan di masa depan. Disarankan untuk bekerja sama dengan manajemen dana yang ketat, kontrol risiko tunggal di bawah 2%. Strategi ini cocok untuk pedagang jangka panjang menengah, tidak cocok untuk operasi frekuensi tinggi dalam sehari.
//@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")