New botCreate a trading bot
Set up an automated bot in under a minute. Start in paper mode to test, switch to live when ready.
The name is just a label. Mode decides whether the bot uses real exchange orders.
The exchange, trading pair, and candle timeframe the bot will use for analysis.
Signal bots react to indicator-driven buy/sell signals. Grid bots place a ladder of buy/sell limit orders inside a price range and profit from oscillations.
These set sensible defaults for indicator periods, sensitivity, stop loss, and take profit. Fine-tune them later in the indicator section.
Loading strategies…
Decide how much the bot is allowed to trade per signal.
Customize sizing — sizing mode, allocation %, leverage, margin, position side
Default sizing uses the order quantity above. Open this section if you want to size positions as a percent of equity, set a per-trade risk budget, change leverage, or pick a margin mode for futures.
Skip this section and the bot uses the defaults from the preset above. Open it only if you want to tune individual indicators or edit the raw JSON payload.
Advanced — Indicator settings
Override individual indicator periods, weights, and stop/take-profit levels. Most users do not need to touch these.
Advanced — Raw JSON payload
Edit the full create-bot request directly. The JSON below is sent as-is to /api/bots when its content differs from what the form would produce. Reference docs follow below.
This editor mirrors the request body that the platform POSTs to /api/bots. Anything you write here overrides the form fields above when the JSON differs from what the form would build. Use Load full example for a complete reference, Load empty template to see every supported key with no values, or Sync from form to capture your current form state.
Field reference (all supported keys)
Minimal payload example
The smallest valid request. Defaults handle the rest — paper trading, balanced strategy, fixed-quantity sizing, EMA/MACD/RSI/Bollinger/Ichimoku/VWAP enabled.
{
"name": "My BTC bot",
"broker": "binance_spot",
"symbol": "BTCUSDT",
"quantity": "0.001"
}Usage notes
- Endpoint: POST /api/bots with Content-Type: application/json.
- Only name, broker, symbol, and quantity are required. Everything else has sane defaults.
- Any optional field can be omitted or set to null. Omitted fields fall back to platform defaults.
- Numeric fields like sensitivity, threshold, and stop/take-profit accept either a JSON number or a numeric string ('0.05'). Periods (ema_short_period, etc.) must be integers.
- Set simulation_mode = true for paper trading. With simulation_mode = false you must provide credential_id or inline api_key + secret_key (and passphrase on Coinbase).
Required fields
name(string) — Display name shown on your dashboard.broker(string) — Exchange slug (e.g. binance_spot, coinbase, kraken, onchain).symbol(string) — Trading pair the bot will analyse and trade (e.g. BTCUSDT).quantity(number) — Base order size used by fixed-quantity sizing and as fallback otherwise.
Market & flags
timeframe(string) — Candle interval used for analysis (e.g. 1m, 5m, 1h).watchlist(array<string>) — Optional extra symbols to monitor. Used together with only_best_signal.chain(string) — EVM chain slug for on-chain bots. Required when broker is "onchain".simulation_mode(boolean) — Paper-trading flag. true = no real orders, false = live trading.only_best_signal(boolean) — If true, the bot only trades the strongest setup across symbol + watchlist.is_minimal(boolean) — If true, runs a reduced indicator set to save resources.
Position sizing
position_sizing_mode(string) — One of fixed_quantity, percent_of_equity, risk_per_trade.balance_allocation_pct(number) — Decimal fraction of available balance per trade. Used by percent_of_equity.risk_per_trade_pct(number) — Fraction of equity at risk per trade. Used by risk_per_trade.leverage(integer) — Futures leverage. 1 for spot.margin_type(string) — Futures margin: "isolated" or "cross".position_side(string) — "long", "short", or omit for broker default.
Signal sensitivity
sensitivity_buy(number) — Multiplier on bullish signal strength. Higher = more eager to enter.sensitivity_sell(number) — Multiplier on bearish signal strength. Higher = more eager to exit.threshold(number) — Minimum aggregate signal strength required to act.selling_exponent(number) — Power applied to selling-side aggregate score before threshold.
Indicator periods & weights
ema_short_period(integer) — Short EMA window (candles).ema_long_period(integer) — Long EMA window (candles).bollinger_period(integer) — Bollinger Bands lookback (candles).signal_period(integer) — MACD signal-line EMA period (candles).tenkan_period(integer) — Ichimoku Tenkan-sen period.kijun_period(integer) — Ichimoku Kijun-sen period.senkou_span_b_period(integer) — Ichimoku Senkou Span B period.chikou_span_period(integer) — Ichimoku Chikou Span period.ema_exponent(number) — Weight applied to EMA score in the aggregate signal.bollinger_exponent(number) — Weight applied to Bollinger score.macd_exponent(number) — Weight applied to MACD score.rsi_exponent(number) — Weight applied to RSI score.vwap_exponent(number) — Weight applied to VWAP score.ichimoku_exponent(number) — Weight applied to Ichimoku score.indicator_config(object) — Optional fine-grained per-indicator overrides. Free-form object.
Stop loss & take profit
stop_loss_partial(number) — First (partial) stop-loss distance as decimal fraction (0.05 = 5%).stop_loss_lower_half_average(number) — Lower-half-average stop-loss distance.stop_loss_last(number) — Final stop-loss distance.stop_loss_trailing_start(number) — Profit level at which trailing stop activates.stop_loss_trailing_end(number) — Trailing stop offset once active.take_profit_partial(number) — First take-profit distance.take_profit_lower_half_average(number) — Lower-half-average take-profit distance.take_profit_last(number) — Final take-profit distance.take_profit_trailing_start(number) — Profit level at which trailing take-profit activates.take_profit_trailing_end(number) — Trailing take-profit offset once active.
Credentials
credential_id(string) — ID of a previously stored exchange credential. Preferred over inline keys.api_key(string) — Inline API key. Use only when credential_id is not available.secret_key(string) — Inline API secret. Required alongside api_key.passphrase(string) — Required for Coinbase live trading.
Linking & ownership
strategy_id(string) — Optional saved-strategy id to clone from.org_id(string) — Optional organisation id; defaults to your personal account.
- Bot
- Unnamed bot
- Market
- No broker selected • -- • 1h
- Mode
- Paper trading
- Sizing
- Fixed quantity:
- Preset
- Swing • Balanced
- Credentials
- Paper mode: no exchange credentials needed.
Ready to launch