Chiến lược săn thanh khoản vàng

EMA Pivot ATR Liquidity Sweep
Ngày tạo: 2025-11-06 11:42:28 sửa đổi lần cuối: 2025-11-06 11:42:28
sao chép: 0 Số nhấp chuột: 197
2
tập trung vào
319
Người theo dõi

Chiến lược săn thanh khoản vàng Chiến lược săn thanh khoản vàng

Ồ, chiến lược này làm gì vậy?

Bạn có biết không? Có một nhóm “tiền thông minh” trên thị trường luôn thích đặt bẫy ở những vị trí quan trọng! Chiến lược này giống như một thợ săn có kinh nghiệm, chuyên nhận ra những bẫy và hoạt động ngược lại. Nói một cách đơn giản, khi giá cố tình “giả mạo phá vỡ” ngưỡng kháng cự quan trọng và sau đó nhanh chóng rút lui, chúng ta đi theo nhịp điệu của tiền lớn!

Hệ thống lọc ba phấn được tiết lộ

Hãy tập trung!Chiến lược này sử dụng ba lớp bảo vệ:

🔸 Bộ lọc xu hướngChu kỳ EMA 200 giống như một người lái xe cũ nói với bạn rằng bạn đang đi trên đường dốc hay đi xuống. 🔸 Nhận dạng bit quan trọngTự động tìm ra các điểm kháng cự để hỗ trợ “những người lính phải chiến đấu” 🔸 Kiểm tra thanh toán thanh khoản“Sự cố ý giả mạo” để nắm bắt những khoản tiền lớn

Giống như cá mập, bạn phải biết cá ở đâu, dùng cái gì và khi nào để đánh!

Sự hấp dẫn kỳ diệu của việc quét sạch thanh khoản

Hãy tưởng tượng rằng bạn đang xếp hàng để mua trà sữa, và bất chợt có người hét lên “miễn phí!” và mọi người chạy qua, nhưng thật ra đó là giả mạo, nhưng người thông minh đã vô tình xếp hàng trước.

Thị trường cũng như vậy! Giá “giả vờ” phá vỡ ngưỡng hỗ trợ (hạn chế lệnh dừng) và sau đó nhanh chóng rút lại, đây là thời điểm tốt nhất để tham gia. Chiến lược đặt vùng đệm ATR 0.6 lần, đảm bảo thực sự là “hạn chế” thay vì thực sự phá vỡ.

Kiểm soát rủi ro: tỷ lệ vàng 1:2

Hướng dẫn tránh hốMột số người cho rằng giao dịch giống như lái xe mà không thắt lưng an toàn, và chiến lược này buộc phải áp dụng tỷ lệ rủi ro và lợi nhuận là 1:2!

  • Hạn chế lỗ hổng đặt ở dưới mức quan trọng 0,5 lần ATR
  • Stop loss là khoảng cách gấp đôi stop loss.
  • Nếu bạn chỉ có 40% lợi nhuận, bạn vẫn có thể kiếm được lợi nhuận trong thời gian dài!

Tiền thưởng chiến đấu thực tế

Vì thị trường vàng có tính thanh khoản tốt, sự phá vỡ giả mạo rõ ràng, và chu kỳ 15 phút có thể lọc ra quá nhiều tiếng ồn.

Hãy nhớ rằng: Đừng tham lam! Chiến lược giúp bạn tìm được vị trí tốt nhất, hãy để thị trường và thời gian làm những gì còn lại

