FVG Retest Engine
Complete User Manual
📐 Designed and Optimized for 15-Minute Crypto Charts
VERSION 2.0 — MARCH 2026 — BTCUSDT • ETHUSDT • SOLUSDT • XAUUSD
FVG Engine →What Is This Indicator and Why Should You Care?
The FVG Retest Engine is a TradingView indicator that tells you when to buy (go long) or sell (go short) a cryptocurrency. It does this by combining three powerful ideas from professional trading:
Watches how price creates higher highs and lower lows, detecting when the trend changes direction.
Identifies price zones where the market moved so fast that it left a "gap" (an imbalance). These gaps often act as magnets — price tends to come back and "retest" them.
Instead of using fixed settings that only work in one market condition, the indicator automatically adjusts 8 different parameters based on current market volatility. When the market is wild and fast, it becomes more aggressive. When the market is calm and slow, it becomes more patient.
In plain language: the indicator waits for a trend change, finds a price gap in the direction of the new trend, then waits for price to come back and touch that gap. When all conditions line up, it gives you a signal with exact entry price, stop-loss, and three take-profit targets.
This indicator is designed for crypto traders using the 15-minute timeframe on Bybit (or any TradingView-supported exchange). You do NOT need to be an expert — this manual will explain everything from scratch. However, you should understand the basics of buying/selling cryptocurrency and using a trading exchange.
Key Concepts Explained for Beginners
🕯️ 2.1 — What Is a Candlestick?
Each bar on your chart is called a candlestick. On a 15-minute chart, each candle represents 15 minutes of price action. A candle has four parts: the Open (where price started), Close (where it ended), High (the highest point), and Low (the lowest point).
The thick part is called the "body" (between open and close). The thin lines above and below are called "wicks" (showing the high and low extremes).
A 🟢 green (bullish) candle means price went up (close > open). A 🔴 red (bearish) candle means price went down (close < open).
📐 2.2 — What Is Market Structure?
Market structure is the pattern of "swing highs" and "swing lows" that price creates. A swing high is a peak — a point where price went up, then reversed and came back down. A swing low is a valley — a point where price went down, then reversed and came back up.
Price broke past a previous swing high (in an uptrend) or swing low (in a downtrend), confirming the existing trend continues.
The trend direction flipped — for example, price was making lower lows (downtrend) and then broke above a swing high (potential uptrend start). This is the most important signal for trend reversals.
🔲 2.3 — What Is a Fair Value Gap (FVG)?
A Fair Value Gap is a three-candle pattern where the middle candle moved so aggressively that a gap is left between candle 1 and candle 3:
🟢 Bullish FVG: The low of candle 3 is higher than the high of candle 1, and the middle candle was bullish. This creates a gap where price is "missing."
🔴 Bearish FVG: The high of candle 3 is lower than the low of candle 1, and the middle candle was bearish.
Think of FVGs as "unfinished business" — the market moved too fast and often returns to these zones. 🧲
🔁 2.4 — What Is a Retest?
A retest happens when price returns to a significant zone (like an FVG) after moving away from it. After a trend change (CHoCH or BOS), price often pulls back to the FVG zone before continuing in the new direction. This pullback is the ideal entry point because it offers a better price with a well-defined stop-loss.
🛡️ 2.5 — What Are Stop-Loss (SL) and Take-Profit (TP)?
Stop-Loss (SL) is the price level where you automatically exit a losing trade to limit your loss. If you buy at $100 and set SL at $98, you lose a maximum of 2%.
Take-Profit (TP) is the price level where you automatically exit a winning trade to lock in profit. This indicator uses three TP levels (TP1, TP2, TP3) and closes a portion of your position at each one.
Breakeven (BE) means moving your stop-loss to your entry price after TP1 is hit. This way, even if price reverses after TP1, you lose nothing on the remaining position. 🙌
⚡ 2.6 — What Are Leverage and Margin?
Margin is the actual money you put up for a trade. Leverage multiplies your exposure. With $1,000 margin and 10x leverage, you control a $10,000 position. If price moves 1% in your favor, you earn $100 (10% of your margin). But if it moves 1% against you, you lose $100.
Higher leverage means higher risk. A 10% adverse move with 10x leverage wipes out your entire margin. This indicator uses 10x leverage by default. Never risk money you cannot afford to lose. Start with small amounts until you are comfortable with the system.
📏 2.7 — What Is ATR (Average True Range)?
ATR measures how much price moves on average over a period (default: 14 candles). If BTC has an ATR of $500 on the 15-minute chart, that means BTC typically moves about $500 per candle. The indicator uses ATR to measure volatility and automatically adjust its parameters — this is the core of the adaptive engine. 🧠
How to Install the Indicator on TradingView
Follow these steps to add the indicator to your chart:
- 🌐 Open TradingView (tradingview.com) and log in to your account. You need at least a free account, but a paid plan (Essential or higher) is recommended for real-time data.
- 🪙 Open a crypto chart. In the search bar at the top, type the pair you want (e.g.,
BTCUSDT,ETHUSDT, orSOLUSDT). Select the Bybit version if available. - ⏱️ Set the timeframe to 15 minutes (15M). Click on the timeframe selector at the top of the chart and choose "15" or "15m".
- 📊 Click "Indicators" (the icon that looks like a wave or "fx" at the top of the chart).
- 🔍 In the search box, type "FVG Retest Engine" or "WillyAlgoTrader". Look for the indicator titled "FVG Retest Engine | SMC Strategy [WillyAlgoTrader]".
- ➕ Click on it to add it to your chart. You should see it appear as an overlay on your candlestick chart.
- ⚙️ Click the gear icon (or double-click the indicator name) to open the settings panel. This is where you will enter the preset values described in Chapter 8.
After entering all settings for a specific pair, click the three dots (...) next to the indicator name and select "Save indicator template". Name it something like "FVG BTC 15M". This lets you instantly load these settings later without re-entering everything.
How the Indicator Works (Step by Step)
The indicator runs through a strict sequence of checks on every candle. A signal only fires when ALL conditions are met:
- 📏 Measure Volatility — Calculates ATR over 14 candles, divides by current price to get "ATR%" — a normalized volatility measure. Computes percentile rank over lookback period (default 200 bars). Result: 0–1 scale (0 = calmest, 1 = wildest).
- 🎛️ Set All Adaptive Parameters — Using the 0–1 volatility rank, interpolates between min/max for each adaptive parameter. Example: SP min=6, max=18, rank=0.5 → SP = 12.
- 📐 Detect Market Structure — Finds swing highs/lows using adaptive Structure Period. Identifies bullish breaks (above swing high) and bearish breaks (below swing low). Breaks against previous trend = CHoCH.
- 🔫 Arm the Retest Engine — Valid structure break + no active trade → "armed" state. Engine starts scanning for a matching FVG. Has adaptive timeout — resets if no valid retest found within Max Bars window.
- 🔲 Find and Score FVGs — Scans all stored FVGs for: matching direction, within max distance, above min size. Scores each based on proximity, penetration depth, size relative to ATR. Highest-scoring FVG is selected.
- ✅ Confirm the Retest — Price must interact with the selected FVG zone according to the chosen confirmation method (Body Touch, Wick Touch, Close Inside, or Body or Wick) within adaptive touch tolerance.
- 🧪 Apply Filters — Volume Filter: current volume > average. DI Filter: directional indicator favors trade direction. MTF Filter: higher timeframe trend agrees.
- 🚀 Fire the Signal — If everything passes → LONG or SHORT label on chart, draws TP1/TP2/TP3 and SL lines, starts managing the trade. TP levels = ATR × VM × coefficient (0.8 / 1.5 / 2.5).
Understanding What You See on the Chart
🏷️ 5.1 — Entry Labels
"LONG ↻" (green label) — a confirmed buy signal. The ↻ symbol means it is a retest entry. Below: FVG age, SP value, Touch Tolerance, Volatility Multiplier, Guaranteed Stop %, and star rating.
"SHORT ↻" (red label) — a confirmed sell signal with the same additional information.
📏 5.2 — Trade Lines
| Line | Color | Meaning |
|---|---|---|
| Entry Price | ⬜ White solid | Your entry price |
| Take Profits | 🟢 Green dashed | TP1, TP2, TP3 — each shows price, % gain, position portion |
| Stop Loss | 🔴 Red solid | If hit, remaining position closes at a loss |
| Breakeven | 🔵 Blue solid | After TP1 hit, SL moves to entry price |
| Original SL | 🟠 Orange dotted | Old SL shown as faded reference after breakeven |
🏁 5.3 — Close Labels
"SL" (red) = closed at stop-loss | "BE" (blue) = closed at breakeven | "3 TP [✓]" (green) = all three TPs hit — full win! 🎉
📝 5.4 — Trade Summary Label
When a trade closes, a detailed summary appears at the entry bar: opening date/time, total profit in USD, and each level (SL, TP1, TP2, TP3) with % and checkmark if hit.
📊 5.5 — Information Tables
| Table | Position | Shows |
|---|---|---|
| Current Trade Info | 📍 Top-right | Status, direction, entry, SL, TPs, R:R, profit, margin, leverage, SP value |
| Daily Profit | 📍 Bottom-left | Profit for last 7 days + today |
| Backtesting | 📍 Bottom-right | Total trades, wins, losses, win rate, total profit |
| Monthly Report | 📍 Center | Optional 30-day breakdown with profitable-days ratio |
⭐ 5.6 — Star Rating
Each signal gets a strength score from 1 to 4 stars:
⭐ Retest event confirmed (+1) | ⭐ ADX + DI alignment (+1) | ⭐ HTF trend agreement (+1) | ⭐ Volume confirmation (+1)
More stars = higher confidence. Aim to take trades with 3+ stars whenever possible. 🎯
The Adaptive Engine: Why Parameters Self-Adjust
The core innovation of this indicator is that 8 parameters automatically change based on market volatility. Here is why each one matters and how it adapts:
| Parameter | What It Controls | 🔥 High Vol | 🧊 Low Vol |
|---|---|---|---|
| Structure Period (SP) | Candles to identify swing H/L | Low SP → fast reaction | High SP → noise filtering |
| Touch Tolerance (TT) | How close price must get to FVG | Tight TT → precise entries | Wide TT → more opportunities |
| Min FVG Size | Filters out tiny FVGs | Large minimum → strict | Small minimum → permissive |
| Guaranteed Stop % | Minimum SL distance from entry | Wider stop → room for swings | Tighter stop → less risk |
| Volatility Multiplier (VM) | Scales TP/SL distances | Wider targets | Tighter targets |
| Max Bars to Wait | Candles to wait for retest | Shorter window | Longer window |
| Max FVG Distance | How far back FVG can be | Closer FVGs only | Further FVGs allowed |
| Volume Multiplier | Volume filter threshold | Stricter filter | Softer filter |
📐 Structure Period (SP)
Controls how many candles are used to identify swing highs and lows. A smaller SP (e.g., 5–7) detects swings faster — good for volatile markets where trends change quickly. A larger SP (e.g., 14–15) filters out noise — good for calm markets.
High volatility → low SP (fast reaction). Low volatility → high SP (noise filtering).
🎯 Touch Tolerance (TT)
Defines how close price must get to the FVG zone to count as a "touch". A tight tolerance (0.025%) requires near-exact contact. A wide tolerance (0.1%) allows more room.
High volatility → tight TT (precise entries). Low volatility → wide TT (more entry opportunities).
📏 Min FVG Size
Filters out FVGs that are too small to be meaningful. In volatile markets, small FVGs are noise. In calm markets, even small FVGs can be valid.
High volatility → large minimum (strict). Low volatility → small minimum (permissive).
🛡️ Guaranteed Stop %
Sets a minimum distance from entry to stop-loss. In volatile markets, price swings are larger and a tight stop gets hit by normal noise.
High volatility → wider stop. Low volatility → tighter stop.
⚡ Volatility Multiplier (VM)
Scales the TP/SL distances. In volatile markets, price can travel further, so targets should be wider.
High volatility → wider targets. Low volatility → tighter targets.
⏳ Max Bars to Wait
How many candles the engine waits for a retest after a structure break. Fast markets produce quick retests; slow markets need more time.
High volatility → shorter window. Low volatility → longer window.
📍 Max FVG Distance
How far back (in bars) an FVG can be from the structure break and still be considered valid.
High volatility → closer FVGs only. Low volatility → further FVGs allowed.
📊 Volume Multiplier
Sets the threshold for the volume filter. In volatile markets, a stricter volume requirement filters out weak moves.
High volatility → stricter filter. Low volatility → softer filter.
Complete Settings Reference
🎨 7.1 — Theme Settings
| Setting | Description |
|---|---|
| Use Dark Theme | Toggle dark theme for dark chart backgrounds |
| Color Theme | Default, Modern Slate, Cyberpunk Neon, Nordic Minimalist |
📐 7.2 — Structure Settings
| Setting | Description |
|---|---|
| Use Adaptive SP | ON = SP auto-adjusts. OFF = uses fixed value |
| Fixed Structure Period | Used when Adaptive SP is OFF (default: 8) |
| Adaptive Method | ATR Percentile (smoothest), Realized Volatility, or ATR Buckets |
| Volatility Lookback | Bars for percentile rank (default: 200) |
| Min / Max Structure Period | SP floor for high volatility (default: 5) and ceiling for low volatility (default: 15) |
| ATR% Low Threshold | ATR Buckets mode only — below this = low volatility |
| ATR% High Threshold | ATR Buckets mode only — above this = high volatility |
| DI Filter | Require +DI > −DI for longs, vice versa for shorts |
🔲 7.3 — FVG Retest Entry
| Setting | Description |
|---|---|
| Retest Confirmation | How price must touch the FVG: Wick Touch, Body Touch, Close Inside, or Body or Wick |
| Adaptive Max Bars | ON = max wait bars auto-adjusts; OFF = uses fixed value |
| Max Bars to Wait [Fixed] | Fixed bars to wait for retest (default: 15) |
| Adaptive Max Bars Min/Max | Range for adaptive mode (default: 8–25) |
| Require CHoCH | ON = only take signals after trend reversal, not continuation |
| Stop Below/Above FVG | ON = place SL just beyond the FVG zone + ATR padding |
| Adaptive Max FVG Distance | ON = max FVG distance auto-adjusts |
| Max FVG Distance [Fixed] | Fixed max distance from structure break (default: 21) |
| Adaptive Min FVG Size | ON = minimum FVG size auto-adjusts |
| Min FVG Size [Fixed] | Fixed minimum in ATR multiples (default: 0.3) |
| Adaptive Touch Tolerance | ON = touch tolerance auto-adjusts |
| Touch Tolerance [Fixed] | Fixed tolerance percentage (default: 0.025%) |
| Require Candle Direction | ON = long needs green candle, short needs red |
📊 7.4 — Volume Filter
| Setting | Description |
|---|---|
| Use Volume Filter | Require volume above average (default: ON) |
| Volume Period | SMA period for average volume (default: 21) |
| Adaptive Volume Multiplier | ON = volume threshold auto-adjusts |
| Volume Multiplier [Fixed] | Fixed multiplier (default: 1.0) |
🔭 7.5 — MTF Trend Filter
| Setting | Description |
|---|---|
| Use MTF Trend Filter | Only trade in direction of HTF trend (default: ON) |
| Higher Timeframe | Timeframe to check (default: 5min) |
| HTF Trend Method | EMA Trend, Structure Trend, or EMA + ADX |
| HTF Fast/Slow EMA | EMA periods for trend detection (default: 13/21) |
🛡️ 7.6 — Risk Management
| Setting | Description |
|---|---|
| Use Custom TP/SL Levels | ON = override auto TP with fixed percentages |
| Take Profit 1/2/3 (%) | Custom TP percentages (default: 1.5/3.0/5.0) |
| Guaranteed Stop | ON = enforce minimum SL distance from entry |
| Adaptive Guaranteed Stop % | ON = GSP auto-adjusts |
| Guaranteed Stop % [Fixed] | Fixed minimum SL distance (default: 1.5%) |
| Adaptive Volatility Multiplier | ON = VM auto-adjusts for TP/SL scaling |
| Volatility Multiplier [Fixed] | Fixed VM (default: 1.0) |
| TP1/TP2/TP3 Close % | Position portion closed at each TP (default: 60/30/10) |
💰 7.7 — Trade Settings
| Setting | Description |
|---|---|
| Margin (USD) | Your trade margin in dollars (default: $1,000) |
| Leverage | Leverage multiplier (default: 10x) |
🔲 7.8 — FVG Visualization
| Setting | Description |
|---|---|
| Show Fair Value Gaps | Draw FVG zones on chart (default: OFF) |
| Max FVG Zones | Maximum number of FVG boxes displayed |
| Auto-Mitigate | Remove FVGs when price fully crosses them |
| Max FVG Age | Remove FVGs older than this many bars |
Ready-to-Use Presets (Bybit, 15M Timeframe)
These presets were optimized on historical data from a specific period. Past performance does not guarantee future results. Always monitor your trades and be prepared to adjust settings if market conditions change significantly.
How to Enter the Settings on TradingView
We'll use BTCUSDT as an example, but the process is identical for all pairs:
- ⚙️ Open Settings: Double-click the indicator name or click the gear icon.
- 📐 Structure Settings group: Check "Use Adaptive Structure Period". Leave "Fixed SP" at default (ignored when adaptive is ON).
- 🎛️ Adaptive SP Settings: Set "Adaptive Method" to preset value (e.g., "Realized Volatility" for BTC). Set Lookback to 356, Min SP to 6, Max SP to 18. DI Filter → OFF.
- 🔲 FVG Retest Entry: Set "Retest Confirmation" to preset value. Enable all adaptive toggles and set their Min/Max ranges. Set CHoCH and Stop Below FVG per preset.
- 📊 Volume Filter: Check/uncheck per preset. If ON, set Period and enable Adaptive Volume Multiplier with Min/Max.
- 🔭 MTF Trend Filter: Check "Use MTF Trend Filter". Set Higher Timeframe, Method, and EMA values.
- 🛡️ Risk Management: Enable Guaranteed Stop + Adaptive GSP with Min/Max. Enable Adaptive VM with Min/Max.
- 💰 Position Sizing: Enter TP1/TP2/TP3 Close percentages from preset.
- ⚡ Trade Settings: Set Margin to $1,000 and Leverage to 10.
- 🔲 FVG: Set Max FVG Age to preset value. Optionally enable "Show Fair Value Gaps".
- ✅ Click OK to apply. Historical trades should appear on the chart!
After applying, check the Backtesting Table (bottom-right). It should show the approximate win rate from the preset. If numbers differ significantly, double-check each setting. Enable "Show Adaptive SP Debug" temporarily to verify SP changes dynamically.
How to Read Signals and Manage Trades
🚦 10.1 — When a Signal Appears
When you see a "LONG ↻" or "SHORT ↻" label on the current candle:
- ⭐ Check the star rating. 3–4 stars = high confidence. 1–2 stars = consider skipping or smaller position.
- ⬜ Note the entry price (trade info table + white line).
- 🔴 Note the stop-loss (red line). Set this SL on your exchange.
- 🟢 Note TP1, TP2, TP3 (green lines). These are your take-profit targets.
💰 10.2 — Position Sizing on the Exchange
The indicator assumes $1,000 margin with 10x leverage ($10,000 position). Percentages (SL%, TP%) remain the same regardless of position size. On Bybit: set entry as Limit Order at signal price, then set SL and TP levels shown by the indicator.
✂️ 10.3 — Partial Closes
Example with ETHUSDT preset (50/40/10): when price hits TP1 → close 50%. TP2 → close 40%. Remaining 10% rides to TP3. After TP1 is hit → move SL to breakeven (entry price). 🛡️
If partial closes feel complicated, just close your entire position at TP1 (set TP1 Close % to 100). This captures the most reliable profit. As you gain experience, switch to split approach for better overall returns.
⏳ 10.4 — What to Do When No Trade Is Active
When status shows "CLOSED" — simply wait. Do not force trades. The indicator will arm itself on the next valid structure break. This could take minutes or hours. Patience is critical. 🧘
Setting Up Alerts
Alerts notify you when a signal fires, so you don't need to watch the chart constantly. 👀
- Right-click on the chart and select "Add Alert", or click the 🔔 alarm clock icon in the top toolbar.
- In the "Condition" dropdown, select "FVG Retest Engine | SMC Strategy [WillyAlgoTrader]".
- In the second dropdown, choose your alert type:
🟢 "FVG LONG" — buy signals only
🔴 "FVG SHORT" — sell signals only
🔵 "FVG ANY TRADE" — both buy and sell
🤖 "JSON LONG / JSON SHORT" — structured JSON for webhook bots - Set the notification method (popup, email, phone app, webhook).
- Set the expiration (free plan limits alerts). Click "Create". ✅
The alert message automatically includes the ticker, entry price, SL, TP1, TP2, and TP3 levels. 📩
Backtesting: How to Check Performance
📊 12.1 — Using the Backtest Table
The Backtesting Results table (bottom-right) shows: total trades, wins, losses, win rate, and total profit. Default covers last 30 days. Adjust with:
Backtest Period (days): Set to 7, 14, 30, 60, or any value. | Use Date Range: Enable for specific From/To date analysis.
📐 12.2 — Interpreting Results
A "win" = at least TP1 hit OR trade closes at breakeven. A "loss" = stop-loss hit before TP1. Total Profit accounts for partial closes, breakeven moves, and actual USD amounts.
Backtesting on TradingView uses historical candle data and cannot perfectly simulate real-world conditions like slippage, order fill delays, or exchange outages. Real trading results will differ. Use backtesting to compare settings and validate logic, not as a guarantee.
⏪ 12.3 — Scrolling Back in Time
Scroll left on the chart to see more historical trades. Load more bars with Ctrl + Left Arrow, or "Load more data" on paid plans. More data = more trades in the backtest.
Common Mistakes and How to Avoid Them
BYBIT:BTCUSDT.P. Volume filters calibrated on Bybit won't work correctly on Binance/Coinbase.Frequently Asked Questions
Risk Disclaimer
This indicator is a technical analysis tool, not financial advice. It does not guarantee profits and should not be the sole basis for trading decisions.
Trading cryptocurrency with leverage carries significant risk. You can lose your entire margin on a single trade. Markets can gap through stop-losses, exchanges can experience outages, and past performance does not predict future results.
The win rates mentioned in this manual (70.5%, 75.9%, 81.3%, 89.1%, etc.) are historical backtest results from a specific period on specific settings. They are not guarantees.
📜 Rules for Responsible Trading
🔒 Never risk more than 1–2% of your total trading capital on a single trade. If you have $10,000, your maximum risk per trade should be $100–$200.
🚫 Never trade with money you need for living expenses, rent, food, or emergencies.
🔰 Start with a demo account or very small amounts until you fully understand the system.
📓 Keep a trading journal — write down every trade, the signal details, and the result.
🧘 Take breaks. If you experience a string of losses, step away from the charts for a day.
🚨 Do not increase leverage or position size after losses to "make it back." This is the fastest way to blow an account.