Chiến lược khoảng cách FVG nâng cao Pro+

FVG MTF IIR Trend RISK
Ngày tạo: 2025-09-01 18:05:50 sửa đổi lần cuối: 2025-09-01 18:05:50
sao chép: 0 Số nhấp chuột: 274
2
tập trung vào
319
Người theo dõi

Chiến lược khoảng cách FVG nâng cao Pro+ Chiến lược khoảng cách FVG nâng cao Pro+

Ồ, chiến thuật này mạnh đến mức nào?

Bạn có biết không? 90% các nhà giao dịch trên thị trường đang theo đuổi sự giảm sút, nhưng những người chơi giỏi thực sự đang tìm kiếm “vùng trống giá”!

FVG (Fair Value Gap) đơn giản là “khu vực trống” để lại khi giá nhảy, giống như khi bạn đi bộ qua một cái hố nước, một ngày nào đó bạn sẽ phải quay lại để “làm đầy hố”.

Ba công nghệ đen cốt lõi

1. Phân tích nhiều khung thời gian Chiến lược này có thể được thực hiện trên một bản đồ 5 phút, nhưng với tín hiệu FVG 1 giờ, nó giống như nhìn vào núi xa bằng kính viễn vọng, nhìn vào chi tiết bằng kính lúp, tầm nhìn toàn diện hơn!

Bộ lọc xu hướng IIR
Đây không phải là một đường trung bình di chuyển thông thường, mà là một bộ lọc IIR thấp có thể xác định chính xác xu hướng. Hãy tưởng tượng rằng nó giống như một “trend radar” được lắp vào giao dịch của bạn và chỉ tấn công khi gió thuận lợi!

3. Quản lý rủi ro thông minh Hỗ trợ cả hai mô hình rủi ro, tỷ lệ phần trăm và tiền cố định, và hệ thống bảo vệ phòng nổ. Giống như lái xe với hai dây an toàn và túi khí, tài khoản của bạn an toàn hơn!

Phong cách sử dụng trong chiến tranh

Những trường hợp thích hợp nhất:

  • Tìm kiếm cơ hội trong tình trạng chấn động
  • Điểm nhập cảnh trong xu hướng giảm giá
  • Phòng thủ chính xác gần điểm kháng cự quan trọng

Hướng dẫn tránh hố:

  • Tạm dừng trước tin tức quan trọng
  • Các đồng tiền nhỏ có tính thanh khoản rất thấp nên cẩn thận
  • Hãy nhớ điều chỉnh các tham số rủi ro theo biến động của thị trường

Tại sao họ lại chọn chiến lược này?

Chiến lược truyền thống hoặc là có quá ít tín hiệu bỏ lỡ cơ hội, hoặc là có quá nhiều tín hiệu bị phá vỡ bởi các lỗ hổng giả.

Và điều thú vị nhất là tất cả các tham số đều có thể được điều chỉnh tùy chỉnh, giống như một người điều chỉnh, bạn có thể “đưa ra” nhịp giao dịch phù hợp nhất cho các môi trường thị trường khác nhau.

Hãy nhớ rằng: chiến lược tốt không phải là giao dịch mỗi ngày, mà là giao dịch khi bạn chắc chắn nhất!

