Nodes: Foundation
Deep reference for the three foundational node types in the Strategy Builder: Data Source (the root of every strategy), Indicator (50+ technical indicators), and Pattern (40+ candlestick patterns). Learn every configurable option in the Node Inspector.
Node Anatomy
Before diving into specific node types, it is essential to understand the universal anatomy of every node in the Strategy Builder. Regardless of type — Data Source, Indicator, Pattern, Condition, or Execution — all nodes share the same structural components. Understanding these components makes reading the canvas immediate and configuring nodes intuitive.
Image Placeholder: Annotated diagram of a node with all six structural parts labeled: header bar (colored, with type name and icon), input handles (small circles on the left edge, labeled), output handles (small circles on the right edge, labeled), body (configuration summary text), status badge (small validation indicator in the corner), and selection ring (blue glow border).
Header Bar
The header bar is the colored strip at the top of every node. It displays the node type name and a category icon, and its background color instantly identifies which category the node belongs to. The color mapping is:
| Color | Category | Node Types | Tailwind Class |
|---|---|---|---|
| Blue | Data Source | Data Source | text-blue-400 |
| Violet | Indicator | Indicator (SMA, EMA, RSI, MACD, etc.) | text-violet-400 |
| Orange | Pattern | Pattern (Doji, Hammer, Engulfing, etc.) | text-orange-400 |
| Amber | Condition | Condition | text-amber-400 |
| Teal | Logic / Signal Gate | Logic Gate, Signal Gate | text-teal-400 |
| Pink | Classifier | Classifier (RF, XGBoost, Logistic Reg.) | text-pink-400 |
| Indigo | Regressor / Pivot Points | Regressor, Pivot Points | text-indigo-400 |
| Emerald | Strategy / Volume Profile | Strategy, Volume Profile (VPVR) | text-emerald-400 |
| Green | Entry Long | Entry Long | text-green-400 |
| Red | Entry Short | Entry Short | text-red-400 |
| Rose | Exit / Risk Management | Exit, Risk Management | text-rose-400 |
| Sky | Filter | Trend, Volatility, Volume, Time, Regime | text-sky-400 |
| Purple | Fibonacci | Fibonacci | text-purple-400 |
| Cyan | Price Levels | Price Levels | text-cyan-400 |
| Rose (dark) | SMC | Smart Money Concepts | text-rose-400 |
Input Handles
Input handles are small circles on the left or top edges of a node. They are where incoming connections arrive from upstream nodes. Each input handle has a label that identifies its purpose:
left— The primary left-side input for conditions and indicators. AcceptsVALUEorDATAhandles.right— The secondary right-side input for conditions. AcceptsVALUEhandles.cond-0,cond-1, ... — Condition inputs on Entry and Exit nodes. AcceptsRESULTorOUThandles. Entry/Exit nodes can have multiple condition inputs (connected via OR — any condition can trigger the entry/exit).filter-indicator— Filter input on Filter nodes for indicator-based filtering. AcceptsVALUEhandles.
When you hover over an input handle, it glows green if a connection from the current drag source is valid, or red if it is invalid. This visual feedback prevents incorrect wiring.
Output Handles
Output handles are small circles on the right edge of a node. They are where connections depart to downstream nodes. Each output handle is labeled by the type of data it emits:
data— Emitted by Data Source. Contains OHLCV bar data.value— Emitted by Indicator and Pattern nodes. Contains computed numeric arrays or categorical signals.result— Emitted by Condition nodes. Boolean (true/false) per bar.gate— Emitted by Filter nodes. Boolean — trade allowed/blocked.level— Emitted by Market Structure nodes. Price level zones.signal— Emitted by ML and Strategy nodes. Probabilistic or categorical signal.out— Emitted by Logic Gate and Signal Gate nodes. Combined boolean result.
Body
The body is the main area of the node between the header bar and the bottom edge. It displays a compact summary of the node's current configuration. Examples:
- Data Source: “BTCUSDT | Spot | 1h”
- Indicator: “SMA (20, close)”
- Condition: “SMA 20 crosses_above SMA 50”
- Pattern: “Bullish Engulfing”
The body text updates in real time as you change parameters in the Inspector. It is your at-a-glance summary of what each node does, letting you read the entire strategy logic directly from the canvas without clicking into every node.
Status Badge
A small indicator in the bottom-right corner of the node showing validation state:
- Green checkmark: Node configuration is valid. All required fields are filled and all connections are compatible.
- Red exclamation: Node has an invalid or incomplete configuration. Hover over the badge to see the specific error message (e.g., “Symbol is required”, “Invalid handle connection”).
- Yellow warning: Node is valid but may be suboptimal. For example, an Indicator node with no data connection and no manual input selected will show a warning: it will still compute, but maybe not on the data you intend.
Selection Ring
When you click a node, a blue glow border appears around it, indicating it is the currently selected node. The Inspector panel opens (or updates) to show this node's configuration. Only one node can be in the selected state at a time under normal (non-multi-select) operation. Clicking on empty canvas space deselects the current node and closes the Inspector.
Consistent node anatomy means you only need to learn the visual language once. Every node type follows the same structural rules — header, handles, body, badge, ring. When you encounter a new node type (e.g., a Classifier node for the first time), you already know where to look for its output handle, how to read its configuration summary, and how to interpret its status badge. The learning curve flattens rapidly after the first few nodes.
The Node Inspector
The Node Inspector is the configuration panel that opens on the right side of the interface when you click any node on the canvas. It is the primary interface for configuring every aspect of a node's behavior. Changes made in the Inspector are reflected immediately on the node's visual representation and take effect in the next backtest.
Common Inspector Features
Every Inspector panel, regardless of node type, shares these structural elements:
Alias Field
Every node has an alias — a human-readable label displayed on the canvas (in the node body, below the header). The alias serves as the node's identifier:
- Must be unique: No two nodes in a strategy can share the same alias. The system enforces this — attempting to save a duplicate alias shows a validation error.
- Auto-generated default: When you add a node, the alias is auto-generated in the format
TypeName #N— e.g., “SMA #1”, “Condition #2”, “Pattern #3”. - Rename for clarity: Change the alias to something meaningful that describes the node's role: “Fast MA”, “Entry Signal”, “Trend Filter”, “RSI Oversold”. Good aliases make the canvas self-documenting.
- Referenced in conditions: When another node (e.g., a Condition) references this node, the alias appears in the dropdown — so clear names reduce confusion.
Header Section
The top of the Inspector shows:
- Node type icon + name: The category icon and type name (e.g., “Indicator”, “Condition”). This tells you at a glance what kind of node you are editing — useful when you have many nodes on the canvas.
- Close button (X): In the top-right corner. Clicking it closes the Inspector and deselects the node. Keyboard shortcut:
Escape.
Scrollable Content
Complex nodes — particularly Indicator nodes with many parameters, or Condition nodes with multi-condition setups — have long inspector forms. The Inspector is scrollable independently of the canvas. Use the scroll wheel while hovering over the Inspector panel to see all options.
MTF Override Section
When the Data Source node has Multi-Timeframe (MTF) enabled, many downstream nodes display an additional MTF Override section in their Inspector. This section contains:
- Symbol override: Optionally specify a different trading pair for this specific node (e.g., use ETHUSDT data for a correlation indicator while the strategy trades BTCUSDT).
- Bar Type override: Optionally specify a different bar type (Spot, Linear, Inverse) for this node.
- Timeframe override: Optionally specify a different bar interval for this node (e.g., compute a 4h SMA while the data source runs at 1h). This is the most commonly used MTF feature.
When MTF override fields are left at their defaults (empty/“inherit”), the node inherits the Data Source's settings. Setting an override breaks this inheritance for that specific field. Overrides also remove the requirement for a direct data-source connection to the node, since the node fetches its own data independently.
The Inspector is where you spend most of your configuration time. The alias field alone is worth mastering — a strategy with nodes named “SMA #1”, “SMA #2”, and “Condition #1” is nearly impossible to understand at a glance. A strategy with nodes named “Fast MA”, “Slow MA”, and “Crossover Signal” tells its own story directly on the canvas.
Data Source Node
The Data Source node is the root of every strategy. It defines what market data your strategy operates on — which trading pair, what type of price bars, and at what time interval. Every other node in the strategy ultimately depends on the data produced by this node.
Critical rule: There can be exactly one Data Source node per strategy. Without it, no indicators can compute, no conditions can evaluate, and no backtest can run. The DAG validation system enforces this — attempting to delete the Data Source node while other nodes depend on it will show an error.
Image Placeholder: Data Source node Inspector panel with all fields filled in: Symbol = BTCUSDT, Exchange = Bybit, Bar Type = Spot, Timeframe = 1h, MTF toggle = off, has_trigger_bar toggle = off. Each field labeled.
Symbol
REQUIREDThe trading pair your strategy operates on. This is a dropdown search field that fetches available symbols from the BitPredict API. Start typing to filter — e.g., typing “BTC” shows all Bitcoin-denominated pairs.
- Common examples:
BTCUSDT,ETHUSDT,SOLUSDT,BNBUSDT,XRPUSDT. - Format: Base currency + Quote currency, no separator. BTCUSDT = Bitcoin priced in Tether (USDT).
- Impact: The symbol determines the available price history, the liquidity characteristics, and the spread/slippage model used in backtesting. Different symbols have vastly different volatility profiles — a strategy that works on BTCUSDT may fail on a low-cap altcoin with erratic price action.
- Loading: Symbols are loaded asynchronously from the API when the dropdown opens. If the API is unreachable, a cached list is used as fallback.
Selecting a symbol with low liquidity (e.g., a newly listed altcoin) may result in backtest results that look impressive due to wide spreads and erratic fills in historical data — but these conditions will not replicate in live trading where actual execution prices reflect real order book depth. Prefer major pairs (BTCUSDT, ETHUSDT) for strategy development, then test on lower-liquidity pairs as a robustness check.
Exchange
OPTIONALThe exchange from which market data is sourced. Currently, the Strategy Builder supports data from Bybit. This field is pre-selected to Bybit and rarely needs to be changed.
- Bybit Spot: Standard spot market data. Non-leveraged, standard OHLCV bars.
- Bybit Linear: USDT-margined perpetual futures. Includes funding rate data.
- Bybit Inverse: Coin-margined perpetual futures (e.g., BTCUSD). Inverse contract data.
Bar Type
REQUIREDThe type of price bars used in the strategy. This affects how OHLCV (Open, High, Low, Close, Volume) data is sourced and interpreted.
- Spot: Standard spot market bars. Most commonly used. Represents actual asset prices without leverage or funding rate effects.
- Linear: Linear perpetual futures contracts (e.g., BTCUSDT perpetual). These contracts are margined and settled in USDT. Includes funding rate data. Slightly different price dynamics from spot due to basis (premium/discount) and funding rate effects.
- Inverse: Inverse perpetual futures (e.g., BTCUSD). These contracts are margined and settled in the base currency. Used primarily for advanced futures-specific strategies.
Bar type selection is not cosmetic — it determines the exact data feed. A strategy developed on Spot data will produce different backtest results when run on Linear futures data, even with the same symbol and timeframe, because futures prices diverge from spot due to funding rates and basis. Always match the bar type to the market you intend to trade live.
Timeframe
REQUIREDThe primary bar interval at which all indicators compute and conditions evaluate. This is the base resolution of your strategy.
Available timeframes:
Guidance:
- 1m–15m: High-frequency, intraday strategies. Many trades, smaller per-trade profits, sensitive to commission and slippage models.
- 30m–4h: Swing trading strategies. Moderate trade frequency. Balances signal quality and trade opportunity.
- 6h–1d: Position trading. Few trades, larger per-trade moves. Less sensitive to commissions but requires larger stop-losses.
- 3d–1M: Long-term investing / macro strategies. Very few trades — statistical significance of backtest results is low with short historical windows. Requires years of data.
Multi-Timeframe (MTF)
A toggle switch (default: off) that, when enabled, allows individual nodes in the strategy to override their symbol, bar type, and/or timeframe independently of the Data Source. This is the mechanism that enables multi-timeframe strategies.
When MTF is enabled:
- Compatible downstream nodes (Indicators, Patterns, ML Models, Filters) show additional MTF Override fields in their Inspector.
- Each node can specify its own symbol, bar_type, and timeframe. For example, an indicator can be set to
4hwhile the Data Source runs at1h, pulling 4h bars independently. - The data-source connection requirement is relaxed for nodes with MTF overrides — they fetch their own data feed rather than consuming the Data Source's output.
- Data from different timeframes is aligned by the backtest engine using the primary timeframe as the index, with forward-fill for higher-timeframe data.
Use case: A 1h entry strategy confirmed by a 4h trend filter. The entry indicators (SMA, RSI) run at 1h. The trend filter (a 200-period SMA or ADX) runs at 4h. The filter only allows long entries when the 4h trend is up.
MTF is one of the most powerful features in the Strategy Builder. In traditional coding approaches, implementing a multi-timeframe strategy requires managing multiple data feeds, aligning timestamps, forward-filling higher-timeframe values, and preventing look-ahead bias — all manually. With MTF enabled, declaring a per-node timeframe override handles all of this automatically. Most profitable systematic strategies use some form of multi-timeframe confirmation; MTF support makes this accessible without engineering overhead.
has_trigger_bar
A toggle switch (default: off). When enabled, the strategy uses a trigger bar — a lower timeframe bar within the primary bar's period — for execution precision. This is an advanced feature for strategies that need intra-bar execution modeling.
When has_trigger_bar is enabled, additional fields appear:
- Trigger Bar Symbol: Usually the same as the primary symbol.
- Trigger Bar Type: Usually the same as the primary bar type.
- Trigger Bar Timeframe: A lower timeframe than the primary. For example, primary = 1h, trigger = 1m — the strategy evaluates on 1h bars but enters/exits at the next 1m bar.
How it works: The strategy's logic (indicators, conditions) runs on the primary timeframe bars. When a signal is generated (e.g., SMA crossover confirmed on a 1h bar close), the entry is executed on the next trigger bar (e.g., the next 1m bar). This simulates realistic execution: you detect a signal on the higher timeframe, then enter on the lower timeframe for better fill price accuracy.
Impact on backtesting: Without a trigger bar, entries and exits are assumed to occur at the open or close of the primary bar — an approximation that can significantly overstate performance for high-frequency strategies. With a trigger bar, the backtest models intra-bar fills more realistically, which typically reduces backtest returns (because you are not getting the idealized bar-close price).
Enabling trigger bars on 1m primary timeframe has no meaningful effect (the trigger bar would need to be sub-1m, which is not available). Trigger bars add significant computational cost because each primary bar is decomposed into N trigger bars. A 1h strategy with a 1m trigger bar processes 60x more bars. Expect backtests to run proportionally slower.
Parameter Summary
| Parameter | Type | Default | Description |
|---|---|---|---|
| symbol | string (dropdown) | — (required) | Trading pair symbol. Fetched from BitPredict API. Examples: BTCUSDT, ETHUSDT, SOLUSDT. |
| exchange | string (dropdown) | bybit | Exchange for data sourcing. Currently Bybit (Spot, Linear, Inverse). |
| bar_type | Spot | Linear | Inverse | Spot | Type of price bars. Determines OHLCV data source and contract characteristics. |
| timeframe | string (dropdown) | — (required) | Primary bar interval. 15 options from 1m to 1M. All indicators and conditions use this resolution by default. |
| multi_timeframe | boolean (toggle) | false | When enabled, individual nodes can override their symbol/bar_type/timeframe independently. |
| has_trigger_bar | boolean (toggle) | false | When enabled, the strategy uses a lower-timeframe bar for intra-bar execution precision. |
Indicator Node
Indicator nodes compute technical analysis values from price and volume data. They are the most frequently used transformation nodes in the Strategy Builder. With 50+ supported indicators covering trend, momentum, volatility, and volume analysis, the Indicator node is the primary tool for converting raw price data into actionable signals.
Image Placeholder: Indicator node Inspector panel with Name = SMA selected, Alias = Fast SMA, Params: period = 20, source = close, Output = sma. All fields labeled.
Name
REQUIREDDropdown to select which technical indicator to compute. The list is loaded from /registry/indicators.json at application startup and contains 50+ indicators. The list is searchable — start typing to filter.
Complete indicator list:
Trend
- SMA (Simple Moving Avg)
- EMA (Exponential MA)
- WMA (Weighted MA)
- DEMA (Double EMA)
- TEMA (Triple EMA)
- TMA (Triangular MA)
- KAMA (Kaufman Adaptive)
- HMA (Hull Moving Avg)
- VWMA (Volume-Weighted MA)
- SuperTrend
- PSAR (Parabolic SAR)
- Ichimoku
Momentum / Oscillator
- RSI (Relative Strength)
- Stochastic (Slow/Fast)
- CCI (Commodity Channel)
- Williams %R
- MFI (Money Flow)
- Ultimate Oscillator
- ROC (Rate of Change)
- Momentum
- MACD
- PPO (Percentage Price Osc)
- Awesome Oscillator
Volatility / Volume
- Bollinger Bands
- Keltner Channels
- Donchian Channels
- ATR (Avg True Range)
- Standard Deviation
- OBV (On-Balance Volume)
- Volume (raw)
- Chaikin Money Flow
- AD (Accum/Distribution)
Trend Strength
- ADX (Avg Directional)
- Plus DI / Minus DI
- Aroon (Up/Down)
- Aroon Oscillator
Custom / Advanced
- Linear Regression
- Z-Score
- VWAP (Volume-Weighted Avg Price)
- Pivot Points (Standard)
- Chaikin Volatility
- Elder's Force Index
Selecting an indicator without understanding its output range and characteristics can lead to nonsensical conditions. For example, RSI outputs values in [0, 100]; testing “RSI > 200” will never be true. MACD outputs unbounded values; testing “MACD > 100” on a low-priced asset may never trigger. Always know the output range of your chosen indicator before building conditions around it.
Alias
REQUIREDA unique, human-readable label for this node. Auto-generated as “SMA #1”, “RSI #2”, etc. Rename immediately to something descriptive: Fast MA, RSI 14, MACD Signal, BB Upper. This alias appears in dropdowns throughout the strategy (e.g., when a Condition node references this indicator as its left or right side), so clear names reduce errors.
Params (Dynamic)
Each indicator exposes its own set of configurable parameters. The Inspector dynamically renders parameter fields based on the selected indicator name. This means selecting “SMA” shows a different set of fields than selecting “MACD” or “Bollinger Bands”.
Common parameters across many indicators:
- period (integer): The lookback window in bars.
20for SMA means the average of the last 20 bars. Typical ranges: 5–50 for fast signals, 50–200 for trend identification. This is the most important parameter for most indicators. - source (dropdown): Which price field the indicator computes from. Options:
open,high,low,close,hl2(average of high+low),hlc3(average of high+low+close),ohlc4(average of open+high+low+close). Most indicators default toclose. - matype (dropdown): Moving average type for indicators that use internal MAs (e.g., MACD uses MAs internally; Keltner Channels use an MA for the middle line). Options: SMA, EMA, WMA, DEMA, TEMA, etc. This allows you to, for example, compute a MACD where the signal line is an EMA of the MACD line (standard) or an SMA (unusual but sometimes useful).
- signal (integer): Signal line period, used by MACD and similar indicators. The MACD signal line is an EMA of the MACD line. Default:
9. - stddev (float): Standard deviation multiplier, used by Bollinger Bands and Keltner Channels. Determines band width. Default:
2.0(Bollinger),1.5(Keltner). Higher = wider bands, fewer touches. - fast / slow (integer): Dual period parameters for indicators with two lookback windows. MACD uses fast=12 and slow=26 by default. PPO uses fast=12 and slow=26. Stochastic uses %K and %D periods (often 14 and 3).
Indicator-specific parameter examples:
| Indicator | Unique Params | Defaults |
|---|---|---|
| SMA | period, source | period=20, source=close |
| EMA | period, source | period=20, source=close |
| RSI | period, source | period=14, source=close |
| MACD | fast, slow, signal, source | fast=12, slow=26, signal=9 |
| Bollinger Bands | period, stddev, source, matype | period=20, stddev=2.0, matype=SMA |
| Stochastic | k_period, d_period, slowing, source | k=14, d=3, slowing=3 |
| ATR | period | period=14 |
| ADX | period | period=14 |
| Ichimoku | tenkan, kijun, senkou_b | tenkan=9, kijun=26, senkou_b=52 |
| Keltner Channels | period, stddev, source, matype | period=20, stddev=1.5 |
| Donchian Channels | period | period=20 |
| PSAR | acceleration, maximum | acceleration=0.02, maximum=0.2 |
| SuperTrend | period, multiplier, source | period=10, multiplier=3.0 |
| HMA | period, source | period=16, source=close |
| KAMA | period, fast_ema, slow_ema, source | period=10, fast=2, slow=30 |
Input
CONDITIONALSpecifies which price field feeds the indicator. This field is only relevant when the indicator is NOT connected to a Data Source node via a data connection. When connected, the indicator automatically receives full OHLCV data and the input field is ignored (and hidden).
When the indicator has no data connection (e.g., in an MTF setup where the indicator fetches its own data), the Input dropdown specifies which price field to use:
openhighlowclosevolume
Leaving the Input field at its default (close) when the indicator is not connected to a data source means the indicator computes on close prices only. If your condition uses the indicator to evaluate against the high or low of a bar, you may be using the wrong input. Explicitly set the input field to match your strategy's logic.
Output
REQUIREDSpecifies which output of the indicator to use. Many indicators produce multiple outputs, and this dropdown selects which one flows out of the node's value handle.
Output options per indicator:
| Indicator | Available Outputs | Output Type |
|---|---|---|
| SMA / EMA / WMA | sma / ema / wma (the MA value) | numeric |
| RSI | rsi (0–100 oscillator value) | numeric |
| MACD | macd (MACD line), signal (signal line), histogram (macd − signal) | numeric / zero_crossing |
| Bollinger Bands | upperband, middleband, lowerband, bandwidth, percent_b | numeric |
| Stochastic | slowk (%K line), slowd (%D line) | numeric |
| ATR | atr (average true range value) | numeric |
| ADX | adx (trend strength 0–100), plus_di, minus_di | numeric |
| Ichimoku | tenkan (conversion), kijun (base), senkou_a, senkou_b, chikou (lagging) | numeric |
| CCI | cci (commodity channel index) | numeric |
| OBV | obv (on-balance volume) | numeric |
| SuperTrend | supertrend (trend direction ±), trend_direction (1 up, −1 down) | binary |
| PSAR | psar (stop-and-reverse level) | numeric |
| Aroon | aroon_up, aroon_down, aroon_osc (up − down) | numeric |
| Volume | volume (raw bar volume) | numeric |
Output Type
AUTO-DETERMINEDEach output has a type classification that determines which comparison operators are available when connected to a Condition node. This is auto-determined and display-only — you cannot change it, but you need to understand it to build correct conditions.
- numeric: Continuous floating-point values. Most indicators (SMA, RSI, MACD, BB, ATR, ADX). All operators are available:
>,<,>=,<=,==,!=,crosses_above,crosses_below. - binary: True/false or ±1 values. Examples: SuperTrend direction (+1 / −1), ADX trend status. Limited operators:
==and!=are most relevant. - zero_crossing: Values that oscillate around zero and are meaningful when they cross above or below zero. Examples: MACD histogram, Aroon Oscillator. The
crosses_aboveandcrosses_belowoperators are designed for these outputs (crosses above 0 = bullish, crosses below 0 = bearish). - percentage: Values in percent. Examples: ROC (Rate of Change). All numeric operators available, but comparison values should be entered as percentages (e.g., “ROC > 5” means 5%, not a raw 0.05).
Output type determines operator availability. If you select an indicator output and the Condition node shows fewer operators than expected, check the output type — you may have selected an output (e.g., SuperTrend direction, which is binary) that does not support > or < comparisons. Switch to a numeric output from the same indicator if you need threshold-based conditions.
MTF Override
CONDITIONALVisible only when the Data Source node has MTF enabled. Contains per-node symbol, bar_type, and timeframe override fields. When set, this indicator fetches its own data at the specified resolution instead of consuming the Data Source output.
- Symbol override: Trade a different pair for this indicator (e.g., use ETHUSDT data for a correlation indicator while strategy trades BTCUSDT).
- Bar Type override: Different contract type (e.g., indicator on Spot while strategy trades Linear).
- Timeframe override: The most common use. Set to a higher timeframe (e.g., 4h) to compute a trend filter that confirms lower-timeframe entry signals. Set to a lower timeframe for granular analysis.
Pattern Node
Pattern nodes perform candlestick pattern recognition — identifying specific formations in price action that have predictive value. With 40+ supported patterns spanning single-candle, double-candle, and triple-candle formations, the Pattern node converts raw OHLC bar data into categorical trading signals.
Image Placeholder: Pattern node Inspector with Pattern = Bullish Engulfing selected, Alias = Engulfing Signal, Params section visible with pattern-specific options, Output showing signal map.
Pattern
REQUIREDDropdown to select which candlestick pattern to detect. The list is loaded from /registry/patterns.json and contains 40+ patterns organized by type (bullish, bearish, reversal, continuation).
Complete pattern list:
Bullish Patterns
- Bullish Engulfing
- Bullish Harami
- Bullish Harami Cross
- Morning Star
- Morning Doji Star
- Piercing Line
- Three White Soldiers
- Three Inside Up
- Three Outside Up
- Hammer
- Inverted Hammer
- Tweezer Bottom
- Bullish Abandoned Baby
- Bullish Kicking
- Bullish Belt Hold
- Bullish Breakaway
- Bullish Side-by-Side White Lines
- Rising Three Methods
Bearish Patterns
- Bearish Engulfing
- Bearish Harami
- Bearish Harami Cross
- Evening Star
- Evening Doji Star
- Dark Cloud Cover
- Three Black Crows
- Three Inside Down
- Three Outside Down
- Shooting Star
- Hanging Man
- Tweezer Top
- Bearish Abandoned Baby
- Bearish Kicking
- Bearish Belt Hold
- Bearish Breakaway
- Falling Three Methods
Neutral / Continuation
- Doji (Dragonfly, Gravestone, Long-Legged)
- Spinning Top
- Marubozu (White/Black)
- High Wave
- Upside Gap Two Crows
- On Neck / In Neck / Thrusting
Alias
REQUIREDAuto-generated (e.g., “Pattern #1”). Rename to describe the signal: Engulfing Signal, Morning Star Entry, Hammer Reversal.
Params (Dynamic, Pattern-Specific)
Some candlestick patterns have configurable parameters that control how strictly the pattern is detected. These parameters appear dynamically based on the selected pattern. Common pattern parameters include:
- body_to_wick_ratio (float): Minimum ratio of candle body size to total wick size. For Hammer and Shooting Star patterns, a small body with a long lower wick is required. This parameter controls how extreme the ratio must be. Default varies by pattern.
- confirmation_bar (boolean): When enabled, the pattern must be confirmed by the next bar's close before it is considered valid. Adds one bar of latency but significantly reduces false signals. Default:
false. - shadow_ratio (float): For Doji patterns, the maximum allowed shadow (wick) length as a fraction of the total candle range. A true Doji has open price approximately equal to close price; this parameter controls how close they must be.
- trend_required (boolean): For reversal patterns (Engulfing, Harami, Morning/Evening Star), requires a preceding trend of minimum length. Prevents detecting “reversal” patterns in sideways markets.
- trend_period (integer): When trend_required is enabled, the lookback period for trend detection (e.g., price must be above SMA(N) for a bullish reversal pattern to be invalid).
Input
CONDITIONALWhen the Pattern node is not connected to a Data Source node, this dropdown specifies the price field to scan for patterns. Patterns are detected from full OHLC data, so when connected to a data source, the full OHLC feed is used and this field is hidden.
Output
The Pattern node outputs a categorical signal via its value handle. Each pattern has a signals_map that maps pattern detection outcomes to named signal values. For example, the “Engulfing” pattern node produces:
Bullish Engulfing— when a bullish engulfing pattern is detected.Bearish Engulfing— when a bearish engulfing pattern is detected.No Pattern— when no engulfing pattern is present on a given bar (the vast majority of bars).
These signal names appear as selectable options in Condition nodes. When you connect a Pattern node's output to a Condition's left input and set the Condition's right side to “fixed value”, the dropdown shows the pattern's signal names. You can then write conditions like:
- “Pattern output
==Bullish Engulfing” — enter long when a bullish engulfing pattern appears. - “Pattern output
!=No Pattern” — trade when any pattern is detected (bullish or bearish), useful when combined with other filters.
Candlestick patterns have low predictive power in isolation. Academic research consistently shows that standalone candlestick patterns produce near-random accuracy on liquid markets. Pattern nodes are most effective when combined with other conditions — trend filters, volume confirmation, support/resistance levels from market structure nodes. A bullish engulfing pattern at a key Fibonacci retracement level in an uptrend is far more meaningful than the same pattern in isolation during a choppy range.
MTF Override
CONDITIONALSame as Indicator MTF Override — visible only when the Data Source has MTF enabled. Allows the Pattern node to scan for patterns on a different timeframe than the primary strategy resolution. Example: scan for daily engulfing patterns while the strategy entries fire on 1h bars. The daily engulfing pattern acts as a higher-timeframe context filter.
Pattern nodes bridge the gap between discretionary technical analysis and systematic trading. A pattern that an experienced trader “sees” on a chart — a morning star at support, a bearish engulfing at resistance — can be encoded as a Pattern node + Condition + Market Structure level, turning visual intuition into a testable, optimizable, backtestable hypothesis.