Market Structure Smart Money Concepts Indicators Full Documentation

TDU Market Structure — Smart Money Concepts for NinjaTrader 8

The most complete Smart Money Concepts (SMC) indicator for NinjaTrader 8. Break of Structure, Change of Character, Supply & Demand Zones, Order Blocks, Fair Value Gaps, Volume Profiles, Fibonacci, and more — all on one chart.

BOS & ChoCh Supply & Demand Order Blocks Fair Value Gaps Volume Profile Fibonacci Multi-Timeframe 16 Strategy Plots 7-Day Free Trial

Follow the smart money. This indicator brings institutional-grade Smart Money Concepts to NinjaTrader 8 — detecting Break of Structure, Change of Character, supply/demand zones, order blocks, fair value gaps, volume profiles, Fibonacci retracements, equal highs/lows, and trendline liquidity. With full multi-timeframe support, a right-click easy access menu, and 16 exportable plots for strategies and AlgoStudio Pro.

Why Choose This Indicator

All SMC Features In One Indicator

BOS, ChoCh, Supply/Demand, Order Blocks, FVG, Volume Profiles, Fibonacci, Equal Highs/Lows, Trendline Liquidity, Breaker Blocks — all in a single indicator. No need for multiple addons.

Follow The Big Money

Detects institutional moves by identifying Break of Structure and Change of Character patterns. Know the trend, find entries at supply/demand zones, order blocks, and fair value gaps.

Multi-Timeframe On One Chart

Display market structure from 4H, 1H, 15min, and 5min all on one 5-minute chart. See the big picture and fine-grain detail simultaneously. No competitor offers this.

Best Value + Free Trial

Full 7-day free trial with every feature unlocked. No credit card required. Lifetime license at a fraction of the cost of competing products.

What you get: BOS & ChoCh detection (macro + micro) • Strong/Weak swing hi/lo • Supply & demand zones with breaker blocks • Order blocks with tested/broken/breaker states • Fair value gaps with breaker blocks • BOS volume profiles with POC & value area • 6 Fibonacci retracement levels • Equal highs/lows • Trendline liquidity • Trend display & paint bars • Multi-timeframe support • Right-click easy access menu • Alerts • 16 exportable strategy plots

Detection Methods

TDU Market Structure offers two detection algorithms for identifying swing highs and lows. The detection method you choose is fundamental — it determines how the indicator finds the structural pivots that drive every downstream feature: BOS, ChoCh, supply/demand zones, order blocks, Fibonacci levels, and more. Choosing the right method for your trading style and instrument is the first step to getting the most out of this indicator.

Why Detection Method Matters

Every SMC feature in this indicator depends on accurate swing detection. If swings are too sensitive, you get noise — too many false BOS signals, cluttered supply/demand zones, and unreliable order blocks. If swings are too insensitive, you miss important structural changes. The two detection methods let you find the right balance for your instrument, timeframe, and trading style.

PriceAction Mode

Uses pullback-based detection with configurable thresholds. The indicator identifies a new swing when price pulls back by a minimum amount from a recent high or low. You control the minimum pullback size using three measurement options:

  • ATR: Pullback must exceed BOSATRMultiplier × ATR(BOSATRPeriod). This adapts automatically to volatility — larger pullbacks are required on volatile instruments.
  • Percentage: Pullback must exceed a fixed percentage of the previous swing range. Good for consistent relative measurements.
  • Ticks: Pullback must exceed a fixed number of ticks. Best when you want absolute control over minimum swing size.

PriceAction mode gives you the most granular control. Use it when you want to fine-tune swing sensitivity for a specific instrument or when you need pullback-based detection that adapts to volatility via ATR.

Fractal Mode (Default)

Uses fractal-based swing detection. A fractal high is confirmed when there are N bars on each side with lower highs — the high stands out as a local peak. A fractal low is confirmed when there are N bars on each side with higher lows. The FractalSize parameter controls how many confirming bars are needed on each side (default: 4).

This method is simpler to configure and produces more consistent results across different instruments and timeframes. A higher FractalSize (e.g. 6–8) filters out minor swings and focuses on major structure. A lower value (e.g. 2–3) captures more swings for scalping or micro-structure analysis.

Which should you use? Start with Fractal mode (the default). It works well on most instruments with minimal tuning. Switch to PriceAction mode if you need volatility-adaptive detection or want precise control over minimum swing size for a specific setup.
Setting Type Default Description
SmcDetectionMethod TDUMarketStructureDetectionType Fractal Detection algorithm: PriceAction or Fractal
FractalSize int 4 Number of bars on each side for fractal detection (Fractal mode only)
BOSPullBackType TDUMarketStructurePullbackMode ATR Pullback measurement: ATR, Percentage, or Ticks (PriceAction mode only)
BOSATRPeriod int 14 ATR period for pullback detection (PriceAction + ATR mode)
BOSATRMultiplier double 2.0 ATR multiplier for minimum pullback (PriceAction + ATR mode)
BOSPullbackPercentage double 30 Minimum pullback as percentage of swing range (PriceAction + Percentage mode)
BOSPullbackTicks double 80 Minimum pullback in ticks (PriceAction + Ticks mode)
Tip: The Fractal detection mode is recommended for most traders. It produces cleaner swing detection that adapts well to different instruments. Use PriceAction mode if you want more control over the minimum pullback size.

Break of Structure (BOS)

Break of Structure (BOS) example on NinjaTrader chart

A Break of Structure (BOS) is the cornerstone of Smart Money Concepts trading. It occurs when price breaks through a significant swing high or swing low, confirming the prevailing trend direction. A BOS to the upside (price breaks above a prior swing high) confirms a bullish trend. A BOS to the downside (price breaks below a prior swing low) confirms a bearish trend.

In SMC theory, institutions move price in a structured way — creating a series of higher highs and higher lows (bullish) or lower highs and lower lows (bearish). Each time price breaks past a prior swing point, it signals that large capital is continuing to drive the trend. The BOS is your confirmation that the trend is intact.

Macro vs. Micro BOS

The indicator detects both macro BOS (main structure) and micro BOS (smaller moves within the main trend). Macro BOS uses the main swing detection algorithm and captures the dominant trend. Micro BOS detects smaller structural breaks between major swings — useful for fine-tuning entries or scalping within a larger move. On multi-timeframe setups, macro BOS on a higher timeframe gives you the direction while micro BOS on a lower timeframe helps you time entries.

Why BOS Matters for Your Trading

BOS is not a trade entry signal — it is a directional filter. It tells you which side of the market to be on. Once a bullish BOS occurs, you know the smart money is pushing price up, and you should be looking for long opportunities. Once a bearish BOS occurs, you should only look for shorts. This single filter eliminates the majority of losing trades by keeping you aligned with the dominant order flow.

How to trade with BOS:
  1. Wait for a BOS to confirm the trend direction (bullish or bearish)
  2. After BOS, wait for a pullback into a demand zone (bullish) or supply zone (bearish)
  3. Look for confluence: does the pullback also touch an order block, fair value gap, or Fibonacci level?
  4. Enter your trade at the confluence zone with a stop-loss behind the zone
  5. Target the weak swing high (bullish) or weak swing low (bearish)

Structure Mapping

Controls how BOS lines are drawn on the chart. Candle_Close maps the BOS line to the closing price of the breakout candle — this is the stricter setting and produces fewer false breaks. Candle_Wick maps the line to the wick (high/low) and detects breaks earlier, including intra-bar wicks that don't close beyond the level. Most traders prefer Candle_Close for a more reliable signal.

Display Types

Choose how BOS labels appear on the chart: None (hidden), LineOnly (horizontal line only), Text (line + BOS label), or TextAndTimeFrame (line + label + timeframe, ideal for multi-timeframe setups where you need to know which timeframe generated the BOS).

