okx-cex-bot
Manage Grid bots (spot/contract/coin-margined) and DCA Martingale bots (Spot DCA 现货马丁 / Contract DCA 合约马丁) on OKX. Covers create, stop, amend, monitor P&L, TP/SL, margin/investment adjustment, and AI-recommended parameters. Requires API credentials. Not for regular orders (okx-cex-trade), market data (okx-cex-market), or account info (okx-cex-portfolio).
安装 / 下载方式
TotalClaw CLI推荐
totalclaw install skilldb:numpy0001~okx-cex-botcURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/skilldb%3Anumpy0001~okx-cex-bot/file -o okx-cex-bot.mdGit 仓库获取源码
git clone https://github.com/openclaw/skills/commit/64c24499fd141f5ad62f10946aeb4a89f52f71c6# OKX CEX Bot Trading
Grid and DCA (Spot & Contract Martingale) bot management on OKX. All bots are **native OKX server-side** — they run on OKX and do not require a local process.
## Prerequisites
```bash
npm install -g @okx_ai/okx-trade-cli
```
Check credentials, then set up if missing:
```bash
okx config show # shows configured profiles (api_key shows last 4 chars)
okx config init # interactive wizard if not configured
```
> **Security**: NEVER accept API credentials in chat. Guide users to `okx config init` or edit `~/.okx/config.toml` directly.
## Credential & Profile Check
**Run before every authenticated command.**
### Step A — Verify credentials
```bash
okx config show
```
If no configuration → stop, guide user to `okx config init`, wait for completion.
### Step B — Determine profile (required)
| `--profile` | Mode | Funds |
|---|---|---|
| `live` | 实盘 | Real money |
| `demo` | 模拟盘 | Simulated, safe for testing |
Resolution:
1. User intent is clear ("real"/"实盘"/"live" → `live`; "test"/"模拟"/"demo" → `demo`) → use it, inform user
2. No explicit declaration → check conversation context for previous profile → use it if found
3. Nothing found → ask: "Live (实盘) or Demo (模拟盘)?" — wait before proceeding
**After every command**: append `[profile: live]` or `[profile: demo]`
### Handling 401 Errors
Stop immediately. Guide user to update `~/.okx/config.toml` with their editor. Verify with `okx config show` before retrying.
## Skill Routing
| Need | Skill |
|---|---|
| Market data, prices, depth | `okx-cex-market` |
| Account balance, positions, fees | `okx-cex-portfolio` |
| Regular spot/swap/futures orders | `okx-cex-trade` |
| **Grid / DCA bots** | **`okx-cex-bot` (this skill)** |
## Command Index
### Grid Bot
| Command | Type | Description |
|---|---|---|
| `okx bot grid create` | WRITE | Create a grid bot (spot or contract) |
| `okx bot grid stop` | WRITE | Stop a grid bot |
| `okx bot grid orders` | READ | List active or history grid bots |
| `okx bot grid details` | READ | Grid bot details + PnL |
| `okx bot grid sub-orders` | READ | Individual grid fills or pending orders |
### DCA Bot (Spot & Contract)
| Command | Type | Description |
|---|---|---|
| `okx bot dca create` | WRITE | Create a DCA (Martingale) bot (spot or contract) |
| `okx bot dca stop` | WRITE | Stop a DCA bot (spot or contract) |
| `okx bot dca orders` | READ | List active or history DCA bots (default: contract_dca) |
| `okx bot dca details` | READ | DCA bot details + PnL |
| `okx bot dca sub-orders` | READ | DCA cycles and orders within a cycle |
## Operation Flow
### Step 1 — Identify bot type and action
Parse user request → determine module (Grid / DCA) and action (create / stop / list / details).
### Step 2 — Execute
**READ commands** (orders, details, sub-orders): run immediately after profile confirmation.
**WRITE commands** (create, stop): confirm key parameters with user once before executing.
### Step 3 — Verify after writes
- After create → run the corresponding `orders` command to confirm active
- After stop → run `orders --history` to confirm stopped
## Key Rules
- **Never auto-transfer funds.** If balance is insufficient for bot creation, report the shortfall (current available vs required) and ask the user how to proceed: (1) transfer funds manually, (2) reduce size, or (3) cancel.
- **`algoId`** is the bot's algo order ID (from create or list output). It is NOT a normal `ordId`. Never fabricate — always obtain from a prior command.
- **`algoOrdType`** for grid must match the bot's actual type. Always use the value from `bot grid orders` — do not infer from user description alone. Mismatch causes error `50016`.
- When operating on existing bots, **always list first** to get correct IDs, unless the user provides them explicitly.
- **TP/SL constraints**: `tpTriggerPx`/`tpRatio` and `slTriggerPx`/`slRatio` are mutually exclusive pairs.
## CLI Command Reference
### Grid Bot — Create
```bash
okx bot grid create --instId <id> --algoOrdType <type> \
--maxPx <px> --minPx <px> --gridNum <n> \
[--runType <1|2>] \
[--quoteSz <n>] [--baseSz <n>] \
[--direction <long|short|neutral>] [--lever <n>] [--sz <n>] \
[--basePos] [--no-basePos] \
[--tpTriggerPx <px>] [--slTriggerPx <px>] [--tpRatio <ratio>] [--slRatio <ratio>] \
[--algoClOrdId <id>] [--json]
```
| Param | Required | Default | Description |
|---|---|---|---|
| `--instId` | Yes | - | Instrument (e.g., `BTC-USDT` for spot, `BTC-USDT-SWAP` for USDT-M contract, `BTC-USD-SWAP` for coin-M contract) |
| `--algoOrdType` | Yes | - | `grid` (spot grid) or `contract_grid` (contract grid, including coin-margined) |
| `--maxPx` | Yes | - | Upper price boundary |
| `--minPx` | Yes | - | Lower price boundary |
| `--gridNum` | Yes | - | Grid levels (2–100) |
| `--runType` | No | `1` | `1`=arithmetic spacing, `2`=geometric spacing |
| `--quoteSz` | Cond. | - | USDT investment — spot grid only (provide `quoteSz` or `baseSz`) |
| `--baseSz` | Cond. | - | Base currency investment — spot grid only |
| `--direction` | Cond. | - | `long`, `short`, or `neutral` — required for contract grid |
| `--lever` | Cond. | - | Leverage (e.g., `5`) — contract grid only |
| `--sz` | Cond. | - | Investment margin in USDT (USDT-M) or coin (coin-M) — contract grid only |
| `--basePos` / `--no-basePos` | No | `true` | Open a base position at creation — contract grid only (ignored for neutral). Use `--no-basePos` to disable |
| `--tpTriggerPx` | No | - | Take-profit trigger price (mutually exclusive with `--tpRatio`) |
| `--slTriggerPx` | No | - | Stop-loss trigger price (mutually exclusive with `--slRatio`) |
| `--tpRatio` | No | - | Take-profit ratio — contract grid only (mutually exclusive with `--tpTriggerPx`) |
| `--slRatio` | No | - | Stop-loss ratio — contract grid only (mutually exclusive with `--slTriggerPx`) |
| `--algoClOrdId` | No | - | Client-defined algo order ID (1-32 alphanumeric). Unique per user, enables idempotent creation |
---
### Grid Bot — Stop
```bash
okx bot grid stop --algoId <id> --algoOrdType <type> --instId <id> \
[--stopType <1|2|3|5|6>] [--json]
```
> **`--algoId`** and **`--algoOrdType`** must come from `bot grid orders` output. The `algoOrdType` must match the bot's actual type — do not guess.
| `--stopType` | Behavior |
|---|---|
| `1` | Stop + sell/close all positions at market (default) |
| `2` | Stop + keep current assets as-is |
| `3` | Stop + close at limit prices |
| `5` | Stop + partial close |
| `6` | Stop without selling (smart arbitrage) |
---
### Grid Bot — List Orders
```bash
okx bot grid orders --algoOrdType <type> [--instId <id>] [--algoId <id>] [--history] [--json]
```
| Param | Required | Default | Description |
|---|---|---|---|
| `--algoOrdType` | Yes | - | `grid` (spot), `contract_grid` (contract), or `moon_grid` (moon) |
| `--instId` | No | - | Filter by instrument |
| `--algoId` | No | - | Filter by algo order ID. NOT a normal trade order ID |
| `--history` | No | false | Show completed/stopped bots instead of active |
---
### Grid Bot — Details
```bash
okx bot grid details --algoOrdType <type> --algoId <id> [--json]
```
Returns: bot config, current PnL (`pnlRatio`), grid range, number of grids, state, position info.
---
### Grid Bot — Sub-Orders
```bash
okx bot grid sub-orders --algoOrdType <type> --algoId <id> [--live] [--json]
```
| Flag | Effect |
|---|---|
| *(default)* | Filled sub-orders (executed grid trades) |
| `--live` | Pending grid orders currently on the book |
---
### DCA Bot — Create (Spot & Contract)
```bash
okx bot dca create --algoOrdType <spot_dca|contract_dca> --instId <id> --direction <long|short> \
--initOrdAmt <n> --maxSafetyOrds <n> --tpPct <ratio> \
[--lever <n>] [--safetyOrdAmt <n>] [--pxSteps <ratio>] [--pxStepsMult <mult>] [--volMult <mult>] \
[--slPct <ratio>] [--slMode <limit|market>] [--allowReinvest] \
[--triggerStrategy <instant|price|rsi>] [--triggerPx <price>] \
[--trig