Nodes: Market Structure
Complete reference for Fibonacci, Pivot Points, Price Levels, Volume Profile, and SMC (Smart Money Concepts) nodes. These nodes analyze price geometry — support/resistance levels, retracements, volume distributions, and institutional order flow concepts.
Market Structure Overview
Market Structure nodes analyze price geometry: support and resistance levels, retracements, volume distributions, and institutional order flow concepts. Unlike indicators that compute mathematical transformations of price (moving averages, oscillators, etc.), market structure nodes identify key price levels and structural patterns in the raw price action.
These nodes are unique in the strategy builder for two reasons:
- Level nodes (Fibonacci, Pivot Points, Price Levels, Volume Profile) output
levelvalues. These connect to a condition'srighthandle, automatically setting the left side to price. This forms “price crosses level” conditions: the most fundamental type of market structure condition. - SMC nodes output
signalvalues that connect to a condition'slefthandle (like indicators). Most SMC functions produce non-level outputs, though some (retracements, BPR, previous_high_low) do produce levels.
All market structure nodes require a data source connection on their left handle. This provides the price data (OHLCV) that the node analyzes. Without a data source, the node has no data to compute levels or patterns from.
Market structure is the foundation of price action trading. Every significant price move starts from or reacts to a structural level: a Fibonacci retracement, a pivot point, a volume node. Indicators tell you what is happening (trend, momentum, volatility); market structure tells you where it is happening. The most robust strategies combine both: an indicator for direction and a market structure level for precise entry/exit.
Fibonacci Node
The Fibonacci node draws retracement or extension levels based on swing highs and lows. These levels are derived from the Fibonacci sequence ratios (0.236, 0.382, 0.5, 0.618, 0.786, etc.), which have been observed to correspond with areas where price tends to reverse or pause. Traders use Fibonacci levels to identify potential support/resistance during pullbacks (retracements) and potential profit targets (extensions).
Method (required)
Retracement (method="retracement"): Draws levels between a swing high and swing low. Common levels: 0, 0.236, 0.382, 0.5, 0.618, 0.786, 1.0. Used to identify potential support during pullbacks in an uptrend (price retracing to 0.382 or 0.618 of the prior upswing) or resistance during bounces in a downtrend. The 0.618 level (the “golden ratio”) is the most widely watched retracement level.
Extension (method="extension"): Draws levels beyond the swing range to project where price might go next. Common levels: 0, 0.382, 0.618, 1.0, 1.272, 1.414, 1.618, 2.0, 2.618. Used to identify profit targets after a breakout. For example, if price breaks above a swing high, the 1.618 extension is a common target for the next leg up.
High Price Source (dropdown)
Which price field defines the swing high. Default: High (the bar's highest traded price). In most cases the bar high is the correct choice: swing highs are defined by the highest price reached during a bar. Alternative options (Close, HL2) are available for specialized use cases.
Low Price Source (dropdown)
Which price field defines the swing low. Default: Low (the bar's lowest traded price). Analogous to the high price source.
Lookback (integer)
Number of bars to look back for identifying the swing high and swing low. Higher values capture larger, more significant swing structures. A lookback of 20 on a 1-hour chart finds the highest high and lowest low in the last 20 hours; a lookback of 100 captures weekly-scale swings. The swing high and low are found as the maximum and minimum of the respective price sources over the lookback window.
Lookback directly controls the scale of the Fibonacci structure. A 10-bar lookback captures micro swings useful for scalping; a 200-bar lookback captures macro swings useful for swing trading. The same Fibonacci level (e.g., 0.618) represents entirely different price zones depending on whether it is drawn from a 10-bar or 200-bar swing.
Level (required, dropdown)
Which Fibonacci level to output as the node's value. Options depend on the selected method:
| Parameter | Type | Default | Description |
|---|---|---|---|
| Retracement: 0 | level | - | The swing low (in an uptrend) or swing high (in a downtrend). Represents the start of the retracement. |
| Retracement: 0.236 | level | - | Shallow retracement. Price rarely reverses at this level; more often a minor pause before continuing to deeper levels. |
| Retracement: 0.382 | level | - | Moderate retracement. A common reversal zone in strong trends where pullbacks are shallow. |
| Retracement: 0.5 | level | - | The halfway point. Not a Fibonacci ratio but widely included due to its psychological significance. Often acts as strong support/resistance. |
| Retracement: 0.618 | level | - | The golden ratio. The most significant retracement level. Deep retracements that hold above 0.618 suggest the trend remains intact. |
| Retracement: 0.786 | level | - | Deep retracement. A breach of this level often indicates the trend may be reversing rather than pulling back. |
| Retracement: 1.0 | level | - | 100% retracement. Price has returned to the start of the move. Represents a double bottom/top scenario. |
| Extension: 1.272 | level | - | Common first extension target. Price frequently reaches this level after a breakout before pausing. |
| Extension: 1.414 | level | - | Intermediate extension target. The square root of 2; appears in harmonic patterns. |
| Extension: 1.618 | level | - | The golden ratio extension. The most significant extension target. Primary profit target for trend-following strategies. |
| Extension: 2.0 | level | - | 200% extension. An ambitious target; reached in strong trending moves. |
| Extension: 2.618 | level | - | A very extended target. Rarely reached except in parabolic moves. |
Output
The selected Fibonacci level price value flows out the level handle to a condition's right side. The output is a dynamic price level that updates as the swing high and low change with new price data.
MTF Override
Per-node symbol, bar_type, and timeframe override when the data source MTF is enabled. Allows Fibonacci levels to be calculated from a higher timeframe even when the strategy runs on a lower timeframe. Example: calculate weekly Fibonacci levels for a strategy running on 4-hour bars.
Fibonacci levels are static snapshots of a historical swing range. The swing high and low are identified using historical data; they do not dynamically update mid-bar. On the bar where a new swing high is made, the Fibonacci levels will shift, and a condition that was previously false (“price < 0.618”) may suddenly become true. This can cause unexpected signals. Be aware that Fibonacci levels are not continuous: they recalculate each bar based on the latest lookback window.
Image Placeholder: Fibonacci node inspector showing: method dropdown (retracement selected), high price source (High), low price source (Low), lookback (50), level dropdown (0.618), and MTF override section (collapsed). The level handle is labeled on the right.
Pivot Points Node
The Pivot Points node calculates support and resistance levels based on the previous period's OHLC (Open, High, Low, Close) data. Pivot points are among the oldest and most widely used technical analysis tools, originating from floor traders who used the previous day's range to identify key levels for the next trading day.
Formula (required)
Five formula variants, each producing slightly different levels:
Classic (formula="classic"): The standard floor-trader pivot formula.
R1 = 2·PP − L, S1 = 2·PP − H
R2 = PP + (H − L), S2 = PP − (H − L)
R3 = H + 2·(PP − L), S3 = L − 2·(H − PP)
Gives equal weight to High, Low, and Close. The most commonly used formula and the default choice. R1/R2/R3 are resistance levels; S1/S2/S3 are support levels. R1 and S1 are the closest levels to PP and are tested most frequently.
Fibonacci (formula="fibonacci"): Same base PP as classic, but resistance and support levels use Fibonacci multipliers applied to the previous period's range.
R1 = PP + 0.382·(H − L), S1 = PP − 0.382·(H − L)
R2 = PP + 0.618·(H − L), S2 = PP − 0.618·(H − L)
R3 = PP + 1.0·(H − L), S3 = PP − 1.0·(H − L)
Produces tighter levels than classic, especially R1/S1. Preferred by traders who incorporate Fibonacci ratios into their pivot analysis.
Camarilla (formula="camarilla"): Developed by Nick Stott in 1989. Uses a different formula set with tighter, more numerous levels (R1-R4, S1-S4) based on the previous period's range multiplied by specific coefficients.
R2 = C + (H − L) · 1.1/6, S2 = C − (H − L) · 1.1/6
R3 = C + (H − L) · 1.1/4, S3 = C − (H − L) · 1.1/4
R4 = C + (H − L) · 1.1/2, S4 = C − (H − L) · 1.1/2
Camarilla levels are clustered closer to the close price, making them popular for intraday mean-reversion strategies. R3/S3 are considered strong reversal zones.
Woodie (formula="woodie"): Gives more weight to the closing price, reflecting the belief that the close is the most important price of the period.
R1 = 2·PP − L, S1 = 2·PP − H
R2 = PP + (H − L), S2 = PP − (H − L)
Demark (formula="demark"): Uses conditional logic based on the relationship between the previous close and open.
If Cprev > Oprev: X = 2·H + L + C
If Cprev = Oprev: X = H + L + 2·C
PP = X / 4
Demark pivot points adapt to whether the previous period closed up or down, making them more responsive to recent price momentum.
Period (required)
The base period for the pivot calculation:
| Parameter | Type | Default | Description |
|---|---|---|---|
| D (Daily) | string | - | Uses the previous day's OHLC data. Most common for intraday trading. Pivots reset each day at midnight UTC. Widely followed by day traders worldwide. |
| W (Weekly) | string | - | Uses the previous week's OHLC. Pivots reset each Monday. Popular for swing trading on 4h and daily charts. Weekly pivots carry more weight than daily. |
| M (Monthly) | string | - | Uses the previous month's OHLC. Pivots reset on the 1st of each month. Used for position trading on daily and weekly charts. Monthly pivots are the strongest. |
The period determines which traders are watching these levels. Daily pivots are followed by intraday and day traders; weekly pivots by swing traders; monthly pivots by institutional and position traders. A level that aligns across multiple periods (e.g., daily R1 = weekly PP) is a “confluence zone” — significantly stronger than a single-period level because multiple groups of traders are watching it.
Level (required, dropdown)
Which pivot level to output. Options vary slightly by formula but generally include:
| Parameter | Type | Default | Description |
|---|---|---|---|
| PP | level | - | Pivot Point — the central level. Acts as a balance point: price above PP is considered bullish intra-period; price below is bearish. The most important single pivot level. |
| R1 | level | - | Resistance 1 — first resistance above PP. Tested frequently; break above R1 often leads to R2. Strong level for profit-taking on longs. |
| R2 | level | - | Resistance 2 — second resistance. Less frequently reached; break above R2 indicates strong momentum. Common target for breakout trades from R1. |
| R3 | level | - | Resistance 3 — furthest standard resistance. Rarely reached in normal conditions. Reaching R3 often signals an overextended move. |
| S1 | level | - | Support 1 — first support below PP. Most commonly tested support. Break below S1 often leads to S2. |
| S2 | level | - | Support 2 — second support level. Break below S2 indicates strong bearish momentum. |
| S3 | level | - | Support 3 — furthest standard support. Reaching S3 often signals panic selling or capitulation. |
| R4, S4 | level | - | Only available with Camarilla formula. Extreme levels marking the likely range boundary for the period. Breach of R4/S4 is rare and significant. |
Output
The selected pivot level price flows out the level handle. Levels are recalculated at the start of each new period (new day, new week, new month) and remain static within the period.
MTF Override
Per-node override when MTF is enabled on the data source. Useful for running a daily pivot strategy on 15-minute bars, or a weekly pivot strategy on 4-hour bars.
Pivot points are a “levels-based” tool: they give you specific prices, not directional bias. A common mistake is treating a pivot level as a hard line. In practice, price often overshoots a pivot by a few ticks before reversing, or wicks through it without a decisive close beyond it. Use level operators like bounces_from and breaks_through that account for this behavior, rather than simple crosses_above.
Image Placeholder: Pivot Points node inspector: formula dropdown (classic selected), period dropdown (D selected), level dropdown (R1 selected). Output level handle on the right edge. MTF override collapsed.
Price Levels Node
The Price Levels node identifies significant price levels using various detection methods. Unlike Fibonacci (which uses mathematical ratios of swing ranges) and Pivot Points (which use period-based OHLC formulas), Price Levels detect levels directly from price action: where has price historically reversed, consolidated, or shown respect?
Level Type (required)
Support / Resistance (level_type="support_resistance"): Classic S/R levels identified from swing points. Support is a price floor where buying pressure overcomes selling pressure and price bounces upward. Resistance is a price ceiling where selling overcomes buying and price reverses downward. S/R levels are identified by finding local maxima (resistance) and minima (support) in the price series.
Opening Range (level_type="opening_range"): The high and low of the first N bars of a trading session. Originates from Market Profile / Auction Market Theory: the opening range represents the initial balance between buyers and sellers. Breakout above the opening range high suggests buyer control; breakdown below the opening range low suggests seller control. Commonly used with the first 30 or 60 minutes of a session.
Previous Period (level_type="previous_period"): Previous day, week, or month high, low, and close levels. Simple but widely watched: yesterday's high and low are the most basic support/resistance levels for the current day. Breach of yesterday's high signals bullish continuation; breach of yesterday's low signals bearish continuation.
Round Numbers (level_type="round_numbers"): Psychological price levels ending in .00, .50, .000, etc. Traders tend to place orders at round numbers, creating self-fulfilling support/resistance. For Bitcoin at $65,432, the round number levels would be $65,000, $65,500, $66,000, etc. Round numbers are particularly significant in crypto markets where retail order flow dominates.
Method (conditional, depends on level_type)
For support_resistance, four detection methods are available:
| Parameter | Type | Default | Description |
|---|---|---|---|
| swing_points | string | - | Fractal swing highs and lows: a high with lower highs on both sides, or a low with higher lows on both sides. Classic S/R identification. The lookback parameter controls the fractal window size. |
| horizontal | string | - | Price levels where price has repeatedly touched and reversed. A level is considered significant if price has touched it at least N times (configurable) without breaking through. These are often the strongest S/R levels. |
| trendline | string | - | Diagonal support/resistance from connecting consecutive swing points. An uptrend line connects higher lows; a downtrend line connects lower highs. Trendlines are dynamic: the level changes each bar as the line slopes. |
| moving_average | string | - | Uses popular moving average values (SMA 20, 50, 200) as dynamic support/resistance levels. The MA value on the current bar is output as the level. Useful when MAs act as S/R in trending markets. |
For other level types (opening_range, previous_period, round_numbers), the method is implied by the level_type and no method selector is shown.
Lookback (integer)
Number of bars used for swing point detection, horizontal level identification, or round number resolution. Larger lookback values identify levels from more historical data but may miss recent structural changes. For swing_points, the lookback also defines the fractal window: a swing high must be the highest high within [lookback] bars on each side.
Output (dropdown)
Which specific level to output from the detected set. The exact options depend on the level_type and method, but generally include:
| Parameter | Type | Default | Description |
|---|---|---|---|
| Nearest Support | level | - | The closest support level below the current price. Most commonly used for long entries (buy near support). |
| Nearest Resistance | level | - | The closest resistance level above the current price. Most commonly used for short entries or long profit targets. |
| Second Support | level | - | The second support level below price. Used when the nearest support breaks. |
| Second Resistance | level | - | The second resistance level above price. Used for extended profit targets. |
| Opening Range High | level | - | The high of the opening range (for opening_range level type). |
| Opening Range Low | level | - | The low of the opening range (for opening_range level type). |
| Previous High | level | - | The previous period's high (for previous_period level type). |
| Previous Low | level | - | The previous period's low (for previous_period level type). |
MTF Override
Per-node symbol/bar_type/timeframe when MTF is enabled. Useful for detecting S/R levels from a higher timeframe (e.g., daily support/resistance for a 1-hour strategy).
Support and resistance are the most fundamental concepts in technical analysis. Almost every trading strategy, regardless of sophistication, ultimately enters near support and exits near resistance. The Price Levels node automates what traders have done manually for centuries: identifying where the market is likely to turn. Combined with an indicator for timing, S/R levels provide the “where” to the indicator's “when.”
Image Placeholder: Price Levels node inspector: level_type dropdown (support_resistance), method dropdown (swing_points), lookback input (20), output dropdown (Nearest Support). Level handle on right edge.
Volume Profile Node
The Volume Profile node analyzes volume distribution across price levels to identify high-activity zones. Unlike traditional volume indicators that plot volume over time (volume bars at the bottom of a chart), volume profile plots volume at price: showing how much volume traded at each price level. This reveals where the market considers an asset to be “fair value” and where imbalances exist.
Source (required)
Lookback (source="lookback"): Uses volume data from the last N bars, defined by the lookback parameter. Volume at each price level within those bars is aggregated. Good for recent market context: a 100-bar lookback on a 1h chart captures roughly 4 days of volume distribution. More responsive to recent market activity than session-based profiles.
Session (source="session"): Uses volume from the current trading session. The session resets at the defined boundary (daily at midnight UTC, weekly on Monday). Better for intraday context where the day's volume distribution is the primary reference. Session profiles are the standard in Market Profile / Auction Market Theory.
Lookback (integer, for source=lookback)
Number of bars over which volume is aggregated. The volume at each price level is the sum of volume from all bars in the lookback window where price traded at that level.
Session (dropdown, for source=session)
Session definition options:
| Parameter | Type | Default | Description |
|---|---|---|---|
| daily | string | - | Resets at midnight UTC each day. The standard session for intraday volume profile. Accumulates volume from session start to current bar. |
| weekly | string | - | Resets on Monday at 00:00 UTC. Used for higher-timeframe analysis (e.g., weekly volume profile on daily charts). |
| custom | string | - | User-defined session start/end times. Allows alignment with specific market opens (e.g., London open at 08:00 UTC, NY open at 13:30 UTC). |
Value Area (required)
Which part of the volume distribution to output. The value area is typically defined as the price range containing 70% of the total volume (one standard deviation in a normal distribution), with the Point of Control at the peak.
| Parameter | Type | Default | Description |
|---|---|---|---|
| VAH | level | - | Value Area High — the upper boundary of the value area. Acts as resistance. Price above VAH indicates buying aggression and potential breakout. Short-term mean-reversion strategies often sell near VAH. |
| VAL | level | - | Value Area Low — the lower boundary of the value area. Acts as support. Price below VAL indicates selling aggression and potential breakdown. Mean-reversion strategies buy near VAL. |
| POC | level | - | Point of Control — the price level with the highest traded volume. The single most important volume profile level. Represents the price where the most market participants agree on fair value. Acts as the strongest intra-period support/resistance. Price tends to magnetically return to the POC. |
The POC is arguably the most powerful single level in volume-based trading. It represents the price where the largest number of market participants established positions. These participants will defend their positions: buyers who bought at the POC will buy more if price returns there (seeing it as a discount); sellers who sold at the POC will sell more (seeing it as overvalued). This self-reinforcing behavior makes the POC a strong magnetic level.
Output
The selected value area level (VAH, VAL, or POC) flows out the level handle. The level updates dynamically as new bars are added and volume accumulates.
MTF Override
Per-node override when MTF is enabled. Useful for anchoring volume profile levels from a higher timeframe (e.g., weekly POC as a reference for daily trading).
Volume profile levels are only as reliable as the volume data. On exchanges or data feeds with incomplete volume reporting, the POC and value area boundaries may be inaccurate. Additionally, volume profile is most meaningful when enough volume has accumulated: a session profile 5 minutes into the day tells you almost nothing. Use lookback-based profiles for early-session trading, or wait for sufficient volume to accumulate before relying on session-based levels.
Image Placeholder: Volume Profile node inspector: source (lookback selected), lookback input (100), value area dropdown (POC selected). Level output handle on the right edge.
SMC (Smart Money Concepts) Node
Smart Money Concepts (SMC) is a trading methodology that analyzes price action through the lens of institutional order flow. Rather than using traditional indicators, SMC identifies patterns and structures believed to reveal the footprints of “smart money”: banks, hedge funds, and other institutional participants whose large orders drive market movements.
The SMC node in BitPredict implements 12 different SMC functions. Each function detects specific institutional patterns and produces signals with different output types (binary, numeric, categorical, or level). The output type determines how the signal connects to conditions and which operators are available.
Function (required)
Select one of 12 SMC functions:
| Parameter | Type | Default | Description |
|---|---|---|---|
| fvg | binary | - | Fair Value Gap — an imbalance between candles where the wicks of adjacent candles do not overlap, creating a gap in price delivery. FVGs often act as magnets: price returns to "fill the gap" before continuing in the original direction. Output: binary (gap exists / no gap). Connect to condition left as binary signal. |
| swing_highs_lows | categorical | - | Fractal swing points: Higher High (HH), Higher Low (HL), Lower High (LH), Lower Low (LL). Used to identify market structure shifts. A series of HH+HL defines an uptrend; LH+LL defines a downtrend. A break of structure occurs when an LH forms after a series of HH+HL (or vice versa). Output: categorical signal name. Connect to condition left; use == operator to match specific swing type. |
| bos_choch | categorical | - | Break of Structure (BOS) / Change of Character (CHoCH). BOS: continuation signal where price breaks a previous swing point in the trend direction. CHoCH: reversal signal where price breaks a swing point against the prevailing trend, indicating a potential trend change. Output: categorical (BOS_Bullish, BOS_Bearish, CHoCH_Bullish, CHoCH_Bearish). Connect to condition left; use == operator to match specific signal. |
| ob | binary | - | Order Block — the last opposing candle before a strong impulsive move. In an uptrend, the last bearish candle before the rally is the bullish OB. In a downtrend, the last bullish candle before the drop is the bearish OB. Institutions are believed to have placed their orders at these levels. When price returns to an OB, it often reverses. Output: binary (at OB / not at OB). Connect to condition left as binary signal. |
| previous_high_low | level | - | Previous period's high and low levels. Unlike the Price Levels node which outputs multiple S/R levels, this SMC function focuses specifically on the prior period's extremes as potential liquidity zones. Output: level (the high or low price). Connect to condition RIGHT handle (level pattern). Auto-sets left=price. |
| sessions | binary | - | Kill Zones — specific session times (London Open, London Close, NY Open, NY Close, Asia Open) when liquidity and volatility are elevated. Named because these are times when stop hunts and liquidity grabs frequently occur. Output: binary (in session / not in session). Connect to condition left as binary signal. Useful for time-filtering: only trade during kill zones, or avoid trading during them. |
| breaker_block | binary | - | A failed order block that becomes support or resistance. When price breaks through an OB instead of reversing, the OB "breaks" and flips role: a broken bullish OB becomes resistance; a broken bearish OB becomes support. Output: binary (at breaker / not at breaker). Connect to condition left as binary signal. |
| mitigation_block | binary | - | An order block that has been tested (mitigated) by price returning to it. Once mitigated, an OB's power is diminished: subsequent touches are less likely to cause reversals. Output: binary (at mitigated OB / not). Connect to condition left as binary signal. |
| retracements | level | - | Fibonacci-based retracement levels drawn from an SMC perspective. Similar to the Fibonacci node but uses SMC-specific swing identification (often based on BOS/CHoCH swing points rather than simple price highs/lows). Output: level (the retracement price). Connect to condition RIGHT handle (level pattern). |
| algorithmic_order_block | binary | - | Algorithmically detected order blocks using tighter, more systematic criteria than the standard OB detection. Uses fixed rules for candle size, wick-to-body ratio, and follow-through to identify high-probability order blocks. Less subjective than manual OB identification. Output: binary (at algorithmic OB / not). Connect to condition left. |
| bpr | level | - | Balanced Price Range — the fair value area from an SMC perspective. Similar to the Volume Profile value area but identified through price structure rather than volume. Represents the range where price is considered "balanced" or "fair." Breaks above or below BPR signal directional conviction. Output: level (range high or low). Connect to condition RIGHT handle (level pattern). |
| liquidity_swing_hl | binary | - | Liquidity grabs at swing highs and lows — also known as stop hunts. When price briefly breaks a swing high or low to trigger stop losses and liquidate positions before reversing. A classic SMC pattern: "liquidity grab then reversal." Output: binary (liquidity grab detected / not detected). Connect to condition left as binary signal. |
Swing Length (integer)
The number of bars used to define swing points for functions that detect swings (BOS/CHoCH, swing_highs_lows, liquidity_swing_hl). A larger swing length identifies more significant structural points but responds more slowly to market changes. Typical values: 5-10 for scalping, 10-20 for intraday, 20-50 for swing trading.
Close Mitigation (toggle)
Whether a candle close beyond a level counts as mitigation, or only a wick. When ON: the level is considered mitigated only if a candle closes beyond it (more conservative). When OFF: any wick beyond the level counts as mitigation (more sensitive). Most relevant for order block and breaker block functions.
Lookback Periods (integer)
How many periods back to analyze for pattern detection. For FVG: how many bars back to look for unfilled gaps. For OB: how many bars back to identify potential order blocks. Larger values find more historical patterns but may include stale ones that are no longer relevant.
Output (dropdown, dynamic)
Which specific signal from the selected function to output. The available signals vary by function and are defined in the market-structure.json registry. Each signal has its own output_type that determines condition behavior:
- Binary signals: Connect to condition
left. Binary operators available (is_true,is_false,just_turned_true,just_turned_false). Right side hidden. - Numeric signals: Connect to condition
left. Full numeric operator set (15 operators). Right side shows value input. - Categorical signals: Connect to condition
left. Categorical operators (==,!=). Right side shows signal selector dropdown. - Level signals: Connect to condition
right. Auto-sets left to price. Level operators available (8 operators). Right side shows level as read-only display.
MTF Override
Per-node override when MTF is enabled. SMC patterns on higher timeframes carry more significance: a daily FVG is far more important than a 5-minute FVG. MTF override lets you anchor SMC analysis to higher timeframes while trading on lower ones.
SMC provides a fundamentally different approach to market analysis than traditional indicators. While an RSI tells you a number, SMC tells you a story: institutions accumulated here, manipulated price to trigger stops there, and are now pushing price toward a liquidity target. Understanding this narrative can help you align your trades with the direction of institutional order flow rather than trading against it. However, SMC is also more subjective than indicator-based approaches; the BitPredict implementation standardizes the pattern detection to remove subjectivity.
SMC is an advanced methodology with a steep learning curve. The patterns are context-dependent: a FVG in a strong trend behaves differently from a FVG in a range. Beginners often over-rely on SMC patterns in isolation without considering the broader market structure. Always combine SMC signals with trend context (is the overall structure bullish or bearish?) and confirmation from other analysis methods.
Image Placeholder: SMC node inspector: function dropdown (fvg selected), swing length (10), close mitigation toggle (ON), lookback periods (50), output dropdown showing available FVG signals (FVG_Exists). Signal handle on the right edge. Parameter descriptions visible below each field.
Level Node Connection Pattern
The connection pattern for level nodes (Fibonacci, Pivot Points, Price Levels, Volume Profile) is fundamentally different from indicator connections. Understanding this pattern is essential because it determines the entire condition configuration. Misconnecting a level node is one of the most common mistakes new strategy builders make.
The Level Connection Rule
When a level node connects to a Condition node, the following five things happen automatically:
- The level node's
levelhandle MUST connect to the condition'srighthandle. If you attempt to connect toleft, the system auto-redirects the connection toright. - The system automatically sets the condition's
left.typetoprice. No manual configuration needed: the moment a level connects toright, the left side switches to price mode. - The condition's left side now shows a price field selector with options:
open,high,low,close,hl2,hlc3,ohlc4. You choose which price field to compare against the level. - The condition's operator set switches to level operators (8 operators):
crosses_above,crosses_below,>,<,bounces_from,breaks_through,is_near,is_far. - The condition's right side shows the level value as a read-only display. The level value comes from the connected level node's output: you cannot type it manually. This is intentional: the level is dynamically computed by the level node; hardcoding a fixed value would defeat the purpose.
level handle) → Condition (right handle) ⇒ Auto-sets: left.type = price, operator_set = level, right = read-only level displayWhat This Enables
This connection pattern creates “price vs level” conditions:
- “Price
crosses_above0.618 Fib retracement” - “Close
is_nearR1 Pivot (within 0.5%)” - “High
bounces_fromVAH with a 2-bar lookback” - “Low
breaks_throughS2 Pivot” - “Open
>Yesterday's High” - “Price
crosses_belowPOC”
How This Differs From Indicator Connections
This is fundamentally different from indicator connections. With indicators, both left and right can accept value-type handles, and you have the freedom to connect indicators to either side. With levels, the connection is prescriptive: level always goes to right, left is always price. This asymmetry exists because a level is semantically a fixed reference point that price is compared against, not a value that you compare against something else.
SMC Exception
SMC nodes are a partial exception. Most SMC functions produce signal handles (not level handles), so they connect to a condition's left handle like indicators do. Only SMC functions with level-type outputs follow the level connection pattern:
| Parameter | Type | Default | Description |
|---|---|---|---|
| retracements | level output | Right handle | Produces Fibonacci retracement levels from SMC swing points. Follows the level connection pattern: connects to condition right, auto-sets left=price. |
| bpr | level output | Right handle | Balanced Price Range outputs range high/low as levels. Follows level connection pattern. |
| previous_high_low | level output | Right handle | Previous period high/low as levels. Follows level connection pattern. |
| All other SMC functions | signal output | Left handle | fvg, swing_highs_lows, bos_choch, ob, sessions, breaker_block, mitigation_block, algorithmic_order_block, liquidity_swing_hl. Connect to condition left like indicators. |
The level connection pattern is the key architectural concept that distinguishes market structure nodes from indicator nodes. It enforces the semantic rule that “price is compared against levels, not the other way around.” Once you internalize this pattern, connecting market structure nodes becomes intuitive: level nodes always connect to the right handle, and the condition automatically configures itself for price-vs-level comparison.
A common mistake is trying to connect two level nodes to the same condition (e.g., comparing Fibonacci 0.618 to R1 Pivot). This is not directly supported because a condition has only one right handle. To compare two levels, create two separate conditions (one for each level) and combine their results with a logic gate. For example: “Price > Fib 0.618 AND Price < R1 Pivot” means price is between the two levels.
Image Placeholder: Diagram showing the level node connection pattern. Left side: a Fibonacci node with its level handle. Center: a Condition node with labeled left and right handles. Right side: arrows showing (1) level handle → condition right handle, (2) auto-population: left.type = price, (3) auto-population: operator_set = level, (4) auto-population: right value = read-only level display from Fibonacci node. A callout reads 'Level ALWAYS goes to right. Left is ALWAYS price.'