Setting Type Default Description
BOSDisplayType TDUMarketStructureDisplayType Text How BOS lines are displayed
BOSStructureMapping TDUMarketStructureMapping Candle_Close Map BOS lines to candle close or wick
NumberOfBOSToDisplay int 0 Max BOS lines to show (0 = all)
TrendBosCount int 1 Number of BOS needed to confirm a trend change
BOSAlert bool false Enable/disable BOS alerts
BOSAlertSound string Alert2.wav Sound file for BOS alerts
BullishBOSColor Stroke DodgerBlue, Solid, 2 Bullish BOS line color and style
BearishBOSColor Stroke DodgerBlue, Solid, 2 Bearish BOS line color and style
MicroBullishBOSColor Stroke DimGray, Dash, 1 Micro bullish BOS line color and style
MicroBearishBOSColor Stroke DimGray, Dash, 1 Micro bearish BOS line color and style
BOSFont SimpleFont Arial, 12 Font for macro BOS labels
MicroBOSFont SimpleFont Arial, 10 Font for micro BOS labels

Change of Character (ChoCh)

Change of Character (ChoCh) example on NinjaTrader chart

A Change of Character (ChoCh) signals a shift in the internal market substructure — it marks the point where the smaller trend within the bigger trend changes direction. Think of it as an early warning system: ChoCh often shows the first signs that the trend is about to pull back or potentially reverse. While a full trend reversal requires a BOS confirmation, the ChoCh is frequently the first clue that momentum is shifting.

The indicator detects both macro ChoCh (larger structural shifts) and micro ChoCh (small moves within the internal structure). Macro ChoCh captures significant turning points, while micro ChoCh helps you spot the earliest signs of directional change on lower timeframes.

ChoCh vs. BOS: Understanding the Difference

BOS and ChoCh serve different purposes. A BOS confirms the trend — it tells you the big players are still pushing in the same direction. A ChoCh signals a potential change — the first break against the current internal structure. In a bullish trend (higher highs, higher lows), a ChoCh occurs when price breaks below an internal low for the first time. This doesn't necessarily mean the trend has reversed, but it means the internal momentum has shifted and a pullback or reversal may be starting.

Why ChoCh Matters for Your Trading

ChoCh is one of the most powerful tools for timing entries. By combining higher-timeframe BOS (for direction) with lower-timeframe ChoCh (for timing), you can enter trades at optimal points rather than chasing price after a breakout. ChoCh also helps you recognize when a pullback is ending and the trend is about to resume.

How to trade with ChoCh (multi-timeframe alignment):
  1. Identify the trend on a higher timeframe using BOS (e.g., bearish BOS on 1H chart)
  2. Drop to a lower timeframe (e.g., 5min) and wait for a bullish ChoCh — this is the pullback starting
  3. Wait for a bearish ChoCh on the same lower timeframe — this means the pullback is ending
  4. Now the lower timeframe is re-aligned with the higher timeframe trend
  5. Enter short at a supply zone, order block, or FVG that coincides with the bearish ChoCh
Tip: ChoCh is especially valuable on lower timeframes. On the same timeframe as your BOS, a ChoCh might just be noise. But when you use a higher timeframe for direction (BOS) and a lower timeframe for entries (ChoCh), the combination becomes a precise entry timing tool.
Setting Type Default Description
ChoChDisplayType TDUMarketStructureDisplayType Text How ChoCh lines are displayed
ChoChStructureMapping TDUMarketStructureMapping Candle_Close Map ChoCh lines to candle close or wick
NumberOfChoChToDisplay int 0 Max ChoCh lines to show (0 = all)
ChoChAlert bool false Enable/disable ChoCh alerts
ChoChAlertSound string Alert2.wav Sound file for ChoCh alerts
BullishChOfChColor Stroke Orange, Solid, 2 Bullish ChoCh line color and style
BearishChOfChColor Stroke Orange, Solid, 2 Bearish ChoCh line color and style
MicroBullishChOfChColor Stroke DimGray, Dash, 2 Micro bullish ChoCh color and style
MicroBearishChOfChColor Stroke DimGray, Dash, 2 Micro bearish ChoCh color and style
ChoChFont SimpleFont Arial, 12 Font for macro ChoCh labels
MicroChoChFont SimpleFont Arial, 10 Font for micro ChoCh labels

Swing Structure

Strong and weak swing highs and lows on NinjaTrader chart

Swing structure is the backbone of market analysis in Smart Money Concepts. The indicator identifies the most recent significant swing high and swing low, and classifies each as strong or weak. This classification is critical because it tells you where price is likely headed and where it is likely to hold.

  • A strong high occurs when a new low was formed after the high — it was created by significant institutional capital pushing price down from that level. Strong highs are protected levels that the market is unlikely to break easily.
  • A weak high is the most recent high that failed to produce a new low after it. It sits above the current price as a target — a level that the market is likely to revisit and sweep through.
  • A strong low occurs when a new high was formed after the low — it was defended by buyers and the market moved higher from it.
  • A weak low is the most recent low that failed to produce a new high. It sits below as a target, attracting price toward it.

Why Strong/Weak Matters

The strong/weak classification gives you a built-in target and stop-loss framework. In a bullish trend, the strong low acts as your support (place stops behind it) and the weak high acts as your target (price is drawn toward it). In a bearish trend, the strong high is resistance and the weak low is the target. This removes guesswork from where to place stops and targets.

How to trade with swing structure:
  1. After a BOS confirms the trend, identify the current strong and weak levels
  2. In a bullish trend: enter longs on pullbacks to demand zones with stops behind the strong low, targeting the weak high
  3. In a bearish trend: enter shorts on rallies to supply zones with stops behind the strong high, targeting the weak low
  4. When the weak level gets taken out, the structure updates — a new strong/weak pair forms, giving you your next trade setup

HH/LL Labels

Show Higher High (HH), Higher Low (HL), Lower High (LH), and Lower Low (LL) labels at swing points. These labels make it easy to visually confirm the trend at a glance: a bullish trend shows a sequence of HH and HL, while a bearish trend shows LH and LL. When the sequence breaks (e.g., a LL appears in a bullish sequence), it signals a potential trend change. This is the most fundamental way to read price structure.

Fractals

Show fractal up/down markers at the exact bars where the indicator detected a swing pivot based on the FractalSize parameter. Fractals are visual confirmation of where the detection algorithm found significant swing points. They help you verify that the indicator is correctly identifying the structure you see on the chart.

Setting Type Default Description
ShowSwingHighLow bool true Show strong/weak swing high/low labels
ShowHHLL bool true Show HH/HL/LH/LL labels at swing points
ShowFractals bool false Show fractal up/down markers
FractalSize int 4 Bars on each side for fractal detection
StrongSwingHiColor Stroke White, Dash, 1 Strong swing high line color
StrongSwingLowColor Stroke White, Dash, 1 Strong swing low line color
WeakSwingHiColor Stroke White, Dash, 1 Weak swing high line color
WeakSwingLowColor Stroke White, Dash, 1 Weak swing low line color
SwingHighLowFont SimpleFont Arial, 12 Font for swing high/low labels
HHLLTextColor Stroke White HH/LL label text color
HHLLFont SimpleFont Arial, 12 Font for HH/LL labels
HHLLOffset int 20 Vertical offset in pixels for HH/LL labels
FractalUpColor Stroke Lime, Solid, 1 Fractal up marker color
FractalDownColor Stroke Red, Solid, 1 Fractal down marker color

Internal Structure

Internal structure shows the highs and lows within the current swing range. While the main swing structure tracks the macro trend (the big moves), internal structure tracks the smaller micro movements happening between the most recent swing high and swing low. Internal highs and lows are drawn as horizontal lines on the chart, giving you a layered view of price behavior.

