Strategy Builder
Build, customise, and manage trading strategies from composable components.
Overview
A strategy template defines your complete trading logic — which technical indicators to use, how to combine their signals into trade decisions, when to enter and exit, and during which hours to trade.
Templates are built from composable components. Each component is a technical indicator or rule that analyses market data and produces an output. You select which components to include, assign them roles, adjust their parameters, set their weights, and choose how their outputs combine.
There are two types of templates:
- System templates — Built-in strategies that are read-only. You can duplicate a system template to create an editable copy.
- User templates — Your own templates, created from scratch or duplicated from system templates. Fully editable.
Component Roles
Every component in a strategy template is assigned a role that determines how it participates in trade decisions.
Signal
Signal components are the core of your strategy. They analyse market data and produce a directional score: +1 (bullish), -1 (bearish), or 0 (neutral). These scores are combined according to your chosen combination mode to determine whether to open a long or short position. Each signal component has a configurable weight that affects how much influence it has on the final decision.
Filter
Filters confirm or reject market conditions. They evaluate the current state of the market and return a pass/fail result. A filter that fails will block any signal from triggering a trade entry. Use filters to ensure you only trade when the broader market environment supports your strategy.
Entry Guard
Entry guards are protective checks that run before opening a position. Unlike filters, which evaluate market conditions, entry guards focus on execution quality — for example, ensuring the price is not too far from a moving average or that there is enough potential move to justify the trade. When an entry guard fails, the trade is blocked.
Exit Rule
Exit rules determine when to close an open position. They include hard stop losses, take profit targets, trailing stops, time-based exits, and signal flip exits. Multiple exit rules can be active simultaneously — any exit rule that triggers will close the position.
Risk Gate
Reserved for future use. Risk gates will enforce portfolio-level risk limits such as maximum open positions and daily loss limits.
Component Categories
Components are organised into categories based on the type of market analysis they perform.
Trend Following
Components that identify and follow the direction of price trends. These include moving average crossovers, ADX (Average Directional Index), Supertrend, and swing structure analysis. They work best in trending markets and help determine the dominant market direction.
Momentum
Components that measure the speed and strength of price movements. RSI (Relative Strength Index), MACD, Stochastic Oscillator, and price action patterns fall into this category. They help identify overbought/oversold conditions and momentum shifts.
Volatility
Components that measure how much the price is fluctuating. Bollinger Bands, ATR (Average True Range), and Keltner Channels help assess market volatility. Entry guards like Min Move Guard and ATR Regime Guard use volatility metrics to ensure favourable trading conditions.
Volume / Market Structure
Components that analyse trading volume and order flow. OBV (On-Balance Volume), VWAP (Volume Weighted Average Price), CVD (Cumulative Volume Delta), Volume Spike, and Liquidity Sweep provide insight into the strength behind price movements and potential supply/demand imbalances.
Mean Reversion
Components designed for strategies that bet on prices returning to a mean. Z-Score of Price and RSI Divergence identify when prices have deviated significantly from their average and may be due for a reversal.
Risk / Execution
Exit rules that manage position risk and determine when to close trades. Hard Stop Loss, Take Profit, Trailing Stop, Time Stop, and Signal Flip Exit all define different conditions under which a position should be closed to either protect capital or lock in gains.
Combination Modes
When you have multiple signal components active, the combination mode determines how their individual outputs are merged into a single trade decision. Each mode has a threshold parameter that controls how strong the combined signal must be to trigger a trade.
Weighted Sum
Each signal's score (+1, -1, or 0) is multiplied by its weight, and the results are summed. If the absolute value of the total exceeds the Min Score threshold, a trade is triggered in the direction of the total (positive = long, negative = short).
Example: With three signals weighted 2, 3, and 1, if all three are bullish (+1), the weighted sum is 2 + 3 + 1 = 6. With a Min Score of 4, this exceeds the threshold and triggers a long entry.
All Agree
All enabled signal components that produce a non-zero score must agree on the same direction. If any signal disagrees, no trade is triggered. The Min Signals threshold sets the minimum number of non-zero signals required — this prevents a single signal from triggering a trade when others are neutral.
Example: With 4 signals and Min Signals set to 3, at least 3 signals must produce a non-zero score and all non-zero signals must point in the same direction.
Any
Any single signal can trigger a trade on its own, as long as its weighted score (score × weight) meets the Min Weighted Score threshold. This is the most permissive mode and generates the most trade signals.
Example: A signal with weight 3 producing a score of +1 has a weighted score of 3. With Min Weighted Score set to 2, this triggers a long entry.
Majority
A trade is triggered when more than half of the non-zero signals agree on a direction. The Min Majority threshold sets the minimum count of agreeing signals required.
Example: With 5 signals where 3 are bullish, 1 is bearish, and 1 is neutral, the majority is 3 bullish. With Min Majority set to 3, this triggers a long entry.
Anchor Component
All combination modes support an optional anchor component. When set, the anchor signal must produce a non-zero score in the trade direction for the trade to proceed, regardless of what the other signals produce. This allows you to designate one signal as a mandatory gate — for example, requiring that the trend direction (from a moving average crossover) aligns with the trade before any combination of momentum signals can trigger entry.
Weights & Scoring
Each signal component has a configurable weight (0.5 to 10, in 0.5 increments) that determines how much influence it has on trade decisions.
Weights are most impactful in Weighted Sum mode, where each signal's score is multiplied by its weight before summing. In Any mode, a higher weight means a single signal can more easily meet the threshold on its own. In All Agree and Majority modes, weights are not used — all signals count equally (one vote each).
Use weights to express confidence: give higher weights to signals you trust more or that have performed better historically, and lower weights to supplementary or experimental signals.
Trading Sessions
Trading sessions define time windows (in UTC) during which your bot is allowed to open new positions. Outside of active sessions, the bot will not enter new trades but will continue managing existing positions (exit rules remain active).
Each session has a label (e.g. "London + NY"), a start hour and end hour (0–23 UTC), and can be individually enabled or disabled.
The default session is "London + NY" (07:00–20:00 UTC), which covers the most liquid hours for most markets. You can add multiple sessions to trade during different windows — for example, a separate Asia session (00:00–08:00 UTC).
Trading sessions are important because market behaviour varies significantly by time of day. Liquidity, spread, and volatility all change depending on which global markets are open. Trading during low-liquidity hours can lead to worse fills and more slippage.
Intervals
Each component declares which candle intervals (timeframes) it requires. The bot subscribes to these intervals and feeds the corresponding candlestick data to the component for analysis.
Available intervals:
Some components require multiple intervals — for example, a moving average crossover might use both 1h and 4h candles to confirm trend direction on multiple timeframes. The intervals a component needs are shown in the component reference below and in the template editor.
Component Reference
Complete reference of all available strategy components, organised by category. Each component shows its allowed roles, required intervals, and configurable parameters with defaults and ranges.
Trend Following
Moving Average Crossover
Short MA crosses above/below long MA to signal trend shifts
| Parameter | Default | Range | Description |
|---|---|---|---|
| Short Period | 9 | min 2, max 100 | Period for the fast moving average |
| Long Period | 21 | min 5, max 500 | Period for the slow moving average |
| MA Type | ema | ema | sma | Type of moving average to use |
ADX (Average Directional Index)
Measures trend strength (not direction); >25 = strong trend
| Parameter | Default | Range | Description |
|---|---|---|---|
| Period | 14 | min 2, max 100 | ADX calculation period |
| Strength Threshold | 25 | min 10, max 60 | Minimum ADX value to consider a strong trend |
Supertrend
ATR-based trailing stop/trend line; binary bullish/bearish signal
| Parameter | Default | Range | Description |
|---|---|---|---|
| ATR Period | 10 | min 2, max 100 | Period for ATR calculation |
| Multiplier | 3 | min 0.5, max 10, step 0.1 | ATR multiplier for band width |
Swing Structure Break
Detects breaks of swing highs/lows with RSI quality filter
| Parameter | Default | Range | Description |
|---|---|---|---|
| Swing Lookback | 20 | min 5, max 100 | Candles to scan for swing highs/lows |
| RSI Period | 14 | min 2, max 100 | RSI period for quality filter |
| Bull RSI Min | 45 | min 0, max 100 | Minimum RSI for bullish break quality filter |
| Bull RSI Max | 65 | min 0, max 100 | Maximum RSI for bullish break (avoids overbought entries) |
| Bear RSI Min | 35 | min 0, max 100 | Minimum RSI for bearish break (avoids oversold entries) |
| Bear RSI Max | 55 | min 0, max 100 | Maximum RSI for bearish break quality filter |
EMA Distance Guard
Blocks entry when price is extended too far from 4h EMA in ATR units
| Parameter | Default | Range | Description |
|---|---|---|---|
| Max EMA Distance (ATR) | 2 | min 0.5, max 10, step 0.1 | Maximum distance from 4h EMA in ATR units before blocking entry |
| EMA Period | 21 | min 5, max 200 | Period for 4h EMA calculation |
| ATR Period | 14 | min 2, max 100 | Period for ATR calculation (used as distance unit) |
Momentum
RSI (Relative Strength Index)
Overbought/oversold oscillator for directional signals
| Parameter | Default | Range | Description |
|---|---|---|---|
| Period | 14 | min 2, max 100 | RSI calculation period |
| Oversold Level | 30 | min 5, max 49 | RSI level below which asset is oversold (buy) |
| Overbought Level | 70 | min 51, max 95 | RSI level above which asset is overbought (sell) |
MACD
Momentum via dual EMA difference + signal line crossover
| Parameter | Default | Range | Description |
|---|---|---|---|
| Fast Period | 12 | min 2, max 100 | Fast EMA period |
| Slow Period | 26 | min 5, max 200 | Slow EMA period |
| Signal Period | 9 | min 2, max 50 | Signal line EMA period |
Stochastic Oscillator
Compares close to recent range; good for mean-reversion in ranging markets
| Parameter | Default | Range | Description |
|---|---|---|---|
| %K Period | 14 | min 2, max 100 | Lookback period for %K |
| %D Period | 3 | min 2, max 50 | Smoothing period for %D (SMA of %K) |
| Slowing | 3 | min 1, max 10 | Slowing factor for %K smoothing |
| Oversold Level | 20 | min 5, max 40 | Level below which stochastic is oversold |
| Overbought Level | 80 | min 60, max 95 | Level above which stochastic is overbought |
Price Action Patterns
Detects engulfing candles, pin bars, and momentum continuation
No configurable parameters.
RSI Exhaustion Guard
Blocks entry when RSI is overbought (longs) or oversold (shorts)
| Parameter | Default | Range | Description |
|---|---|---|---|
| RSI Ceiling (Long) | 65 | min 50, max 95 | Maximum RSI to allow long entries (above = overbought exhaustion) |
| RSI Floor (Short) | 35 | min 5, max 50 | Minimum RSI to allow short entries (below = oversold exhaustion) |
| RSI Period | 14 | min 2, max 100 | RSI calculation period |
Volatility
Bollinger Bands
Price envelope based on standard deviation; band squeeze = breakout setup
| Parameter | Default | Range | Description |
|---|---|---|---|
| Period | 20 | min 5, max 200 | SMA period for middle band |
| Std Dev Multiplier | 2 | min 0.5, max 5, step 0.1 | Standard deviation multiplier for band width |
ATR (Average True Range)
Measures raw volatility; filters out low-volatility regimes
| Parameter | Default | Range | Description |
|---|---|---|---|
| Period | 14 | min 2, max 100 | ATR calculation period |
| Baseline Candles | 50 | min 10, max 200 | Number of candles for baseline ATR comparison |
| Min Volatility Ratio | 0.7 | min 0.1, max 2, step 0.1 | Minimum ratio of current ATR to baseline (below = low volatility regime) |
Keltner Channels
ATR-based envelope around EMA; breakout outside = high-conviction signal
| Parameter | Default | Range | Description |
|---|---|---|---|
| EMA Period | 20 | min 5, max 200 | EMA period for middle line |
| ATR Multiplier | 1.5 | min 0.5, max 5, step 0.1 | ATR multiplier for channel width |
| ATR Period | 10 | min 2, max 100 | Period for ATR calculation |
Min Move Guard
Blocks entry when expected TP move is too small relative to price
| Parameter | Default | Range | Description |
|---|---|---|---|
| Min Move % | 0.005 | min 0.001, max 0.05, step 0.001 | Minimum TP distance as fraction of entry price to allow entry |
| ATR Period | 14 | min 2, max 100 | Period for ATR calculation |
| ATR Multiplier | 1.5 | min 0.5, max 5, step 0.1 | ATR multiplier for stop distance |
| TP R:R Ratio | 2 | min 0.5, max 10, step 0.1 | Take profit reward-to-risk ratio |
ATR Regime Guard
Blocks entry in low-volatility regimes by comparing recent ATR to baseline
| Parameter | Default | Range | Description |
|---|---|---|---|
| ATR Period | 14 | min 2, max 100 | Period for ATR calculation |
| Baseline Candles | 50 | min 10, max 200 | Number of candles for baseline ATR comparison |
| Min Volatility Ratio | 0.7 | min 0.1, max 2, step 0.1 | Minimum ratio of recent ATR to baseline (below = low volatility) |
Volume / Market Structure
OBV (On-Balance Volume)
Cumulative volume direction; divergence from price = potential reversal
| Parameter | Default | Range | Description |
|---|---|---|---|
| OBV EMA Period | 21 | min 5, max 100 | EMA period applied to OBV for trend confirmation |
VWAP
Institutional benchmark price; price above/below VWAP as intraday bias filter
No configurable parameters.
CVD (Cumulative Volume Delta)
Tracks buy vs sell aggression; divergence exposes trapped liquidity
| Parameter | Default | Range | Description |
|---|---|---|---|
| Lookback | 20 | min 5, max 100 | Number of candles to compare CVD direction over |
Volume Spike
Z-score volume spike with directional body confirmation
| Parameter | Default | Range | Description |
|---|---|---|---|
| Baseline Candles | 50 | min 10, max 200 | Number of candles for volume baseline |
| Z-Score Threshold | 1.5 | min 0.5, max 5, step 0.1 | Z-score required to trigger spike signal |
Liquidity Sweep
Wick pierces local high/low then closes back — sweep of resting liquidity
| Parameter | Default | Range | Description |
|---|---|---|---|
| Lookback | 14 | min 5, max 100 | Number of candles for local high/low detection |
Mean Reversion
Z-Score of Price
Measures standard deviations from rolling mean; classic stat-arb input
| Parameter | Default | Range | Description |
|---|---|---|---|
| Lookback Period | 50 | min 10, max 500 | Rolling window for mean and std dev calculation |
| Entry Threshold | 2 | min 0.5, max 5, step 0.1 | Z-score magnitude required to trigger entry signal |
| Exit Threshold | 0.5 | min 0, max 2, step 0.1 | Z-score magnitude below which to signal exit (mean reversion) |
RSI Divergence
Price/RSI divergence detection; leading reversal signal
| Parameter | Default | Range | Description |
|---|---|---|---|
| RSI Period | 14 | min 2, max 100 | Period for RSI calculation |
| Oversold Level | 30 | min 5, max 49 | RSI level below which regular bullish divergence is valid |
| Overbought Level | 70 | min 51, max 95 | RSI level above which regular bearish divergence is valid |
| Divergence Lookback | 5 | min 2, max 50 | Candles per window for comparing price/RSI extremes |
Risk / Execution
Hard Stop Loss
ATR-based hard stop loss
| Parameter | Default | Range | Description |
|---|---|---|---|
| ATR Period | 14 | min 2, max 100 | Period for ATR calculation |
| ATR Multiplier | 2 | min 0.5, max 5, step 0.1 | Stop-loss distance as multiple of ATR |
Take Profit
R:R ratio-based take profit
| Parameter | Default | Range | Description |
|---|---|---|---|
| ATR Period | 14 | min 2, max 100 | Period for ATR calculation |
| ATR Multiplier | 2 | min 0.5, max 5, step 0.1 | Stop-loss distance as multiple of ATR (used for R:R base) |
| TP R:R Ratio | 3 | min 0.5, max 10, step 0.1 | Take profit as a multiple of the stop-loss distance |
Trailing Stop
ATR-based trailing stop with activation threshold
| Parameter | Default | Range | Description |
|---|---|---|---|
| Activation % | 0.008 | min 0.001, max 0.05, step 0.001 | Profit percentage to activate trailing stop |
| Trail ATR Multiple | 1.5 | min 0.5, max 5, step 0.1 | Trail distance as multiple of ATR |
| Min Trail % | 0.005 | min 0.001, max 0.05, step 0.001 | Minimum trailing distance as fraction of price |
Time Stop
Time-based exit with dynamic hold periods
| Parameter | Default | Range | Description |
|---|---|---|---|
| Base Duration (s) | 21600 | min 60, max 604800, step 60 | Base maximum hold time in seconds |
| Short Duration (s) | 28800 | min 60, max 604800, step 60 | Hold time for short positions (optional) |
| Extended Duration (s) | 36000 | min 60, max 604800, step 60 | Extended hold time for profitable trend-aligned positions |
| Early Kill Time (s) | 14400 | min 60, max 604800, step 60 | Kill losing positions after this time |
| Early Kill Loss % | 0.005 | min 0.001, max 0.05, step 0.001 | Loss threshold for early kill |
Signal Flip Exit
Exit when engine direction flips against position
No configurable parameters.