Mã nguồn chiến lược
/*backtest
start: 2025-10-06 00:00:00
end: 2025-11-05 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Gold 15m: Trend + S/R + Liquidity Sweep (RR 1:2)", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1, commission_type=strategy.commission.percent, commission_value=0.0)

// ---------------------- INPUTS ----------------------
symbol_input = input.string(title="Symbol (for reference only)", defval="XAUUSD")
tf_note = input.timeframe(title="Intended timeframe", defval="15")
ema_len = input.int(200, "Trend EMA length", minval=50)
pivot_left = input.int(5, "Pivot left bars", minval=1)
pivot_right = input.int(5, "Pivot right bars", minval=1)
sweep_atr_mult = input.float(0.6, "Liquidity sweep buffer (ATR ×)", step=0.1)
sl_atr_mult = input.float(0.5, "SL buffer beyond pivot (ATR ×)", step=0.1)
min_sweep_bars = input.int(1, "Max bars between sweep and reclaim", minval=1)
use_only_trend = input.bool(true, "Only trade with trend (EMA filter)")
rr = input.float(2.0, "Reward/Risk (TP = RR × Risk)", minval=1.0, step=0.1)
enable_long = input.bool(true, "Enable Longs")
enable_short = input.bool(true, "Enable Shorts")
show_zones = input.bool(true, "Plot pivots / zones")

// ---------------------- INDICATORS ----------------------
ema_trend = ta.ema(close, ema_len)
atr = ta.atr(14)

// ---------------------- PIVOT S/R DETECTION ----------------------
// Using builtin pivots: returns price of pivot when formed, else na
ph = ta.pivothigh(high, pivot_left, pivot_right)
pl = ta.pivotlow(low, pivot_left, pivot_right)

// We'll track last confirmed pivot prices and bar index
var float lastPivotHigh = na
var int   lastPivotHighBar = na
var float lastPivotLow = na
var int   lastPivotLowBar = na

if not na(ph)
    lastPivotHigh := ph
    lastPivotHighBar := bar_index - pivot_right

if not na(pl)
    lastPivotLow := pl
    lastPivotLowBar := bar_index - pivot_right

// ---------------------- LIQUIDITY SWEEP DETECTION ----------------------
// For a bullish liquidity sweep (buy):
// 1) Price makes a new low wick below lastPivotLow - (atr * sweep_atr_mult) (sweep candle)
// 2) Within `min_sweep_bars` the price reclaims: close > lastPivotLow  => bullish signal
var int sweepLowBar = na
var int sweepHighBar = na

// detect sweep down (wick pierce)
isSweepDown = false
if not na(lastPivotLow)
    // a candle with low sufficiently below pivot
    isSweepDown := low < (lastPivotLow - atr * sweep_atr_mult)

// detect sweep up (wick pierce)
isSweepUp = false
if not na(lastPivotHigh)
    isSweepUp := high > (lastPivotHigh + atr * sweep_atr_mult)

// record bar of sweep
if isSweepDown
    sweepLowBar := bar_index
if isSweepUp
    sweepHighBar := bar_index

// check reclaim after sweep: close back above pivot (buy reclaim) or close back below pivot (sell reclaim)
// ensure reclaim happens within `min_sweep_bars` bars after sweep
bullReclaim = false
bearReclaim = false

if not na(lastPivotLow) and not na(sweepLowBar)
    if (bar_index - sweepLowBar) <= min_sweep_bars and close > lastPivotLow
        bullReclaim := true

if not na(lastPivotHigh) and not na(sweepHighBar)
    if (bar_index - sweepHighBar) <= min_sweep_bars and close < lastPivotHigh
        bearReclaim := true

// ---------------------- TREND FILTER ----------------------
in_uptrend = close > ema_trend
in_downtrend = close < ema_trend

// final entry conditions
longCondition  = enable_long  and bullReclaim and (not use_only_trend or in_uptrend)
shortCondition = enable_short and bearReclaim and (not use_only_trend or in_downtrend)

// Note: variable name required by Pine, we set from input
use_only_trend := use_only_trend  // no-op to fix linter if needed

// ---------------------- ORDER EXECUTION & SL/TP CALC ----------------------
var int tradeId = 0

// For buy: SL = lastPivotLow - (atr * sl_atr_mult)
// risk = entry - SL
// TP = entry + rr * risk
if longCondition
    // compute SL and TP
    sl_price = lastPivotLow - atr * sl_atr_mult
    entry_price = close
    risk_amt = entry_price - sl_price
    tp_price = entry_price + (risk_amt * rr)
    // safety: only place trade if positive distances
    if risk_amt > 0 and tp_price > entry_price
        tradeId += 1
        // send entry and exit with stop & limit
        strategy.entry("Long_"+str.tostring(tradeId), strategy.long)
        strategy.exit("ExitLong_"+str.tostring(tradeId), from_entry="Long_"+str.tostring(tradeId), stop=sl_price, limit=tp_price)

// For sell: SL = lastPivotHigh + (atr * sl_atr_mult)
// risk = SL - entry
// TP = entry - rr * risk
if shortCondition
    sl_price_s = lastPivotHigh + atr * sl_atr_mult
    entry_price_s = close
    risk_amt_s = sl_price_s - entry_price_s
    tp_price_s = entry_price_s - (risk_amt_s * rr)
    if risk_amt_s > 0 and tp_price_s < entry_price_s
        tradeId += 1
        strategy.entry("Short_"+str.tostring(tradeId), strategy.short)
        strategy.exit("ExitShort_"+str.tostring(tradeId), from_entry="Short_"+str.tostring(tradeId), stop=sl_price_s, limit=tp_price_s)

// ---------------------- PLOTTING ----------------------
// EMA (trend)
plot(ema_trend, title="EMA Trend", linewidth=2)

// arrows and markers for entries
plotshape(longCondition, title="Buy Signal", location=location.belowbar, style=shape.labelup, text="BUY", textcolor=color.white, size=size.tiny, color=color.green)
plotshape(shortCondition, title="Sell Signal", location=location.abovebar, style=shape.labeldown, text="SELL", textcolor=color.white, size=size.tiny, color=color.red)

// plot last SL/TP lines for last trade (visual reference)
// find last open position and plot currently active SL/TP if any
if strategy.position_size > 0
    last_sl = strategy.position_avg_price - (strategy.position_avg_price - (lastPivotLow - atr * sl_atr_mult))
    // instead use exit order price from last exit? Simpler: plot SL/TP computed earlier if long
    // This may plot approximate lines; TradingView native order lines will also display.
    // We skip redundant plotting to avoid confusion.