okx/agent-skillsMIT1 file

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).

Specification
Skill ID
okx/agent-skills/okx-cex-bot
Publisher
okx
Repository
agent-skills
Installs
0
Files
1
License
MIT
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

okx/agent-skills/okx-cex-botInstalls these files
  • SKILL.md

What this skill tells the agent

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.

Preflight

Before running any command, follow `../_shared/preflight.md`. Use metadata.version from this file's frontmatter as the reference for Step 2.

Prerequisites

npm install -g @okx_ai/okx-trade-cli
okx config init   # select site -> follow browser OAuth flow
Security: NEVER accept credentials in chat. Guide users to okx config init for setup.

Credential & Profile Check

Run before every authenticated command. The auth method is detected during preflight Step 2 and remembered for the session.

Step A — Verify credentials

Run both commands — the apiKey field from okx auth status --json is the auth-binary's internal state and is always false regardless of whether ~/.okx/config.toml has an API-key profile. okx config show --json is the only authoritative source for API-key presence.

okx config show --json      # reveals API-key profiles (TOML config)
okx auth status --json      # reveals OAuth session state (auth-binary state)

Apply in this order — first match wins:

  • config show --json has any profile with a non-empty api_key field → API Key mode. Proceed to Step B.
  • No API-key profile AND auth status --json returns "status":"logged_in" → OAuth mode. Proceed to Step B.
  • No API-key profile AND "status":"pending" — login is in progress, wait for it to complete.
  • No API-key profile AND "status":"not_logged_in" — stop, load okx-cex-auth skill and follow login steps, wait for completion.

Step B — Confirm trading mode

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 choice → reuse if found
  3. Nothing found → ask: "Live (实盘) or Demo (模拟盘)?" — wait before proceeding

How to apply the mode depends on auth method (detected in Step A):

Auth methodLive (实盘)Demo (模拟盘)
API Key--profile <live-profile>--profile <demo-profile>
OAuth(no flag needed, live is default)--demo
  • API Key users: run okx config show --json to discover available profile names and their demo settings.
  • OAuth users: omit flags for live; add --demo for simulated trading.

After every command: append [mode: live] or [mode: demo]

Handling 401 Errors

Authentication error (error contains "401", "Session expired", or "Run okx auth login first"):

  1. Stop immediately
  2. Load okx-cex-auth skill and follow re-authentication steps
  3. Retry original command

Skill Routing

NeedSkill
Market data, prices, depthokx-cex-market
Account balance, positions, feesokx-cex-portfolio
Regular spot/swap/futures ordersokx-cex-trade
Grid / DCA bots`okx-cex-bot` (this skill)

Command Index

Grid Bot

CommandTypeDescription
okx bot grid createWRITECreate a grid bot (spot or contract)
okx bot grid amendWRITEAmend price range, grid count, or TP/SL of a running grid bot
okx bot grid stopWRITEStop a grid bot
okx bot grid positionsREADQuery open contract-grid positions (liquidation price, margin ratio, unrealized PnL)
okx bot grid liquidate-priceREADEstimate liquidation price for a contract-grid bot
okx bot grid close-positionWRITEClose remaining position after bot stopped with stopType=2
okx bot grid ordersREADList active or history grid bots
okx bot grid detailsREADGrid bot details + PnL
okx bot grid sub-ordersREADIndividual grid fills or pending orders

DCA Bot (Spot & Contract)

CommandTypeDescription
okx bot dca createWRITECreate a DCA (Martingale) bot (spot or contract)
okx bot dca stopWRITEStop a DCA bot (spot or contract)
okx bot dca ordersREADList active or history DCA bots (default: contract_dca)
okx bot dca detailsREADDCA bot details + PnL
okx bot dca sub-ordersREADDCA 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, amend, 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 amend → run bot grid details to confirm updated config
  • 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

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]
ParamRequiredDefaultDescription
--instIdYes-Instrument (e.g., BTC-USDT for spot, BTC-USDT-SWAP for USDT-M contract, BTC-USD-SWAP for coin-M contract)
--algoOrdTypeYes-grid (spot grid) or contract_grid (contract grid, including coin-margined)
--maxPxYes-Upper price boundary
--minPxYes-Lower price boundary
--gridNumYes-Grid levels (2–100)
--runTypeNo11=arithmetic spacing, 2=geometric spacing
--quoteSzCond.-USDT investment — spot grid only (provide quoteSz or baseSz)
--baseSzCond.-Base currency investment — spot grid only
--directionCond.-long, short, or neutral — required for contract grid
--leverCond.-Leverage (e.g., 5) — contract grid only
--szCond.-Investment margin in USDT (USDT-M) or coin (coin-M) — contract grid only
--basePos / --no-basePosNotrueOpen a base position at creation — contract grid only (ignored for neutral). Use --no-basePos to disable
--tpTriggerPxNo-Take-profit trigger price (mutually exclusive with --tpRatio)
--slTriggerPxNo-Stop-loss trigger price (mutually exclusive with --slRatio)
--tpRatioNo-Take-profit ratio — contract grid only (mutually exclusive with --tpTriggerPx)
--slRatioNo-Stop-loss ratio — contract grid only (mutually exclusive with --slTriggerPx)
--algoClOrdIdNo-Client-defined algo order ID (1-32 alphanumeric). Unique per user, enables idempotent creation

Grid Bot — Amend

okx bot grid amend --algoId <id> \
  [--maxPx <px> --minPx <px> --gridNum <n>] \
  [--instId <id>] \

More from okx

Use this skill in a project

Open any RiverX project, search the Skills panel for okx/agent-skills/okx-cex-bot, and install it in one click.

Use this skill