What Internal Structure Tracks

Imagine price is in a bullish trend, moving from a swing low toward a swing high. Along the way, it doesn't move in a straight line — it makes small pullbacks and pushes. Internal structure captures these smaller highs and lows within the current move. This is the structure that ChoCh signals are based on: when price breaks an internal low in a bullish move, that's a ChoCh, signaling a possible pullback or reversal of the micro trend.

Why Internal Structure Matters

Internal structure bridges the gap between the macro view (BOS, major swings) and the micro view (individual candles). It helps you understand where price is within the current structural leg:

  • Entry timing: After a BOS confirms direction, internal structure shows you exactly where the pullback is within the move. Wait for price to pull back to an internal low (bullish trend) or internal high (bearish trend) for better entry prices.
  • Pullback depth: Internal highs and lows reveal how deep the current pullback has gone. If price breaks through multiple internal levels, the pullback is more severe and you may want to wait for a ChoCh to re-confirm direction before entering.
  • Risk management: Place stops behind internal structure levels for tighter risk, or behind the main swing structure for wider stops with more room.
Tip: Internal structure is most valuable when combined with ChoCh. A ChoCh occurs when an internal level breaks against the trend, so seeing internal highs and lows on the chart helps you anticipate where ChoCh signals will appear.
Setting Type Default Description
ShowInternalHighLow bool true Show internal structure high/low markers
InternalHiColor Stroke White, Dash, 1 Internal high line color
InternalLowColor Stroke White, Dash, 1 Internal low line color
InternalHighLowFont SimpleFont Arial, 12 Font for internal high/low labels

Supply & Demand Zones

BOS supply and demand zones on NinjaTrader chart

Supply and demand zones are the primary entry zones in Smart Money Concepts trading. They highlight the exact price areas where institutional buying or selling was strong enough to create a structural break. When price returns to these zones, the same institutional interest often reactivates, making them powerful areas for trade entries.

Unlike traditional support and resistance (which are single lines), supply and demand zones are price ranges — they capture the full area where institutional activity occurred. The indicator draws these zones forward from where they formed and keeps them on the chart until they are tested or broken.

Why Supply/Demand Zones Form

Institutional traders cannot fill large orders at a single price — they need a range of prices and enough volume to execute their positions. When a large buy order absorbs all available sell orders in a price range, it creates a demand zone. When a large sell order absorbs all available buy orders, it creates a supply zone. The structural break (BOS or ChoCh) that follows is evidence that the institutional order was large enough to move the market.

When price returns to these zones, any remaining unfilled institutional orders may still be waiting. This is why zones often produce strong reactions — the original order flow resumes.

BOS Supply/Demand Zones

These are the strongest zones. They are drawn from the lowest point (demand) or highest point (supply) between the start of the swing and the BOS break. Because a BOS confirms the trend, these zones mark where the trend-confirming institutional activity happened. BOS demand zones in a bullish trend and BOS supply zones in a bearish trend are the highest-probability entry zones.

ChoCh Supply/Demand Zones

ChoCh supply and demand zones on NinjaTrader chart

Drawn from the last high or low before the ChoCh was made. These zones are weaker than BOS zones because a ChoCh represents a potential shift rather than a confirmed trend. However, ChoCh zones are useful for counter-trend entries or for aggressive traders who want to enter early before the trend is fully confirmed.

How to trade with supply/demand zones:
  1. After a bullish BOS, wait for price to pull back into a demand zone (buy zone)
  2. Look for confirmation on a lower timeframe: a bullish ChoCh or micro BOS within the zone
  3. Enter long with your stop-loss below the demand zone
  4. Target the weak swing high or the next supply zone above
  5. The zone is invalidated if price closes through it — exit the trade

Premium vs. Discount

Every swing range has a midpoint (50% level). Price above the midpoint is in premium territory — expensive relative to the range. Price below the midpoint is at a discount. In a bullish trend, look for entries at demand zones in the discount area (below 50%). In a bearish trend, look for entries at supply zones in the premium area. The PremiumDiscount break type uses this midpoint to determine when zones are broken.

Breaker Blocks

When a supply/demand zone is broken through, the polarity flips — the zone becomes a breaker block. A broken demand zone (where buyers previously stepped in) becomes a bearish breaker block (now acting as resistance). A broken supply zone becomes a bullish breaker block (now acting as support). This concept is based on the idea that the institutional orders that once defended the zone have been overwhelmed, and the area now represents a reference point for the winning side. Enable with ShowSupplyDemandZonesBreakerBlocks.

Zone Types

Candle draws zones using the full candle body — wider zones that capture more area. Wick draws zones using wicks only — tighter zones that focus on the extremes. Wick zones are more precise but may get broken more often. Candle zones give more breathing room.

Break Detection

Controls when a zone is considered broken:

  • Wick: Zone breaks when any wick penetrates through it. Most sensitive — removes zones early.
  • Close: Zone breaks only when a candle closes through it. More conservative — ignores intra-bar spikes.
  • PremiumDiscount (default): Zone breaks at the 50% midpoint. This is the most nuanced option — a zone is only invalid when price has moved through the premium/discount midpoint, meaning the majority of the zone has been consumed.
Setting Type Default Description
SupplyDemandDisplayType TDUMarketStructureSupplyDemandDisplayType None Show zones for: None, Bos, ChoCh, or Both
ShowSupplyDemandZonesBreakerBlocks bool false Show breaker blocks when zones are broken
HideBrokenSupplyDemandZones bool true Hide zones after they are broken
NumberOfSDZones int 3 Max zones to display (0 = all)
SupplyDemandType TDUMarketStructureSupplyDemandType Wick Zone boundary type: Candle or Wick
SupplyDemandBreakType TDUMarketStructureSDBroken PremiumDiscount When zones are considered broken
SupplyBackgroundColor Stroke Orange, Solid, 15% Supply zone background
SupplyOutlineColor Stroke Orange, Solid, 100% Supply zone outline
DemandBackgroundColor Stroke DodgerBlue, Solid, 25% Demand zone background
DemandOutlineColor Stroke DodgerBlue, Solid, 100% Demand zone outline
SupplyDemandCenter Stroke DimGray, Dash Zone midline color
BreakerSupplyBackgroundColor Stroke Crimson, Solid, 15% Breaker supply background
BreakerSupplyOutlineColor Stroke Crimson, Dash, 100% Breaker supply outline
BreakerDemandBackgroundColor Stroke ForestGreen, Solid, 25% Breaker demand background
BreakerDemandOutlineColor Stroke ForestGreen, Dash, 100% Breaker demand outline
BreakerSupplyDemandCenter Stroke White, Dash Breaker block midline color

Order Blocks

Order blocks on NinjaTrader chart

Order blocks are one of the most important concepts in Smart Money Concepts trading. They represent consolidation zones where institutional traders accumulated or distributed large positions before an aggressive move. After this move, price often returns to retest the order block — providing high-probability entry opportunities with tight risk.

The theory behind order blocks: institutional traders split large orders across multiple small bars to avoid moving the market. This creates a tight consolidation (the base bars), followed by an aggressive breakout (the thrust bar) once the position is filled. The order block zone marks where the institutional position was built.

Why Order Blocks Work

When an institution builds a position in a consolidation range, not all of the intended order may be filled. When price returns to the order block, the remaining unfilled orders may still be waiting. Additionally, the institution has a vested interest in defending this price level — if price breaks through their entry, they're at a loss. This creates a natural support or resistance effect at order block levels.

Order blocks that coincide with supply/demand zones or fair value gaps create confluence — multiple reasons for price to react at the same level. These are the highest-probability entries in SMC trading.

