The Strategy Builder

The visual IF/THEN rule editor — the indicators and operators available, how conditions are evaluated, how actions are sized, what the validator refuses and why crossings only fire once.

5 min readUpdated 3 August 2026builder, custom-strategy, indicators, rules

The Strategy Builder at /trading-bot/builder lets a user compose a trading strategy out of IF/THEN rules without writing code. Saving produces a marketplace strategy of type CUSTOM, stored as a private draft. From there it can be deployed as the author's own bot, or submitted to the marketplace for review.

A newly saved strategy is DRAFT and PRIVATE. Nothing reaches the public marketplace without passing the admin approval queue — free strategies included. Price is never a shortcut past the queue.

Anatomy of a strategy

Strategy settings. The trading pair the strategy was designed against, and the timeframe every indicator is computed on (1m, 5m, 15m, 1h, 4h, 1d). The pair is saved as the listing's recommended market, so a buyer can see what it expects and deployment can preselect the right one.

Rules. One or more named rules. Each combines its conditions with AND (all must hold) or OR (any one), then runs its actions.

Risk management. Stop loss, take profit and max position size, carried with the strategy so a deployed bot inherits a sensible envelope.

Conditions

A condition compares an indicator against a number, a percentage, or a second indicator.

Indicators

Category Indicator Reads
Momentum RSI Relative Strength Index, period 14
Momentum MACD The MACD line, 12 / 26 / 9
Momentum MACD_SIGNAL The MACD signal line
Momentum MACD_HISTOGRAM MACD minus its signal
Trend SMA Simple moving average, period 20
Trend EMA Exponential moving average, period 20
Volatility BB_UPPER Bollinger upper band, period 20, 2 standard deviations
Volatility BB_MIDDLE Bollinger middle band
Volatility BB_LOWER Bollinger lower band
Price PRICE The current market price
Volume VOLUME Candle volume

Periods are not part of the builder's condition shape — the conventional defaults above are used, matching the INDICATOR strategy's published schema. An indicator with too little history to compute reads as unavailable.

Operators

> · < · >= · <= · == for comparison, plus CROSSES_ABOVE and CROSSES_BELOW.

A "crosses above" implemented as a > b is true on every bar while a sits above b — bound to a BUY, that fires until the concurrency cap is hit and the user is left holding a stack of entries they did not intend.

Crossings are evaluated against the previous closed bar: CROSSES_ABOVE is true only when the previous reading was at or below and the current one is above. The in-progress candle is excluded from every evaluation, so a crossing fires once, on the bar where it actually happened.

If the previous bar is unavailable the operator reports false, never degrading to a plain comparison.

== on indicator values is compared within a small relative epsilon, because floating-point indicator equality is never exact.

Value types

Type Compares against
NUMBER A literal — RSI < 30
INDICATOR A second indicator — EMA crosses above SMA. One must be selected
PERCENT A percentage of the current price — the only reading that works for both price and indicator comparisons

These gates decide whether to spend money. If either side of a comparison cannot be read — not enough candle history, a price feed outage — the condition evaluates to false and the rule does not fire. Failing open would mean trading on data that does not exist.

Actions

Field Options Notes
type BUY · SELL · CLOSE_POSITION SELL and CLOSE_POSITION are exits
amountType PERCENT · FIXED A share of capital still available, or a quote-denominated notional
amount number Must be positive, except on CLOSE_POSITION
orderType MARKET · LIMIT A LIMIT action needs a limit price
limitPrice number Required when orderType is LIMIT

An exit action emits a sell for the whole position — the engine expands it into the sum of every open buy. An entry sized as PERCENT takes that share of the capital the bot may still deploy; FIXED is a flat quote figure. Both are converted to a base quantity at the current price, and the risk manager then applies the bot's own limits on top.

How the rule set is evaluated

Rules run in order, and the first match wins — matching the builder's top-to-bottom presentation, so what the user sees is the precedence they get.

Two guards sit between a matched rule and a signal:

  • An exit is skipped when the bot holds no position. A sell with no inventory can only be rejected by the executor.
  • A rule whose conditions list is empty can never match. An empty AND is mathematically true, which would make an unfed logic gate pass unconditionally — so an empty set is explicitly treated as no match.

Only the first action of a matched rule is executed.

What the validator refuses

Validation runs when the strategy is saved and again when a bot is created from it. The messages name the exact rule and item, and they are literal:

The config is neither the builder's rule format nor the legacy node graph. This normally means the config was hand-written or came from an external tool.

A rule with an empty condition list is dead weight. Add a condition or delete the rule.

The conditions may be perfect; without an action nothing happens when they match.

The comparison was left unselected in the editor.

valueType is INDICATOR but secondIndicator is empty.

valueType is NUMBER or PERCENT and the value is blank or not a number.

Entry sizes must be greater than zero. An entry sized at zero would be refused by the risk manager on every tick forever. CLOSE_POSITION is exempt — it always means the whole position.

orderType is LIMIT and limitPrice is missing or unparseable.

Deploying a strategy

A saved strategy is deployed like any other: create a bot of type CUSTOM from the Algo panel, or use the marketplace's deploy flow, which carries the strategy's config across.

Create a strategy — this is the builder's Save
Update one; a config change on an approved listing sends it back for re-review
Deploy a bot from a strategy you own or purchased

Creating and editing a private strategy is deliberately not gated by the marketplace kill switch. An operator pausing sales during an incident would otherwise silently break Save in the builder, and the toast would tell a user who is not selling anything that the marketplace is disabled.

Publishing, repricing a public listing, submitting for review, purchasing and reviewing are gated.

What the chart draws

A CUSTOM bot's terminal draws the price levels its rules pin themselves to — every PRICE condition with a literal value, and every resting limit price — each labelled with the rule's own name and the direction it acts in. Three rules firing near the same price render as three labelled lines rather than one ambiguous smear.

Next