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.
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
ANDis 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.
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
- Strategy reference — how
CUSTOMsits beside the four fixed families - Marketplace — listing, review and the fee split
- Running bots — what happens once it is deployed