Mã nguồn chiến lược
/*backtest
start: 2024-09-01 00:00:00
end: 2025-08-31 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Advanced FVG Strategy Pro+ (v6)", overlay=true,
  initial_capital=10000,
  default_qty_type=strategy.fixed,
  default_qty_value=1,
  commission_type=strategy.commission.percent,
  commission_value=0.05,
  calc_on_every_tick=true,
  process_orders_on_close=true)

// ---------------- Inputs ----------------
fvg_tf        = input.timeframe("", "FVG Timeframe (MTF)")
bodySens      = input.float(1.0, "FVG Body Sensitivity", step=0.1, minval=0.0)
mitigate_mid  = input.bool(true, "Mitigation on Midpoint")
rr_ratio      = input.float(2.0, "Risk/Reward Ratio", step=0.1)

risk_mode     = input.string("Percent", "Risk Mode", options=["Percent","Fixed $"])
risk_perc     = input.float(1.0, "Risk % (of Equity)", minval=0.1, maxval=10.0)
risk_fixed    = input.float(100.0, "Fixed $ Risk", minval=1.0)

useTrend      = input.bool(true, "Filter with FVG Trend")
rp            = input.float(10.0, "Trend Filter Ripple (dB)", minval=0.1, step=0.1)
fc            = input.float(0.1, "Trend Filter Cutoff (0..0.5)", minval=0.01, maxval=0.5, step=0.01)

extendLength  = input.int(10, "Extend Boxes (bars)", minval=0)

// ---------------- MTF candles ----------------
c1 = fvg_tf == "" ? close : request.security(syminfo.tickerid, fvg_tf, close,  lookahead = barmerge.lookahead_on)
o1 = fvg_tf == "" ? open  : request.security(syminfo.tickerid, fvg_tf, open,   lookahead = barmerge.lookahead_on)
h1 = fvg_tf == "" ? high  : request.security(syminfo.tickerid, fvg_tf, high,   lookahead = barmerge.lookahead_on)
l1 = fvg_tf == "" ? low   : request.security(syminfo.tickerid, fvg_tf, low,    lookahead = barmerge.lookahead_on)
h2 = fvg_tf == "" ? high[2] : request.security(syminfo.tickerid, fvg_tf, high[2], lookahead = barmerge.lookahead_on)
l2 = fvg_tf == "" ? low[2]  : request.security(syminfo.tickerid, fvg_tf, low[2],  lookahead = barmerge.lookahead_on)

// ---------------- FVG detection ----------------
float wick = math.abs(c1 - o1)
float avg_body = ta.sma(wick, 50)

bool bullFVG = (l1 > h2) and (c1 > h2) and (wick >= avg_body * bodySens)
bool bearFVG = (h1 < l2) and (c1 < l2) and (wick >= avg_body * bodySens)

// ---------------- Trend Filter (IIR low-pass) ----------------
float src = (h1 + l1) / 2.0
float epsilon = math.sqrt(math.pow(10.0, rp/10.0) - 1.0)
float d = math.sqrt(1.0 + epsilon * epsilon)
float c  = 1.0 / math.tan(math.pi * fc)
float norm = 1.0 / (1.0 + d * c + c * c)
float b0 = norm
float b1 = 2.0 * norm
float b2 = norm
float a1 = 2.0 * norm * (1.0 - c * c)
float a2 = norm * (1.0 - d * c + c * c)

var float trend = na
var float trend1 = na
var float trend2 = na
trend := bar_index < 2 ? src : (b0 * src + b1 * src[1] + b2 * src[2] - a1 * nz(trend1) - a2 * nz(trend2))
trend2 := trend1
trend1 := trend

bool trendUp   = trend > nz(trend[1])
bool trendDown = trend < nz(trend[1])

// ---------------- Strategy Conditions ----------------
bool longCond  = bullFVG and (not useTrend or trendUp)
bool shortCond = bearFVG and (not useTrend or trendDown)

// stop loss / take profit (based on MTF gap edges)
float longSL  = l1
float shortSL = h1
float longRisk = close - longSL
float shortRisk = shortSL - close
float longTP  = close + (close - longSL) * rr_ratio
float shortTP = close - (shortSL - close) * rr_ratio

// ---------------- Position sizing ----------------
float equity = strategy.equity
float riskCash = risk_mode == "Percent" ? (equity * risk_perc / 100.0) : risk_fixed
float longQty  = (longRisk > 0.0) ? (riskCash / longRisk) : na
float shortQty = (shortRisk > 0.0) ? (riskCash / shortRisk) : na

// safety cap: avoid ridiculously large position sizes (simple protective cap)
float maxQty = math.max(1.0, (equity / math.max(1e-8, close)) * 0.25)  // cap ~25% equity worth of base asset
if not na(longQty)
    longQty := math.min(longQty, maxQty)
if not na(shortQty)
    shortQty := math.min(shortQty, maxQty)

// small extra guard (do not trade if qty becomes extremely small or NaN)
bool canLong  = longCond and not na(longQty) and (longQty > 0.0)
bool canShort = shortCond and not na(shortQty) and (shortQty > 0.0)

// ---------------- Orders ----------------
if canLong
    strategy.entry("Long", strategy.long, qty = longQty)
    strategy.exit("Long TP/SL", "Long", stop = longSL, limit = longTP)

if canShort
    strategy.entry("Short", strategy.short, qty = shortQty)
    strategy.exit("Short TP/SL", "Short", stop = shortSL, limit = shortTP)

// ---------------- Visuals ----------------
plotshape(longCond, title="Bull FVG", color=color.new(color.green, 0), style=shape.triangleup, location=location.belowbar, size=size.small)
plotshape(shortCond, title="Bear FVG", color=color.new(color.red, 0), style=shape.triangledown, location=location.abovebar, size=size.small)
plot(useTrend ? trend : na, title="FVG Trend", color=trendUp ? color.lime : trendDown ? color.red : color.gray, linewidth=2)