okx-cex-trade▌
okx/agent-skills · updated Apr 8, 2026
Spot, perpetual swap, delivery futures, and options order management on OKX exchange.
- ›Place, cancel, amend, and monitor orders across four asset classes: spot, perpetual swap, delivery futures, and options (calls/puts with Greeks and IV data)
- ›Set take-profit, stop-loss, and trailing stops; manage leverage and positions; query option chains and implied volatility
- ›Requires OKX API credentials configured locally; supports both live (实盘) and demo (模拟盘) trading modes via --profile flag
OKX CEX Trading CLI
Spot, perpetual swap, delivery futures, and options order management on OKX exchange. Place, cancel, amend, and monitor orders; query option chains and Greeks; set take-profit/stop-loss and trailing stops; manage leverage and positions. Requires API credentials.
Preflight
Before running any command, follow ../_shared/preflight.md.
Use metadata.version from this file's frontmatter as the reference for Step 2.
Prerequisites
- Install
okxCLI:npm install -g @okx_ai/okx-trade-cli - Configure credentials:
Or set environment variables:okx config initexport OKX_API_KEY=your_key export OKX_SECRET_KEY=your_secret export OKX_PASSPHRASE=your_passphrase - Test with demo mode (simulated trading, no real funds):
okx --profile demo spot orders
Credential & Profile Check
Run this check before any authenticated command.
Step A — Verify credentials
okx config show # verify configuration status (output is masked)
- If the command returns an error or shows no configuration: stop all operations, guide the user to run
okx config init, and wait for setup to complete before retrying. - If credentials are configured: proceed to Step B.
Step B — Confirm profile (required)
--profile is required for all authenticated commands. Never add a profile implicitly.
| Value | Mode | Funds |
|---|---|---|
live |
实盘 | Real funds |
demo |
模拟盘 | Simulated funds |
Resolution rules:
- Current message intent is clear (e.g. "real" / "实盘" / "live" →
live; "test" / "模拟" / "demo" →demo) → use it and inform the user:"Using --profile live (实盘)"or"Using --profile demo (模拟盘)" - Current message has no explicit declaration → check conversation context for a previous profile:
- Found → use it, inform user:
"Continuing with --profile live (实盘) from earlier" - Not found → ask:
"Live (实盘) or Demo (模拟盘)?"— wait for answer before proceeding
- Found → use it, inform user:
Handling 401 Authentication Errors
If any command returns a 401 / authentication error:
- Stop immediately — do not retry the same command
- Inform the user: "Authentication failed (401). Your API credentials may be invalid or expired."
- Guide the user to update credentials by editing the file directly with their local editor:
Update the fields~/.okx/config.tomlapi_key,secret_key,passphraseunder the relevant profile. Do NOT paste the new credentials into chat. - After the user confirms the file is updated, run
okx config showto verify (output is masked) - Only then retry the original operation
Demo vs Live Mode
Profile is the single control for 实盘/模拟盘 switching:
--profile |
Mode | Funds |
|---|---|---|
live |
实盘 | Real money — irreversible |
demo |
模拟盘 | Simulated — no real funds |
Rules:
--profileis required on every authenticated command — determined in "Credential & Profile Check" Step B- Every response after a command must append:
[profile: live]or[profile: demo] - Do not use the
--demoflag for mode switching — use--profileinstead
Skill Routing
- For market data (prices, charts, depth, funding rates) → use
okx-cex-market - For account balance, P&L, positions, fees, transfers → use
okx-cex-portfolio - For regular spot/swap/futures/options/algo orders → use
okx-cex-trade(this skill) - For grid and DCA trading bots → use
okx-cex-bot
Sz Handling for Derivatives
⚠ CRITICAL: Always verify contract face value before placing orders
Before placing any SWAP/FUTURES/OPTION order, call market_get_instruments to get ctVal (contract face value). Do NOT assume contract sizes — they vary by instrument (e.g. ETH-USDT-SWAP = 0.1 ETH/contract, BTC-USDT-SWAP = 0.01 BTC/contract).
Use ctVal to:
- Calculate the correct number of contracts from user's intended position size
- Verify margin requirements before submitting the order
- Show the user the actual position value:
sz × ctVal × price
SWAP and FUTURES orders
When user specifies a USDT amount (e.g. "200U", "500 USDT", "$1000"):
→ Use --tgtCcy quote_ccy and pass the amount directly as --sz. The API converts to contracts automatically.
When user specifies contracts (e.g. "2 张", "5 contracts"):
→ First verify ctVal via market_get_instruments, then use --sz with the contract count. Confirm with user: "X contracts = X × ctVal underlying, total value ≈ $Y".
When user gives a plain number with no unit (for swap/futures): → Ambiguous — ask before proceeding: "您输入的 X 是合约张数还是 USDT 金额?" Wait for the user's answer before continuing.
⚠ Inverse contracts (*-USD-SWAP, *-USD-YYMMDD): tgtCcy=quote_ccy also works (note: quote_ccy = USD, not USDT, for inverse instruments). Always warn: "This is an inverse contract. Margin and P&L are settled in BTC, not USDT."
Option orders
Options do NOT support tgtCcy. When the user specifies a USDT amount for options, you must convert manually. For the full conversion formula and validation steps, read {baseDir}/references/options-commands.md.
Quickstart
# Market buy 0.01 BTC (spot)
okx spot place --instId BTC-USDT --side buy --ordType market --sz 0.01
# Buy $10 worth of SOL (spot, USDT amount)
okx spot place --instId SOL-USDT --side buy --ordType market --sz 10 --tgtCcy quote_ccy
# Limit sell 0.01 BTC at $100,000 (spot)
okx spot place --instId BTC-USDT --side sell --ordType limit --sz 0.01 --px 100000
# Long 1 contract BTC perp (cross margin)
okx swap place --instId BTC-USDT-SWAP --side buy --ordType market --sz 1 \
--tdMode cross --posSide long
# Long 1000 USDT worth of BTC perp (auto-convert to contracts)
okx swap place --instId BTC-USDT-SWAP --side buy --ordType market --sz 1000 \
--tgtCcy quote_ccy --tdMode cross --posSide long
# Long 1 contract with attached TP/SL (one step)
okx swap place --instId BTC-USDT-SWAP --side buy --ordType market --sz 1 \
--tdMode cross --posSide long \
--tpTriggerPx 105000 --tpOrdPx -1 --slTriggerPx 88000 --slOrdPx -1
# Close BTC perp long position entirely at market
okx swap close --instId BTC-USDT-SWAP --mgnMode cross --posSide long
# Set 10x leverage on BTC perp (cross)
okx swap leverage --instId BTC-USDT-SWAP --lever 10 --mgnMode cross
# Set TP/SL on a spot BTC position
okx spot algo place --instId BTC-USDT --side sell --ordType oco --sz 0.01 \
--tpTriggerPx 105000 --tpOrdPx -1 \
--slTriggerPx 88000 --slOrdPx -1
# Place trailing stop on BTC perp long (callback 2%)
okx swap algo trail --instId BTC-USDT-SWAP --side sell --sz 1 \
--tdMode cross --posSide long --callbackRatio 0.02
# View open spot orders
okx spot orders
# View open swap positions
okx swap positions
# Cancel a spot order
okx spot cancel --instId BTC-USDT --ordId <ordId>
Command Index
Spot Orders (11 commands)
| # | Command | Type | Description |
|---|---|---|---|
| 1 | okx spot place |
WRITE | Place spot order (market/limit/post_only/fok/ioc) |
| 2 | okx spot cancel |
WRITE | Cancel spot order |
| 3 | okx spot amend |
WRITE | Amend spot order price or size |
| 4 | okx spot algo place |
WRITE | Place spot TP/SL algo order |
| 5 | okx spot algo amend |
WRITE | Amend spot TP/SL levels |
| 6 | okx spot algo cancel |
WRITE | Cancel spot algo order |
| 7 | okx spot algo trail |
WRITE | Place spot trailing stop order |
| 8 | okx spot orders |
READ | List open or historical spot orders |
| 9 | okx spot get |
READ | Single spot order details |
| 10 | okx spot fills |
READ | Spot trade fill history |
| 11 | okx spot algo orders |
READ | List spot TP/SL algo orders |
For full command syntax, parameter tables, and edge cases, read {baseDir}/references/spot-commands.md.
Swap / Perpetual Orders (15 commands)
| # | Command | Type | Description |
|---|---|---|---|
| 12 | okx swap place |
WRITE | Place perpetual swap order |
| 13 | okx swap cancel |
WRITE | Cancel swap order |
| 14 | okx swap amend |
WRITE | Amend swap order price or size |
| 15 | okx swap close |
WRITE | Close entire position at market |
| 16 | okx swap leverage |
WRITE | Set leverage for an instrument |
| 17 | okx swap algo place |
WRITE | Place swap TP/SL algo order |
| 18 | okx swap algo trail |
WRITE | Place swap trailing stop order |
| 19 | okx swap algo amend |
WRITE | Amend swap algo order |
| 20 | okx swap algo cancel |
WRITE | Cancel swap algo order |
| 21 | okx swap positions |
READ | Open perpetual swap positions |
| 22 | okx swap orders |
READ | List open or historical swap orders |
| 23 | okx swap get |
READ | Single swap order details |
| 24 | okx swap fills |
READ | Swap trade fill history |
| 25 | okx swap get-leverage |
READ | Current leverage settings |
| 26 | okx swap algo orders |
READ | List swap algo orders |
For full command syntax, parameter tables, and edge cases, read {baseDir}/references/swap-commands.md.
Futures / Delivery Orders (15 commands)
| # | Command | Type | Description |
|---|---|---|---|
| 27 | okx futures place |
WRITE | Place delivery futures order |
| 28 | okx futures cancel |
WRITE | Cancel delivery futures order |
| 29 | okx futures amend |
WRITE | Amend delivery futures order price or size |
| 30 | okx futures close |
WRITE | Close entire futures position at market |
| 31 | okx futures leverage |
WRITE | Set leverage for a futures instrument |
| 32 | okx futures algo place |
WRITE | Place futures TP/SL algo order |
| 33 | okx futures algo trail |
WRITE | Place futures trailing stop order |
| 34 | okx futures algo amend |
WRITE | Amend futures algo order |
| 35 | okx futures algo cancel |
WRITE | Cancel futures algo order |
| 36 | okx futures orders |
READ | List delivery futures orders |
| 37 | okx futures positions |
READ | Open delivery futures positions |
| 38 | okx futures fills |
READ | Delivery futures fill history |
| 39 | okx futures get |
READ | Single delivery futures order details |
| 40 | okx futures get-leverage |
READ | Current futures leverage settings |
| 41 | okx futures algo orders |
READ | List futures algo orders |
For full command syntax, parameter tables, and edge cases, read {baseDir}/references/futures-commands.md.
Options Orders (10 commands)
| # | Command | Type | Description |
|---|---|---|---|
| 42 | okx option instruments |
READ | Option chain: list available contracts for an underlying |
| 43 | okx option greeks |
READ | Implied volatility + Greeks (delta/gamma/theta/vega) by underlying |
| 44 | okx option place |
WRITE | Place option order (call or put, buyer or seller) |
| 45 | okx option cancel |
WRITE | Cancel unfilled option order |
| 46 | okx option amend |
WRITE | Amend option order price or size |
| 47 | okx option batch-cancel |
WRITE | Batch cancel up to 20 option orders |
| 48 | okx option orders |
READ | List option orders (live / history / archive) |
| 49 | okx option get |
READ | Single option order details |
| 50 | okx option positions |
READ | Open option positions with live Greeks |
| 51 | okx option fills |
READ | Option trade fill history |
For full command syntax, USDT-to-contracts conversion formula, tdMode rules, and edge cases, read {baseDir}/references/options-commands.md.
Operation Flow
Step 0 — Credential & Profile Check
Before any authenticated command: see Credential & Profile Check. Determine profile (live or demo) before executing.
After every command result: append [profile: live] or [profile: demo].
Step 1 — Identify instrument type and action
Spot (instId format: BTC-USDT):
- Place/cancel/amend order →
okx spot place/cancel/amend - TP/SL conditional →
okx spot algo place/amend/cancel - Trailing stop →
okx spot algo trail - Query →
okx spot orders/get/fills/algo orders
Swap/Perpetual (instId format: BTC-USDT-SWAP):
- Place/cancel/amend order →
okx swap place/cancel/amend - Close position →
okx swap close - Leverage →
okx swap leverage/okx swap get-leverage - TP/SL conditional →
okx swap algo place/amend/cancel - Trailing stop →
okx swap algo trail - Query →
okx swap positions/orders/get/fills/get-leverage/algo orders
Futures/Delivery (instId format: BTC-USDT-<YYMMDD>):
- Place/cancel/amend order →
okx futures place/cancel/amend - Close position →
okx futures close - Leverage →
okx futures leverage/okx futures get-leverage - TP/SL conditional →
okx futures algo place/amend/cancel - Trailing stop →
okx futures algo trail - Query →
okx futures orders/positions/fills/get/get-leverage/algo orders
Options (instId format: BTC-USD-250328-95000-C or ...-P):
- Step 1 (required): find valid instId →
okx option instruments --uly BTC-USD - Step 2 (recommended): check IV and Greeks →
okx option greeks --uly BTC-USD - Place/cancel/amend →
okx option place/cancel/amend - Batch cancel →
okx option batch-cancel --orders '[...]' - Query →
okx option orders/get/positions/fills - tdMode:
cashfor buyers;crossorisolatedfor sellers
For cross-skill workflows and step-by-step examples, read {baseDir}/references/workflows.md.
Step 2 — Confirm profile, then confirm write parameters
Read commands (orders, positions, fills, get, get-leverage, algo orders): run immediately.
--historyflag: defaults to active/open; use--historyonly if user explicitly asks for history--ordTypefor algo:conditional= single TP or SL;oco= both TP and SL together--tdModefor swap/futures:crossorisolated; spot always usescash(set automatically)--posSidefor hedge mode:longorshort; omit in net mode
Write commands (place, cancel, amend, close, leverage, algo): confirm the key order details once before executing:
- Spot place: confirm
--instId,--side,--ordType,--sz(and--tgtCcy quote_ccyif quote-currency amount) - Swap/Futures place: confirm
--instId,--side,--sz,--tdMode(and--tgtCcy quote_ccyif quote-currency amount) - Option place: Options do NOT support
--tgtCcy— manually convert USDT to contracts using instrument metadata; confirm--instId,--side,--sz,--tdMode; do NOT attach TP/SL - Swap/Futures close: confirm
--instId,--mgnMode,--posSide - Leverage: confirm new leverage and impact on existing positions
- Algo place (TP/SL): confirm trigger prices; use
--tpOrdPx -1for market execution - Algo trail: confirm
--callbackRatio(e.g.,0.02= 2%) or--callbackSpread
For full parameter details per command, read the relevant reference file.
Step 3 — Verify after writes
- After
spot place: runokx spot ordersto confirm order is live orokx spot fillsif market order - After
swap place: runokx swap ordersorokx swap positionsto confirm - After
swap close: runokx swap positionsto confirm position size is 0 - After
futures place: runokx futures ordersorokx futures positionsto confirm - After
futures close: runokx futures positionsto confirm position size is 0 - After spot algo place/trail: run
okx spot algo ordersto confirm algo is active - After swap algo place/trail: run
okx swap algo ordersto confirm algo is active - After futures algo place/trail: run
okx futures algo ordersto confirm algo is active - After cancel: run
okx spot orders/okx swap orders/okx futures ordersto confirm order is gone
Global Notes
- All write commands require valid credentials in
~/.okx/config.tomlor env vars --profile <name>is required for all authenticated commands--jsonreturns raw OKX API v5 response- Rate limit: 60 order operations per 2 seconds per UID
- Batch operations (batch cancel, batch amend) are available via MCP tools directly if needed
- Position mode (
netvslong_short_mode) affects whether--posSideis required - Network errors: If commands fail with a connection error, prompt user to check VPN:
curl -I https://www.okx.com
For MCP tool reference, output conventions, and order amount safety rules, read {baseDir}/references/templates.md.