How to trade with order blocks:
  1. After a bullish BOS, look for demand order blocks (consolidation before an upward thrust) within the pullback zone
  2. Wait for price to return to the order block zone
  3. Enter long when price touches or enters the order block, especially if it aligns with a demand zone or FVG
  4. Place your stop-loss below the order block zone
  5. Target the weak swing high or the next supply zone
  6. If the order block gets broken through, it becomes invalid — or a breaker block if enabled

Detection Parameters

The indicator identifies order blocks using a base-thrust pattern. Base bars are the small-range consolidation candles where accumulation occurred — you control the minimum and maximum count (MinBaseBars, MaxBaseBars) and the maximum range as a percentage of the average bar range (BaseBarMaxPercentage). The thrust bar is the aggressive breakout candle — you control its minimum range as a percentage of the average (ThrustBarMinPercentage). Enable PaintBaseBars to color the base bars on the chart for easy visual identification.

Order Block States

Order blocks transition through four states as price interacts with them:

  • Active — untested, price has not returned to the zone. These are the freshest and often the strongest.
  • Tested — price revisited the zone but respected it (did not break through). Tested blocks confirm that institutional interest is still present.
  • Broken — price broke through the zone, invalidating the institutional defense. The position was overwhelmed.
  • Breaker — a broken order block that flips polarity. A broken demand block becomes resistance, a broken supply block becomes support. Breaker blocks represent reference points where the winning side took control.
Tip: The first retest of an untested order block typically produces the strongest reaction. Each subsequent test weakens the zone as the institutional orders get filled. If an order block has been tested 3+ times, it's more likely to break.
Setting Type Default Description
ShowOrderBlocks bool false Enable order block detection
ShowOrderBlockBreakerBlocks bool false Show breaker blocks for broken order blocks
ShowTestedOrderBlocks bool true Show order blocks that have been tested
ShowBrokenOrderBlocks bool false Show broken order blocks
NumberOfOrderBlocksToShow int 5 Max order blocks to display (0 = all)
MinBaseBars int 1 Minimum number of base (consolidation) bars
MaxBaseBars int 3 Maximum number of base bars
BaseBarMaxPercentage double 50 Maximum range of base bar as % of average
ThrustBarMinPercentage double 100 Minimum range of thrust bar as % of average
PaintBaseBars bool true Color the base bars on the chart
OrderBlockDemandBackgroundColor Stroke DodgerBlue, Solid, 30% Demand block background
OrderBlockDemandOutlineStroke Stroke DodgerBlue, Solid, 100% Demand block outline
OrderBlockSupplyBackgroundColor Stroke Indigo, Solid, 30% Supply block background
OrderBlockSupplyOutlineStroke Stroke Indigo, Solid, 100% Supply block outline
OrderBlockBaseBarStroke Stroke White, Dash Base bar marker style
OrderBlockMidlineColor Stroke White, Dash Order block midline color
OrderBreakerBlockDemandBackgroundColor Stroke ForestGreen, Solid, 30% Demand breaker block background
OrderBreakerBlockDemandOutlineStroke Stroke ForestGreen, Solid, 100% Demand breaker block outline
OrderBreakerBlockSupplyBackgroundColor Stroke Crimson, Solid, 30% Supply breaker block background
OrderBreakerBlockSupplyOutlineStroke Stroke Crimson, Solid, 100% Supply breaker block outline
OrderBreakerBlockMidlineColor Stroke White, Dash, 30% Breaker block midline color

Fair Value Gaps

Fair value gaps on NinjaTrader chart

Fair Value Gaps (FVG) are a 3-candle pattern that reveals market imbalances. An FVG forms when the third candle does not fully overlap the first candle, leaving a price gap on the second (middle) candle. This gap represents an area where the market moved so aggressively that normal two-sided price discovery didn't occur — one side completely overwhelmed the other.

Markets tend toward efficiency. When an imbalance (FVG) is created, price has a natural tendency to return and "fill" the gap, restoring fair value. This creates high-probability entry opportunities: after an FVG forms and price moves away, wait for the retest of the gap to enter in the direction of the original move.

Why Fair Value Gaps Matter

FVGs are among the most reliable entry zones in SMC trading because they are rooted in market microstructure. The gap represents unfilled orders and an absence of traded volume at certain prices. When price returns to fill the gap:

  • Sellers who missed the initial move get an opportunity to enter (bearish FVG)
  • Buyers who missed the initial move get an opportunity to enter (bullish FVG)
  • The institutional orders that created the original move may still have unfilled portions at these levels

The indicator shows bullish FVGs (gap below current price, formed during an upward move) and bearish FVGs (gap above current price, formed during a downward move). The MinGapTicks setting filters out insignificant gaps caused by normal price noise.

How to trade with Fair Value Gaps:
  1. Identify the trend direction using BOS
  2. In a bullish trend, look for bullish FVGs that form during impulse moves up
  3. Wait for price to pull back into the FVG zone (the gap area on the middle candle)
  4. Enter long when price touches the FVG, especially if it overlaps with a demand zone or order block
  5. Place your stop-loss below the FVG or below the first candle of the 3-candle pattern
  6. If the FVG gets fully filled and price continues through it, the gap has failed — exit or look for a breaker block setup

Breaker Blocks

When a fair value gap is broken through (price fills the gap and continues beyond it), the FVG can flip into a breaker block. A broken bullish FVG becomes a bearish breaker, and a broken bearish FVG becomes a bullish breaker. This polarity flip works the same way as supply/demand breaker blocks. Enable with ShowFairValueGapBreakerBlocks.

Tip: Not all FVGs are equal. The highest-probability FVGs form during strong impulse moves (large candles with significant volume) in the direction of the trend. Small FVGs in choppy, sideways markets are more likely to be noise. Increase MinGapTicks to filter these out.
Setting Type Default Description
ShowFairValueGaps bool false Enable fair value gap detection
MinGapTicks int 5 Minimum gap size in ticks
NumberOfGapsToShow int 3 Max FVGs to display (0 = all)
ShowFairValueGapBreakerBlocks bool false Show breaker blocks for broken FVGs
BullishGapOutlineColor Stroke DodgerBlue, Solid, 100% Bullish FVG outline
BullishGapBackgroundColor Stroke DodgerBlue, Solid, 25% Bullish FVG background
BearishGapOutlineColor Stroke Orange, Solid, 100% Bearish FVG outline
BearishGapBackgroundColor Stroke Orange, Solid, 15% Bearish FVG background
FairValueGapMidlineColor Stroke White, Dash, 25% FVG midline color
BullishGapBreakerBlockBackgroundColor Stroke ForestGreen, Solid, 25% Bullish FVG breaker background
BullishGapBreakerBlockOutlineColor Stroke ForestGreen, Dash, 100% Bullish FVG breaker outline
BearishGapBreakerBlockBackgroundColor Stroke Crimson, Solid, 15% Bearish FVG breaker background
BearishGapBreakerBlockOutlineColor Stroke Crimson, Dash, 100% Bearish FVG breaker outline
FairValueGapBreakerMidlineColor Stroke White, Dash, 25% FVG breaker midline color

Fibonacci Retracements

The indicator automatically draws Fibonacci retracement levels across each BOS swing range, showing you key price levels where pullbacks are statistically likely to find support or resistance. Up to 6 customizable levels are available, each with its own color. Set a level to 0 to disable it.

Why Fibonacci Works in Trading

Fibonacci retracement levels have been used by traders for decades because they consistently identify areas where price stalls during pullbacks. While the mathematical reasons are debated, the practical reality is clear: so many traders (retail and institutional) watch these levels that they become self-fulfilling. Orders cluster at Fibonacci levels, creating real support and resistance.

In SMC trading, Fibonacci levels serve a specific purpose: they help you identify the premium/discount zones within a swing. Price above the 50% level is in premium territory (expensive), price below is at a discount (cheap). Smart money buys at a discount and sells at a premium.

