Bot Strategies
GoodAI bots are small, deterministic trading programs. Each one runs the exact same logic whether it's backtesting against history, running in demo (paper trading with real market prices), or trading live with your own exchange keys. There is no separate "live" code path that behaves differently from what you tested — what you backtest is what trades.
Same code, three modes. Every strategy is a single
tick()function with no hidden state or randomness. Because it's deterministic, a bot you validated in the backtester behaves identically in demo and live. A demo bug is a live bug, surfaced cheaply.
This page covers the four bot kinds that ship today — GRID, DCA, BTD, and COMBO — plus a note on Futures (in development) and the platform-wide risk envelope.
GRID
What it does. A grid bot divides a price range into evenly spaced levels and places resting limit orders at each one: buys below the current price, sells above it. When a buy fills, the bot immediately places a sell one level up; when a sell fills, it places a buy one level down. In a sideways, choppy market it pockets the spread between levels over and over.
When to use it. Best for range-bound markets — a pair oscillating inside a band with no strong trend. It profits from volatility within the range. Its weakness is a sustained breakout: if price runs above the top of your grid or below the bottom, the bot stops trading at that edge and is left holding (or having sold) at the boundary.
Configurable parameters
| Parameter | Meaning |
|---|---|
| Lower price | Bottom of the grid range. |
| Upper price | Top of the grid range (must be above the lower price). |
| Grid count | Number of price levels in the grid. Range 2–200. More levels = tighter spacing and more, smaller trades. |
| Order size | Quantity (in the base asset, e.g. BTC) placed at each level. |
| Spacing | arithmetic (equal price gaps) or geometric (equal percentage gaps). Defaults to arithmetic. Geometric tends to suit assets that move in percentage terms across a wide range. |
Backtester tip. If you run a GRID backtest without pinning the lower/upper price, the backtester auto-derives the range from the historical window (just below the lowest low to just above the highest high). For a live bot you should set the range deliberately.
DCA — Dollar-Cost Average (with safety orders)
What it does. A DCA bot opens a deal with a market base order, then ladders safety orders (additional limit buys) at progressively lower prices below your entry. Every time a buy fills, the bot recalculates the average entry price of the whole position and (re)places a single take-profit sell for the entire position at a fixed percentage above that average. When the take-profit fills, the deal closes and a new one can begin.
This is the classic "average down, then exit the whole bag on a bounce" approach. Each safety order lowers your average cost, so the price only has to recover modestly above your average — not back to your original entry — to hit take-profit.
When to use it. Good for assets you're willing to accumulate on dips and that tend to recover. It shines in volatile-but-mean-reverting conditions. The risk is a one-way decline that blows through all your safety orders — past that point the bot has spent its budget and simply waits for a recovery.
Configurable parameters
| Parameter | Meaning |
|---|---|
| Base order qty | Size of the opening market buy (base asset). |
| Safety order qty | Size of each safety buy (base asset). |
| Max safety orders | How many safety buys the ladder can place. Range 0–50. |
| Price step % | How far below your base entry each safety sits. Steps compound: safety 1 sits at −step%, safety 2 at −2×step%, and so on. |
| Take profit % | The whole position exits at average entry × (1 + takeProfit%). |
How the exit moves. The take-profit is always sized to the entire current position and re-priced after every buy. As safety orders fill and your average drops, the take-profit price drops with it.
BTD — Buy the Dip
What it does. BTD is an indicator-driven dip buyer. It keeps a rolling window of recent prices and computes a simple moving average (SMA). When the current price dips a configured percentage below that moving average, the bot opens a lot with a market buy and immediately places a take-profit sell for that lot at a fixed percentage above the buy price. Multiple lots can run at once, and each closes independently when its own take-profit fills, freeing a slot for the next dip.
When to use it. Suited to markets where pullbacks below a trend tend to bounce. Unlike DCA (which averages one position down a fixed ladder), BTD buys on a signal (price under its moving average) and manages each dip-buy as a separate lot with its own exit.
Configurable parameters
| Parameter | Meaning |
|---|---|
| Order qty | Base-asset size bought on each dip. |
| MA period | Length of the moving-average window, in ticks. Range 2–500. The bot won't trade until it has collected a full window. |
| Dip % | Buy trigger: fires when price ≤ SMA × (1 − dip%). |
| Take profit % | Each lot sells at buy price × (1 + takeProfit%). |
| Max lots | Maximum number of concurrent open lots. Range 1–50. New dips are ignored while you're at the cap. |
Warm-up period. Because BTD needs a full moving-average window before its signal means anything, expect no trades for the first MA-period ticks of a run.
COMBO — Grid inside a DCA position
What it does. A COMBO bot runs a GRID and a DCA strategy together on the same pair, at the same time. Each market event is handed to both sub-strategies and their orders are combined. The DCA side builds and manages a longer-term averaged position with a take-profit; the GRID side trades the range around it to harvest extra spread. The two never interfere — their orders are tracked separately under the hood.
When to use it. When you want a core accumulate-and-exit position (DCA) but also want to capture the chop while you hold it (GRID). It's the most complex kind and has the most knobs, so it's the one most worth validating in the backtester before going live.
Configurable parameters. COMBO takes a full GRID config and a full DCA config (every parameter listed in the GRID and DCA sections above), both pointed at the same symbol.
Futures (in development)
Futures/perpetuals bots are not yet live. Exchange adapters exist and perpetual symbols (e.g. BTC-USDT-PERP) are chartable and backtestable, but the leveraged futures bot — with leverage, position mode, and a liquidation-buffer guard — is still being built and verified before any mainnet rollout. Treat it as a preview, not a tradable strategy. The four kinds above (GRID, DCA, BTD, COMBO) are the ones you can run live today.
The risk envelope
Strategies decide what orders to send, but they don't get the final say on whether an order reaches the exchange. Every live order passes through the execution gateway, the only component that holds your decrypted API keys and the only thing that talks to the exchange. The gateway enforces controls that a strategy cannot override or disable, including:
- Custody-free by design. Your API keys are sealed with envelope encryption and only ever decrypted inside the gateway's memory — never logged, never exposed to strategy code. Withdrawal-enabled keys are rejected.
- Exposure gating. A bot can only open new exposure on a pair whose venue state allows it. If an operator closes a pair to new positions, new bots and new buys are refused regardless of strategy logic.
- Trial notional cap. During the sign-up trial a cumulative daily live-notional cap (currently $5,000/day) limits how much a new account can put at risk, as an abuse and blast-radius defence.
- Liveness watchdog. An always-on watchdog (independent of the bot scheduler) monitors every running bot's heartbeat and alarms if a bot goes silent, so a stuck or runaway bot is caught rather than left unattended.
Bottom line. Configure your strategy how you like — but the platform's hard limits sit outside the strategy and below it. A bot cannot place an order the gateway refuses.
See also
- Backtester — validate a strategy over historical data before you go live.
- Getting started — create a bot and promote it from demo to live.