
RSI, EMA, DIVERGENCE, VOLUME, ATR
Đây không phải là một chiến lược đảo ngược tầm thường khác. Với sự cộng hưởng của bốn chỉ số kỹ thuật được xác nhận bằng RSI deviation, cấu trúc từ chối, đảo ngược đường K và khối lượng giao dịch, chiến lược này sẽ đẩy tỷ lệ thành công của giao dịch đảo ngược lên một tầm cao mới. Dữ liệu phản hồi cho thấy khả năng đảo ngược cao hơn đáng kể so với chiến lược chỉ số đơn khi có ít nhất 3 chỉ số kỹ thuật phát tín hiệu cùng một lúc.
Lợi ích của logic cốt lõi: Khi giá xuất hiện tín hiệu từ chối ở mức kháng cự hỗ trợ quan trọng, nhiều chỉ số kỹ thuật phải tạo ra cộng hưởng để kích hoạt giao dịch. Cơ chế lọc nghiêm ngặt này đã lọc hiệu quả một lượng lớn tín hiệu giả, nhưng chi phí là giảm tần suất giao dịch.
RSI deviation là vũ khí cốt lõi của chiến lược này. Thông qua việc phát hiện các điểm trung tâm 5 chu kỳ, hệ thống tự động xác định hiện tượng biến động của giá cao / thấp không đồng bộ với chỉ số RSI. Cài đặt tham số cụ thể: RSI chu kỳ 14, sự tương phản giá cần 10 chu kỳ để xác nhận biến động.
Báo đà: Giá sáng tạo thấp nhưng RSI không sáng tạo thấp, cho thấy động lực giảm dần. Báo đà: Giá sáng tạo cao nhưng RSI không sáng tạo cao, ám chỉ sự thiếu hụt trên.
Ưu điểm chính: Phản xạ từ tín hiệu thường dẫn đầu giá đảo ngược từ 2-5 chu kỳ, cung cấp cho các nhà giao dịch cơ hội sắp xếp trước có giá trị.
Hệ thống 50⁄200 EMA kép xây dựng một khung xu hướng rõ ràng. Cấu trúc từ chối tín hiệu yêu cầu giá chạm vào đường trung bình quan trọng nhưng không phá vỡ hiệu quả, sau đó nhanh chóng bật lên hoặc lùi lại.
Cấu trúc giảm giá: Giá chạm 200 EMA nhưng giá đóng cửa lại đứng lên và cao hơn 50 EMA. Cấu trúc giảm giá: Giá tăng 200 EMA nhưng giá đóng cửa lại giảm xuống và thấp hơn 50 EMA. Thiết kế này đảm bảo sự nhất quán của hướng giao dịch với xu hướng chính.
Hiệu quả chiến đấu thực tế: Trong thị trường đang có xu hướng, tín hiệu từ chối cấu trúc có tỷ lệ chiến thắng lên đến 65-70%, vượt xa mức chuẩn 50% của nhập cảnh ngẫu nhiên.
Chiến lược này có hai mô hình K-line đảo ngược cổ điển: hình dạng ngâm và hình dạng cuộn / hình dạng treo. Những hình dạng này phản ánh trực quan sự chuyển đổi tức thời của lực lượng đa không khí, là chỉ số tiên tiến đáng tin cậy về sự đảo ngược ngắn hạn.
Ngược lại: hiện tại K-đường thực thể hoàn toàn nuốt một âm trước, hoặc có một đường dài xuống và thực thể nằm ở nửa trên.
Các tham số quan trọng: Chiều dài của vật thể phải gấp 2 lần đường bóng để đảm bảo độ tin cậy của tín hiệu đảo ngược. Việc lọc chặt chẽ này tránh được sự nhiễu của các hình dạng mơ hồ như ngôi sao chữ thập.
Số lượng giao dịch là chỉ số cuối cùng để xác minh tính xác thực của hành động giá. Chiến lược yêu cầu tín hiệu đảo ngược đi kèm với tăng cường số lượng giao dịch trung bình 1,5 lần, đảm bảo có đủ tiền để đẩy giá đảo ngược.
Logic khối lượng giao dịch: Chuyển đổi giá lên cần cân bằng đường dương, chuyển đổi giá xuống cần cân bằng đường âm. Đường trung bình khối lượng giao dịch 20 chu kỳ làm chuẩn, khối lượng giao dịch hiện tại phải vượt quá 150% của chuẩn để kích hoạt tín hiệu.
Ý nghĩa thực tế: vô số đảo ngược thường là tín hiệu giả, trong khi sự liên tục của chuyển đổi cường độ rõ ràng là mạnh hơn. Thống kê cho thấy, chu kỳ liên tục trung bình của tín hiệu chuyển đổi cường độ dài hơn 40% so với vô số đảo ngược.
Cài đặt dừng lỗ sử dụng 1.2 lần ATR, thiết lập dừng lỗ là 2.5 lần ATR, tỷ lệ lợi nhuận rủi ro đạt 1: 2.08. Cơ chế điều chỉnh động này có thể thích ứng với các đặc điểm biến động của thị trường khác nhau, tránh các vấn đề về số điểm dừng cố định thường xuyên được kích hoạt trong thời gian biến động cao.
Chu kỳ ATR được thiết lập là 14, cân bằng tính nhạy cảm và ổn định. Trong thị trường biến động cao, khoảng cách dừng tự động mở rộng, giảm nhiễu tiếng ồn; trong môi trường biến động thấp, dừng chặt chẽ, cải thiện hiệu quả tài chính.
Cảnh báo quan trọng: Chiến lược này có nguy cơ thua lỗ liên tục, đặc biệt là không hoạt động tốt trong thị trường biến động.
Thiết lập số cộng hưởng tối thiểu là 3 là tham số tối ưu được xác minh bằng nhiều lần kiểm tra lại. Thiết lập 2 sẽ làm tăng tần suất giao dịch nhưng giảm tỷ lệ chiến thắng, thiết lập 4 sẽ tăng độ chính xác nhưng giảm cơ hội giao dịch đáng kể.
Điều chỉnh các tham số cho các đặc điểm thị trường khác nhau:
Lịch sử cho thấy chiến lược này hoạt động tốt trong các thị trường đang có xu hướng, nhưng các nhà đầu tư cần nhận ra rằng hoạt động trong quá khứ không đại diện cho lợi nhuận trong tương lai, và quản lý rủi ro và quản lý vốn nghiêm ngặt là chìa khóa cho sự thành công.
/*backtest
start: 2026-01-07 15:30:00
end: 2026-03-15 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":500000}]
*/
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © FundedRelay
//@version=6
strategy("Quad Confluence Reversal v13 – Funded Relay FIXED", overlay=true, margin_long=100, margin_short=100, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// ────────────────────────────────────────────────
// INPUTS
// ────────────────────────────────────────────────
rsiLen = input.int(14, "RSI Length", minval=5)
volMult = input.float(1.5, "Volume Surge ×", minval=1.0, step=0.1)
minConfl = input.int(3, "Min Confluences (2-4)", minval=2, maxval=4)
useDiv = input.bool(true, "Use Divergence")
useStr = input.bool(true, "Use Structure Rejection")
useCdl = input.bool(true, "Use Reversal Candle")
useVol = input.bool(true, "Use Volume Confirmation")
showLbl = input.bool(true, "Show Signal Labels")
slMult = input.float(1.2, "SL ATR ×", step=0.1)
tpMult = input.float(2.5, "TP ATR ×", step=0.1)
// ────────────────────────────────────────────────
// INDICATORS
// ────────────────────────────────────────────────
rsi = ta.rsi(close, rsiLen)
emaFast = ta.ema(close, 50)
emaSlow = ta.ema(close, 200)
volAvg = ta.sma(volume, 20)
atrVal = ta.atr(14)
// ────────────────────────────────────────────────
// CONFLUENCE CONDITIONS
// ────────────────────────────────────────────────
bool divBull = false
bool divBear = false
if useDiv
float pLowPrice = ta.pivotlow(low, 5, 5)
float pLowRsi = ta.pivotlow(rsi, 5, 5)
float pHighPrice = ta.pivothigh(high, 5, 5)
float pHighRsi = ta.pivothigh(rsi, 5, 5)
if not na(pLowPrice) and not na(pLowRsi)
divBull := low < pLowPrice[10] and rsi > pLowRsi[10]
if not na(pHighPrice) and not na(pHighRsi)
divBear := high > pHighPrice[10] and rsi < pHighRsi[10]
bool strBull = close > emaSlow and low <= emaSlow and close > emaFast
bool strBear = close < emaSlow and high >= emaSlow and close < emaFast
bool cdlBull = (close > open and open <= low[1] and close >= high[1]) or
(low < low[1] and close > open and (close - open) > (high - close)*2)
bool cdlBear = (close < open and open >= high[1] and close <= low[1]) or
(high > high[1] and close < open and (open - close) > (close - low)*2)
bool volBull = volume > volAvg * volMult and close > open
bool volBear = volume > volAvg * volMult and close < open
// ────────────────────────────────────────────────
// CONFLUENCE COUNTERS – BLOQUES INDENTADOS (esto elimina el error)
// ────────────────────────────────────────────────
int conflBull = 0
if useDiv
if divBull
conflBull += 1
if useStr
if strBull
conflBull += 1
if useCdl
if cdlBull
conflBull += 1
if useVol
if volBull
conflBull += 1
int conflBear = 0
if useDiv
if divBear
conflBear += 1
if useStr
if strBear
conflBear += 1
if useCdl
if cdlBear
conflBear += 1
if useVol
if volBear
conflBear += 1
bool goLong = conflBull >= minConfl
bool goShort = conflBear >= minConfl
// ────────────────────────────────────────────────
// ENTRIES & EXITS
// ────────────────────────────────────────────────
if goLong
strategy.entry("Long 🟢", strategy.long)
if goShort
strategy.entry("Short 🔴", strategy.short)
strategy.exit("Exit Long", from_entry = "Long 🟢", stop = close - atrVal * slMult, limit = close + atrVal * tpMult)
strategy.exit("Exit Short", from_entry = "Short 🔴", stop = close + atrVal * slMult, limit = close - atrVal * tpMult)
// ────────────────────────────────────────────────
// PLOTS & VISUALS
// ────────────────────────────────────────────────
plot(emaFast, "EMA 50", color.orange, linewidth=1)
plot(emaSlow, "EMA 200", color.purple, linewidth=2)
plotshape(goLong, title="Long Signal", style=shape.triangleup, location=location.belowbar, color=color.new(#00FF41, 0), size=size.small, text="🟢📈")
plotshape(goShort, title="Short Signal", style=shape.triangledown, location=location.abovebar, color=color.new(#FF3366, 0), size=size.small, text="🔴📉")
if showLbl and goLong
label.new(bar_index, low, "🟢 LONG\nConfs: " + str.tostring(conflBull) + "/4", color=color.new(#00FF41, 40), textcolor=color.black, style=label.style_label_up, size=size.normal)
if showLbl and goShort
label.new(bar_index, high, "🔴 SHORT\nConfs: " + str.tostring(conflBear) + "/4", color=color.new(#FF3366, 40), textcolor=color.black, style=label.style_label_down, size=size.normal)
// ────────────────────────────────────────────────
// ALERTS
// ────────────────────────────────────────────────
alertcondition(goLong, title="🟢 LONG ATTACK", message="LONG – {{conflBull}}/4 – Vol Surge: {{volume > volAvg * volMult ? 'YES 🔥' : 'NO'}}")
alertcondition(goShort, title="🔴 SHORT ATTACK", message="SHORT – {{conflBear}}/4 – Vol Surge: {{volume > volAvg * volMult ? 'YES 🔥' : 'NO'}}")