Key Levels

  • 50% (Equilibrium): The midpoint of the swing. This is the boundary between premium and discount. Many traders watch this level as a minimum retracement target.
  • 61.8% (Golden Ratio): The most widely watched Fibonacci level. Pullbacks to this level often produce strong reactions. A pullback that holds here suggests the trend is healthy.
  • 78.6%: A deep retracement that often marks the last line of defense. If price reaches this level and holds, it often produces explosive continuation moves. If it breaks, the structure may be invalidating.
  • 88.6%: The deepest standard retracement. Reactions here are less common but can produce significant moves when they occur.
How to trade with Fibonacci:
  1. After a BOS, the indicator automatically draws Fib levels across the swing range
  2. Wait for price to pull back into the discount zone (below 50% for bullish, above 50% for bearish)
  3. Look for confluence: does a demand zone, order block, or FVG align with a Fibonacci level?
  4. The more confluences at a single level, the higher the probability of a reaction
  5. Enter at the confluence level with stops behind the 100% level (full retracement = structure broken)

Display Modes

  • Normal: Draws individual horizontal lines at each Fibonacci level, with optional percentage labels
  • Cluster: Groups nearby levels into shaded visual clusters, making it easier to identify confluence zones where multiple Fib levels stack together
Setting Type Default Description
ShowFibRetracements bool false Enable Fibonacci retracement levels
ShowFibNumbers bool true Show percentage labels on Fibonacci lines
FibonacciType TDUMarketStructureFibonacciType Normal Display mode: Normal or Cluster
FibRetracement1 double 50 First retracement level (%)
FibRetracement2 double 61.8 Second retracement level (%)
FibRetracement3 double 78.6 Third retracement level (%)
FibRetracement4 double 88.6 Fourth retracement level (%)
FibRetracement5 double 0 Fifth retracement level (%, 0 = disabled)
FibRetracement6 double 0 Sixth retracement level (%, 0 = disabled)
FibRetracement1Color Stroke Crimson, Dash Level 1 line color
FibRetracement2Color Stroke Yellow, Dash Level 2 line color
FibRetracement3Color Stroke DodgerBlue, Dash Level 3 line color
FibRetracement4Color Stroke Violet, Dash Level 4 line color
FibRetracement5Color Stroke Orange, Dash Level 5 line color
FibRetracement6Color Stroke Magenta, Dash Level 6 line color
FibRetracementAnchorStroke Stroke DimGray, Dash Anchor line connecting swing points
Tip: Common institutional levels: 50% (equilibrium), 61.8% (golden ratio), 78.6%, and 88.6% (deep retracement). The default configuration targets these key levels.

Volume Profile

Volume Profile zones on chart

Volume profile adds a powerful volume-based dimension to your SMC analysis. For each BOS, the indicator builds a volume profile showing the distribution of traded volume from the start of the swing to the structural break. This reveals exactly where institutional activity was concentrated during each structural move — information that pure price-based analysis cannot provide.

While price tells you what happened, volume tells you how much conviction was behind it. Levels where heavy volume traded act as magnets and barriers for future price action.

Why Volume Profile Matters

Volume profile transforms each BOS swing from a simple price range into a detailed map of institutional participation. High-volume levels (near the POC) represent areas of acceptance — where the market spent the most time and agreed on fair value. Low-volume levels represent areas of rejection — where price moved through quickly. When price returns to these levels:

  • High-volume levels (POC, value area) tend to attract price and act as support/resistance
  • Low-volume levels offer little resistance — price can move through them quickly

Key Concepts

  • POC (Point of Control): The single price level where the most volume traded during the BOS. This is the market's "fair value" for that swing. Price gravitates toward the POC when it re-enters the range.
  • Value Area: The price range containing 68% (configurable) of all volume during the BOS. This represents the core acceptance zone. Price inside the value area is in equilibrium; price outside is in imbalance.
  • VP Order Blocks: The indicator identifies the last red bar touching the value area low (bullish BOS) or last green candle touching the value area high (bearish BOS). These are areas where the last counter-trend activity occurred before the BOS — making them high-confluence entry zones when retested.
How to trade with volume profile:
  1. After a bullish BOS, look at the volume profile of the swing — identify the POC and value area low
  2. If price pulls back to the value area low, this is a high-probability long entry — especially if it aligns with a demand zone or Fibonacci level
  3. The POC acts as a magnet: in a pullback, price often stops at or near the POC before continuing
  4. VP order blocks at the value area edges are the strongest confluence zones — they combine volume analysis with price structure
  5. If price breaks below the value area low and stays there, the institutional acceptance zone has shifted — the trade thesis may be invalid

Display Modes

  • Off: Volume profile disabled
  • ProfileAndLevels: Full volume histogram displayed within each BOS range, plus POC and value area lines. Best for detailed analysis.
  • LevelsOnly: Just the POC and value area high/low lines without the histogram. Cleaner view for traders who want the key levels without visual clutter.
Setting Type Default Description
ShowBOSVolumeProfile TDUMarketStructureVolumeProfileType Off Volume profile display mode
ShowBOSVolumeProfileOrderBlocks bool false Show value area high/low order blocks
HideBOSBrokenVolumeProfileOrderBlocks bool false Hide broken VP order blocks
NumberOfVolumeProfiles int 0 Max volume profiles to show (0 = all)
ValueAreaPercentage double 68 Percentage of volume for value area calculation
VolumeProfileWidth double 90 Width of volume profile histogram (%)
VolumeProfileFont SimpleFont Arial, 8 Font for volume profile labels
ValueAreaStroke Stroke White, Solid, 20% Value area histogram color
VolumeAreaStroke Stroke DarkGray, Solid, 10% Volume area (outside VA) histogram color
POCStroke Stroke Yellow, Dash Point of Control line color
VALStroke Stroke White, Dash Value area low/high line color
VPVALLowStroke Stroke ForestGreen, Dash, 25% VA low order block color
VPVALHighStroke Stroke Crimson, Dash, 15% VA high order block color
VPOutlineStroke Stroke DimGray, Dash VP order block midline color

Equal Highs & Lows

Equal highs and equal lows are a powerful liquidity concept in Smart Money trading. They occur when two or more swing points cluster at nearly the same price level (within a configurable tick tolerance). These levels are significant because they represent liquidity pools — large clusters of stop-loss orders placed by retail traders.

The Liquidity Theory Behind Equal Highs/Lows

When price forms two or more highs at the same level, retail traders see a "double top" and place sell stop-losses just above. When price forms two or more lows at the same level, they see a "double bottom" and place buy stop-losses just below. These stop orders create pools of resting liquidity that institutional traders can target.

Institutions need liquidity to fill large orders. Equal highs provide a known pool of sell-side liquidity (stop-loss buy orders from shorts). Equal lows provide a known pool of buy-side liquidity (stop-loss sell orders from longs). The institution pushes price through the equal level to trigger these stops, absorbs the liquidity to fill their position, and then reverses.

Why Equal Highs/Lows Matter

Recognizing equal highs and lows helps you understand where the smart money is likely to go next. In a bullish trend, equal highs above current price are targets — they will likely be swept. In a bearish trend, equal lows below are targets. This knowledge helps you set realistic targets and avoid placing your own stops at these obvious liquidity levels.

How to trade with equal highs/lows:
  1. Identify equal highs/lows on the chart — the indicator marks them automatically
  2. Expect price to eventually sweep through these levels (take the liquidity)
  3. After the sweep, watch for a reversal signal (ChoCh, order block retest, or FVG) — this is often where the real move begins
  4. Avoid placing your own stops at equal levels — they're obvious targets for stop hunts
  5. Use equal highs/lows as targets for existing trades: in a bullish trend, target the equal highs above

