Расширенная стратегия FVG Gap Pro+

FVG MTF IIR Trend RISK
Дата создания: 2025-09-01 18:05:50 Последнее изменение: 2025-09-01 18:05:50
Копировать: 0 Количество просмотров: 274
2
Подписаться
319
Подписчики

Расширенная стратегия FVG Gap Pro+ Расширенная стратегия FVG Gap Pro+

Насколько эффективна эта тактика?

Знаете ли вы, что 90% трейдеров на рынке охотятся за прибылью, но настоящие профессионалы ищут “ценовые вакуумы”? Advanced FVG Strategy Pro+ - это супероружие, предназначенное для захвата этих таинственных пробелов.

FVG (Fair Value Gap) - это просто “пустая зона”, оставленная при скачках цены, как если бы вы шли через водяной колодец, однажды возвращаясь, чтобы “пополнить колодец”.

Три ключевых черных технологии в центре внимания

1. Анализ нескольких временных рамок Стратегия может быть выполнена на 5-минутных картах, но с 1-часовым сигналом FVG, это как смотреть на горы в телескопе, с помощью увеличительного стекла, чтобы увидеть детали, более широкий обзор!

2. IIR тенденционный фильтр
Это не обычная скользящая средняя! Инженерный IIR-фильтр с низкой проходимостью позволяет точно определить направление тренда. Представьте, что это как “ренд-радар” для ваших сделок, который действует только в случае, если ветер идет в вашу сторону!

3. Умный риск-менеджмент Поддержка двух рисковых режимов: процентный и фиксированный, а также защита от взрыва. Как вождение автомобиля с двойной защитой от ремней безопасности и воздушных мешков, сделайте свои счета более безопасными!

Сценарий боевого применения

Лучше всего подходит для:

  • Поиск прорыва в условиях потрясений
  • Возвращение в трендовую ситуацию
  • Аккуратный снайпер вблизи важных опорных точек сопротивления

Руководство по избежанию ям:

  • Приостановка до важных новостей
  • Осторожность с мелкими валютами с низкой ликвидностью
  • Не забывайте корректировать параметры риска в зависимости от рыночных колебаний

Почему он выбрал эту тактику?

Традиционная стратегия либо слишком мало пропущенных сигналов, либо слишком много ложных прорывов. Эта стратегия, используя многочисленные фильтры, делает точные выстрелы “больше, чем не хватает”.

И самое приятное, что все параметры можно настроить, как настроить диктора, чтобы вы могли “настроить” наиболее подходящий ритм торговли в зависимости от различных рыночных условий.

Помните: хорошая стратегия не в том, чтобы торговать каждый день, а в том, чтобы торговать, когда вы уверены в себе!

Исходный код стратегии
/*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)