The indicator automatically detects equal highs and equal lows by comparing consecutive swing points. A horizontal dashed line connects the equal levels on the chart. The EqualLowMaxDifference setting controls how close (in ticks) two swing points need to be to qualify as "equal."

Setting Type Default Description
ShowEqualLowsHighs bool true Enable equal highs/lows detection
EqualLowMaxDifference int 2 Maximum distance in ticks for levels to be considered equal
EqualLowColor Stroke ForestGreen, Dash Equal low line color
EqualHighColor Stroke Crimson, Dash Equal high line color
EqualLowHighFont SimpleFont Arial, 10 Font for equal high/low labels

Trendline Liquidity

Trendline liquidity is a concept that combines classical technical analysis with Smart Money liquidity theory. The indicator automatically draws trendlines through swing points — connecting higher lows in a bullish trend and lower highs in a bearish trend. But unlike traditional TA where trendlines are support/resistance, SMC views these trendlines as liquidity zones.

Why Trendlines Attract Liquidity

Trendlines are one of the most widely followed technical analysis tools. Millions of retail traders draw the same trendlines and place their stop-loss orders just beyond them:

  • In a bullish trend, traders go long at the rising trendline and place stops just below it — creating buy-side liquidity underneath
  • In a bearish trend, traders go short at the falling trendline and place stops just above it — creating sell-side liquidity above

Institutions know exactly where these stops are clustered. When they need liquidity to fill a large position, they push price through the trendline to trigger the stops, absorb the resulting orders, and then move price in their intended direction.

Why Trendline Liquidity Matters

Understanding trendline liquidity helps you avoid one of the most common retail trading mistakes: using trendlines as simple support/resistance and getting stopped out on the trendline break. Instead, you can anticipate the sweep and position yourself to trade the reversal after the liquidity grab.

How to trade with trendline liquidity:
  1. Identify the trendline the indicator has drawn — this marks a known liquidity zone
  2. When price approaches the trendline, expect a potential break (liquidity sweep) rather than a clean bounce
  3. After the trendline breaks, watch for a quick reversal back above/below the trendline
  4. If the break is a sweep (price quickly returns), this is a high-probability entry in the original trend direction
  5. Combine with order blocks or FVGs near the trendline for stronger confluence
  6. If price breaks the trendline and stays beyond it with a BOS, the trend may actually be changing — respect the structure
Tip: Trendline liquidity sweeps are most powerful when they coincide with other liquidity targets (equal highs/lows) or structural zones (demand/supply). The more reasons price has to reverse at a level, the higher the probability of a reaction.
Setting Type Default Description
ShowTrendLineLiquidity bool true Enable trendline liquidity detection
BullishTrendLineColor Stroke ForestGreen, Dash Bullish trendline color
BearishTrendLineColor Stroke Crimson, Dash Bearish trendline color
TrendLineLiquidityFont SimpleFont Arial, 10 Font for trendline labels

Trend Display & Paint Bars

The indicator can display the current trend direction as a text overlay on the chart. The position is configurable (TopLeft, TopRight, BottomLeft, BottomRight, or Off). When multi-timeframe is enabled, the timeframe label is shown alongside the trend.

Paint Bars colors the chart candles based on the detected trend direction. Bullish trend bars are colored green (LimeGreen), bearish trend bars are colored red.

Setting Type Default Description
TrendPosition TDUMarketStructureTrendPosition TopLeft Where to show the trend text (TopLeft, TopRight, BottomLeft, BottomRight, Off)
PositionX int 20 Horizontal offset in pixels for trend display
PositionY int 50 Vertical offset in pixels for trend display
PaintBars bool false Color candles based on trend direction
BullishTrendBar Stroke LimeGreen, Solid Bullish trend candle color
BearishTrendBar Stroke Red, Solid Bearish trend candle color
TextColor Stroke White, Solid Trend display text color
Font SimpleFont Arial, 12 Trend display text font
ButtonText string "SMC" Text shown on the chart toolbar button

Multi-Timeframe Support

Multi-Timeframe market structure on chart

One of the most powerful features: display market structure from a higher timeframe directly on your current chart. See the 4H BOS and supply/demand zones on a 5-minute chart, for example.

Enable MTF in the indicator settings, select the desired timeframe (e.g., 60-minute, 4-hour), and the indicator will calculate and display structure from that timeframe overlaid on your chart.

Tip: To see multiple timeframes at once, add the indicator to your chart multiple times — each instance with a different MTF setting. For example: one instance for 4H structure, one for 1H, and your base chart for 5min.
Setting Type Default Description
UseMTF bool false Enable multi-timeframe mode
MTFBarPeriodPeriodType BarsPeriodType Minute MTF timeframe period type
MTFBarPeriodPeriodValue int 15 MTF timeframe period value
MTFBarsToLoad int 1000 Number of MTF bars to load for calculation
TradingHoursInstance TradingHours (Instrument default) Trading hours template for MTF data series
Warning: When using MTF, ensure you load enough bars (MTFBarsToLoad) for accurate detection. The default 1000 bars works well for most setups.

Easy Access Toolbar Menu

Right-click the "SMC" button on the chart toolbar to access the easy access menu. This menu lets you toggle every major feature on/off without opening the indicator settings dialog. Changes take effect immediately.

The menu is organized into logical groups matching the indicator’s feature categories. You can also use the mousewheel to cycle through options.

Structure

Show BOS Show Micro BOS Show ChoCh Show Micro ChoCh Show Strong/Weak Hi/Lo Show HH/LL Show Internal Hi/Lo Show Fractals

Zones & Blocks

Show Supply/Demand (None/BOS/ChoCh/Both) Show SD Breaker Blocks Show Order Blocks Show OB Breaker Blocks Show Tested Order Blocks Show Broken Order Blocks Paint Base Bars

Gaps & Levels

Show Fair Value Gaps Show FVG Breaker Blocks Show Fibonacci Show Fib Numbers Fib Type (Normal/Cluster)

Volume Profile

Show Volume Profile (Off/Profile+Levels/Levels Only) Show VP Order Blocks Hide Broken VP Order Blocks

Other Features

Show Equal Lows/Highs Show Trendline Liquidity Show Trend Paint Bars

Display

BOS Display (None/Line/Text/Text+TF) ChoCh Display (None/Line/Text/Text+TF) BOS Mapping (Close/Wick) ChoCh Mapping (Close/Wick)

Alerts

BOS Alert On/Off ChoCh Alert On/Off

General

Enable/Disable Indicator

Alerts

The indicator supports real-time alerts for Break of Structure and Change of Character events. Alerts trigger a sound file when a new BOS or ChoCh is detected.

BOS Alerts

Enable with BOSAlert = true. Configurable sound file (default: Alert2.wav). Triggers on both bullish and bearish BOS.

ChoCh Alerts

Enable with ChoChAlert = true. Configurable sound file (default: Alert2.wav). Triggers on both bullish and bearish ChoCh.

Tip: Alerts can also be toggled on/off from the right-click easy access menu without opening settings.

Strategy & AlgoStudio Pro Support

TDU Market Structure plots for strategy integration

The indicator exports 16 plots for use in AlgoStudio Pro, NinjaScript strategies, Strategy Builder, or your own custom code. All plots are updated in real-time.

Plot # Name Description
0 ChangeOfCharacter ChoCh direction: 1 = bullish, -1 = bearish, 0 = none
1 BreakOfStructure BOS direction: 1 = bullish, -1 = bearish, 0 = none
2 FibonacciLevel1 Price at Fibonacci level 1 (default 50%)
3 FibonacciLevel2 Price at Fibonacci level 2 (default 61.8%)
4 FibonacciLevel3 Price at Fibonacci level 3 (default 78.6%)
5 FibonacciLevel4 Price at Fibonacci level 4 (default 88.6%)
6 FibonacciLevel5 Price at Fibonacci level 5 (if configured)
7 FibonacciLevel6 Price at Fibonacci level 6 (if configured)
8 InternalHigh Current internal structure high price
9 InternalLow Current internal structure low price
10 SwingHigh Current major swing high price
11 SwingLow Current major swing low price
12 OrderBlockPrice Price of nearest active order block
13 OrderBlockDistanceTicks Distance in ticks to nearest order block
14 FVGPrice Price of nearest active fair value gap
15 FVGDistanceTicks Distance in ticks to nearest FVG

Code Example

// Access TDU Market Structure plots from a NinjaScript strategy
var smc = TDUMarketStructure();
double swingHigh = smc.SwingHigh[0];
double swingLow  = smc.SwingLow[0];
int    bosSignal = (int)smc.BreakOfStructure[0]; // 1=bull, -1=bear, 0=none
double nearestOB = smc.OrderBlockPrice[0];

Complete Settings Reference

Below is a comprehensive reference of every configurable setting, organized by property group.

Setting Type Default Description
00. TradeDevils
Version string (current) Indicator version (read-only)
Website string www.tradedevils-indicators.com Support website (read-only)
Email string Your license email
ContactId long Your license contact ID
01. General
SmcDetectionMethod Enum Fractal Detection algorithm: PriceAction or Fractal
TrendPosition Enum TopLeft Trend display position (TopLeft / TopRight / BottomLeft / BottomRight / Off)
TrendBosCount int 1 Number of BOS needed to confirm a trend change
PositionX int 20 Trend display horizontal offset (pixels)
PositionY int 50 Trend display vertical offset (pixels)
PaintBars bool false Color candles based on trend direction
BullishTrendBar Stroke LimeGreen, Solid Bullish trend candle color
BearishTrendBar Stroke Red, Solid Bearish trend candle color
02. Multi Timeframe
UseMTF bool false Enable multi-timeframe mode
MTFBarPeriodPeriodType BarsPeriodType Minute MTF timeframe period type
MTFBarPeriodPeriodValue int 15 MTF timeframe period value
TradingHoursInstance TradingHours (instrument default) Trading hours template for MTF data series
MTFBarsToLoad int 1000 Number of MTF bars to load for calculation
03. Swing Structure
ShowSwingHighLow bool true Show strong/weak swing high/low labels
ShowHHLL bool true Show HH/HL/LH/LL labels at swing points
ShowFractals bool false Show fractal up/down markers
FractalSize int 4 Bars on each side for fractal detection
BOSDisplayType Enum Text BOS display: None / LineOnly / Text / TextAndTimeFrame
BOSStructureMapping Enum Candle_Close Map BOS lines to candle close or wick
NumberOfBOSToDisplay int 0 Max BOS lines to show (0 = all)
BOSPullBackType Enum ATR Pullback measurement: ATR, Percentage, or Ticks
BOSATRPeriod int 14 ATR period for pullback detection
BOSATRMultiplier double 2.0 ATR multiplier for minimum pullback threshold
BOSPullbackPercentage double 30 Minimum pullback as percentage of swing range
BOSPullbackTicks double 80 Minimum pullback in ticks
BOSAlert bool false Enable BOS alerts
BOSAlertSound string Alert2.wav Sound file for BOS alerts
BullishBOSColor Stroke DodgerBlue, Solid, 2 Bullish BOS line color and style
BearishBOSColor Stroke DodgerBlue, Solid, 2 Bearish BOS line color and style
BOSFont SimpleFont Arial, 12 Font for macro BOS labels
MicroBullishBOSColor Stroke DimGray, Dash, 1 Micro bullish BOS line color and style
MicroBearishBOSColor Stroke DimGray, Dash, 1 Micro bearish BOS line color and style
MicroBOSFont SimpleFont Arial, 10 Font for micro BOS labels
StrongSwingHiColor Stroke White, Dash, 1 Strong swing high line color
StrongSwingLowColor Stroke White, Dash, 1 Strong swing low line color
WeakSwingHiColor Stroke White, Dash, 1 Weak swing high line color
WeakSwingLowColor Stroke White, Dash, 1 Weak swing low line color
SwingHighLowFont SimpleFont Arial, 12 Font for swing high/low labels
HHLLTextColor Stroke White HH/LL label text color
HHLLFont SimpleFont Arial, 12 Font for HH/LL labels
HHLLOffset int 20 Vertical offset in pixels for HH/LL labels
FractalUpColor Stroke Lime, Solid, 1 Fractal up marker color
FractalDownColor Stroke Red, Solid, 1 Fractal down marker color
04. Internal Market Structure
ShowInternalHighLow bool true Show internal structure high/low markers
ChoChDisplayType Enum Text ChoCh display: None / LineOnly / Text / TextAndTimeFrame
ChoChStructureMapping Enum Candle_Close Map ChoCh lines to candle close or wick
NumberOfChoChToDisplay int 0 Max ChoCh lines to show (0 = all)
ChoChAlert bool false Enable ChoCh alerts
ChoChAlertSound string Alert2.wav Sound file for ChoCh alerts
BullishChOfChColor Stroke Orange, Solid, 2 Bullish ChoCh line color and style
BearishChOfChColor Stroke Orange, Solid, 2 Bearish ChoCh line color and style
ChoChFont SimpleFont Arial, 12 Font for macro ChoCh labels
MicroBullishChOfChColor Stroke DimGray, Dash, 2 Micro bullish ChoCh color and style
MicroBearishChOfChColor Stroke DimGray, Dash, 2 Micro bearish ChoCh color and style
MicroChoChFont SimpleFont Arial, 10 Font for micro ChoCh labels
InternalHiColor Stroke White, Dash, 1 Internal high line color
InternalLowColor Stroke White, Dash, 1 Internal low line color
InternalHighLowFont SimpleFont Arial, 12 Font for internal high/low labels
05. Supply / Demand
SupplyDemandDisplayType Enum None Show zones for: None / Bos / ChoCh / Both
ShowSupplyDemandZonesBreakerBlocks bool false Show breaker blocks when zones are broken
HideBrokenSupplyDemandZones bool true Hide zones after they are broken
NumberOfSDZones int 3 Max zones to display (0 = all)
SupplyDemandType Enum Wick Zone boundary type: Candle or Wick
SupplyDemandBreakType Enum PremiumDiscount When zones break: Wick / Close / PremiumDiscount
SupplyBackgroundColor Stroke Orange, Solid, 15% Supply zone background
SupplyOutlineColor Stroke Orange, Solid, 100% Supply zone outline
DemandBackgroundColor Stroke DodgerBlue, Solid, 25% Demand zone background
DemandOutlineColor Stroke DodgerBlue, Solid, 100% Demand zone outline
SupplyDemandCenter Stroke DimGray, Dash Zone midline color
BreakerSupplyBackgroundColor Stroke Crimson, Solid, 15% Breaker supply background
BreakerSupplyOutlineColor Stroke Crimson, Dash, 100% Breaker supply outline
BreakerDemandBackgroundColor Stroke ForestGreen, Solid, 25% Breaker demand background
BreakerDemandOutlineColor Stroke ForestGreen, Dash, 100% Breaker demand outline
BreakerSupplyDemandCenter Stroke White, Dash Breaker block midline color
06. Fibonacci Retracements
ShowFibRetracements bool false Enable Fibonacci retracement levels
ShowFibNumbers bool true Show percentage labels on Fibonacci lines
FibonacciType Enum Normal Display mode: Normal or Cluster
FibRetracement1 double 50 First retracement level (%)
FibRetracement2 double 61.8 Second retracement level (%)
FibRetracement3 double 78.6 Third retracement level (%)
FibRetracement4 double 88.6 Fourth retracement level (%)
FibRetracement5 double 0 Fifth retracement level (%, 0 = disabled)
FibRetracement6 double 0 Sixth retracement level (%, 0 = disabled)
FibRetracement1Color Stroke Crimson, Dash Level 1 line color
FibRetracement2Color Stroke Yellow, Dash Level 2 line color
FibRetracement3Color Stroke DodgerBlue, Dash Level 3 line color
FibRetracement4Color Stroke Violet, Dash Level 4 line color
FibRetracement5Color Stroke Orange, Dash Level 5 line color
FibRetracement6Color Stroke Magenta, Dash Level 6 line color
FibRetracementAnchorStroke Stroke DimGray, Dash Anchor line connecting swing points
07. Fair Value Gaps
ShowFairValueGaps bool false Enable fair value gap detection
MinGapTicks int 5 Minimum gap size in ticks
NumberOfGapsToShow int 3 Max FVGs to display (0 = all)
ShowFairValueGapBreakerBlocks bool false Show breaker blocks for broken FVGs
BullishGapOutlineColor Stroke DodgerBlue, Solid, 100% Bullish FVG outline
BullishGapBackgroundColor Stroke DodgerBlue, Solid, 25% Bullish FVG background
BearishGapOutlineColor Stroke Orange, Solid, 100% Bearish FVG outline
BearishGapBackgroundColor Stroke Orange, Solid, 15% Bearish FVG background
FairValueGapMidlineColor Stroke White, Dash, 25% FVG midline color
BullishGapBreakerBlockBackgroundColor Stroke ForestGreen, Solid, 25% Bullish FVG breaker background
BullishGapBreakerBlockOutlineColor Stroke ForestGreen, Dash, 100% Bullish FVG breaker outline
BearishGapBreakerBlockBackgroundColor Stroke Crimson, Solid, 15% Bearish FVG breaker background
BearishGapBreakerBlockOutlineColor Stroke Crimson, Dash, 100% Bearish FVG breaker outline
FairValueGapBreakerMidlineColor Stroke White, Dash, 25% FVG breaker midline color
08. Order Blocks
ShowOrderBlocks bool false Enable order block detection
ShowOrderBlockBreakerBlocks bool false Show breaker blocks for broken order blocks
ShowTestedOrderBlocks bool true Show order blocks that have been tested
ShowBrokenOrderBlocks bool false Show order blocks that have been broken
NumberOfOrderBlocksToShow int 5 Max order blocks to display (0 = all)
MinBaseBars int 1 Minimum number of base (consolidation) bars
MaxBaseBars int 3 Maximum number of base bars
BaseBarMaxPercentage double 50 Maximum range of base bar as % of average
ThrustBarMinPercentage double 100 Minimum range of thrust bar as % of average
PaintBaseBars bool true Color the base bars on the chart
OrderBlockDemandBackgroundColor Stroke DodgerBlue, Solid, 30% Demand block background
OrderBlockDemandOutlineStroke Stroke DodgerBlue, Solid, 100% Demand block outline
OrderBlockSupplyBackgroundColor Stroke Indigo, Solid, 30% Supply block background
OrderBlockSupplyOutlineStroke Stroke Indigo, Solid, 100% Supply block outline
OrderBlockBaseBarStroke Stroke White, Dash Base bar marker style
OrderBlockMidlineColor Stroke White, Dash Order block midline color
OrderBreakerBlockDemandBackgroundColor Stroke ForestGreen, Solid, 30% Demand breaker block background
OrderBreakerBlockDemandOutlineStroke Stroke ForestGreen, Solid, 100% Demand breaker block outline
OrderBreakerBlockSupplyBackgroundColor Stroke Crimson, Solid, 30% Supply breaker block background
OrderBreakerBlockSupplyOutlineStroke Stroke Crimson, Solid, 100% Supply breaker block outline
OrderBreakerBlockMidlineColor Stroke White, Dash, 30% Breaker block midline color
09. Volume Profile
ShowBOSVolumeProfile Enum Off Volume profile display: Off / ProfileAndLevels / LevelsOnly
ShowBOSVolumeProfileOrderBlocks bool false Show value area high/low order blocks
HideBOSBrokenVolumeProfileOrderBlocks bool false Hide broken VP order blocks
NumberOfVolumeProfiles int 0 Max profiles to show (0 = all)
ValueAreaPercentage double 68 Percentage of volume for value area
VolumeProfileWidth double 90 Histogram width (%)
VolumeProfileFont SimpleFont Arial, 8 VP label font
ValueAreaStroke Stroke White, Solid, 20% Value area histogram color
VolumeAreaStroke Stroke DarkGray, Solid, 10% Outside VA histogram color
POCStroke Stroke Yellow, Dash Point of Control line color
VALStroke Stroke White, Dash Value area low/high line color
VPVALLowStroke Stroke ForestGreen, Dash, 25% VA low order block color
VPVALHighStroke Stroke Crimson, Dash, 15% VA high order block color
VPOutlineStroke Stroke DimGray, Dash VP order block midline color
10. Equal Lows / Highs
ShowEqualLowsHighs bool true Enable equal highs/lows detection
EqualLowMaxDifference int 2 Max distance in ticks for equal levels
EqualLowColor Stroke ForestGreen, Dash Equal low line color
EqualHighColor Stroke Crimson, Dash Equal high line color
EqualLowHighFont SimpleFont Arial, 10 Equal high/low label font
11. Trendline Liquidity
ShowTrendLineLiquidity bool true Enable trendline liquidity detection
BullishTrendLineColor Stroke ForestGreen, Dash Bullish trendline color
BearishTrendLineColor Stroke Crimson, Dash Bearish trendline color
TrendLineLiquidityFont SimpleFont Arial, 10 Trendline label font
12. Visual
TextColor Stroke White, Solid General text color
Font SimpleFont Arial, 12 General text font
ButtonText string "SMC" Toolbar button text

Video Training

Watch these videos to see TDU Market Structure in action. Learn how to configure the indicator, interpret signals, and build complete trading strategies using Smart Money Concepts.

Latest Updates

Latest Updates

Latest Updates

Training Course

More videos: Visit the full TDU Market Structure YouTube playlist for additional tutorials, setup guides, and live trading examples.

Version History

v1.0.1.15+ — Added fractal detection mode, breaker blocks, trendline liquidity, equal highs/lows, micro structure

v1.0.1.12 (17-May-2023) — Fixed dropdown menu appearing multiple times after saving workspace

v1.0.1.11 (9-May-2023) — Fixed volume profile not shown or disappearing

v1.0.1.9 (30-Mar-2023) — Improved performance, fixed exception/error

v1.0.1.8 (20-Mar-2023) — Added plots for FVGs and Order Blocks, added 2 extra Fibonacci retracement levels

v1.0.1.3 (26-Oct-2022) — Fixed performance issues

v1.0.1.0 (23-Aug-2022) — BOS/ChoCh alerts in dropdown menu, structure mapping always visible, MTF trend display fix

v1.0.0.9 (8-Aug-2022) — Removed empty menu spots, added trend display position, fixed overlapping labels, added swing high/low + internal high/low plots

v1.0.0.8 (7-Aug-2022) — Enable/disable indicator from menu, timeframe on button and trend display

v1.0.0.7 (7-Aug-2022) — Added dropdown menu, fair value gaps, order blocks, trend change count, improved BOS/ChoCh detection, many color/font options

v1.0.0.3 (28-Apr-2022) — ATR/percentage/ticks pullback modes, display types, ChoCh/BOS count limits, supply/demand zone limits, Fibonacci plots

v1.0.0.2 (23-Apr-2022) — Various bugfixes

v1.0.0.1 (31-Mar-2022) — Initial release

Ready to Trade with Smart Money?

Start your free 7-day trial today. Full access to every feature — no credit card required.

Start Free Trial