SKILL.md
$2a
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 --jsonhas any profile with a non-emptyapi_keyfield → API Key mode. Proceed to Step B.
- No API-key profile AND
auth status --jsonreturns"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, loadokx-cex-authskill and follow login steps, wait for completion.
Step B — Confirm trading mode
Resolution:
- User intent is clear ("real"/"实盘"/"live" → live; "test"/"模拟"/"demo" → demo) → use it, inform user
- No explicit declaration → check conversation context for previous choice → reuse if found
- Nothing found → ask: "Live (实盘) or Demo (模拟盘)?" — wait before proceeding
How to apply the mode depends on auth method (detected in Step A):
Auth method
Live (实盘)
Demo (模拟盘)
API Key
--profile <live-profile>
--profile <demo-profile>
OAuth
(no flag needed, live is default)
--demo
- API Key users: run
okx config show --jsonto discover available profile names and theirdemosettings.
- OAuth users: omit flags for live; add
--demofor 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"):
- Stop immediately
- Load
okx-cex-authskill and follow re-authentication steps
- Retry original command
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 amend
WRITE
Amend price range, grid count, or TP/SL of a running grid bot
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, amend, stop): confirm key parameters with user once before executing.
Step 3 — Verify after writes
- After create → run the corresponding
orderscommand to confirm active
- After amend → run
bot grid detailsto confirm updated config
- After stop → run
orders --historyto 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 normalordId. Never fabricate — always obtain from a prior command.
- **
algoOrdType** for grid must match the bot's actual type. Always use the value frombot grid orders— do not infer from user description alone. Mismatch causes error50016.
- When operating on existing bots, always list first to get correct IDs, unless the user provides them explicitly.
- TP/SL constraints:
tpTriggerPx/tpRatioandslTriggerPx/slRatioare 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]
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 — Amend
okx bot grid amend --algoId <id> \
[--maxPx <px> --minPx <px> --gridNum <n>] \
[--instId <id>] \
[--tpTriggerPx <px>] [--slTriggerPx <px>] \
[--tpRatio <ratio>] [--slRatio <ratio>] \
[--topUpAmt <n>] [--json]
Supports two modes that can be combined in one call:
Price-range mode — triggered when --maxPx is provided:
Param
Required
Description
--algoId
Yes
Grid bot algo order ID
--maxPx
Yes
New upper price boundary
--minPx
Yes (with maxPx)
New lower price boundary
--gridNum
Yes (with maxPx)
New grid count (integer)
--topUpAmt
No
Extra margin to add (contract grid only; omit to auto-use minimum required)
TP/SL mode — triggered when at least one TP/SL param is provided; --instId is also required:
Param
Required
Description
--instId
Yes
Instrument ID (e.g., BTC-USDT)
--tpTriggerPx
No
Take-profit trigger price (absolute). Pass -1 to clear
--slTriggerPx
No
Stop-loss trigger price (absolute). Pass -1 to clear
--tpRatio
No
Take-profit ratio (e.g., 0.1 = 10%). Contract grid only. Pass -1 to clear
--slRatio
No
Stop-loss ratio (e.g., 0.1 = 10%). Contract grid only. Pass -1 to clear
--topUpAmt
No
Extra margin to add (contract grid only)
Note: tpTriggerPx/tpRatio are mutually exclusive. Same for slTriggerPx/slRatio.
Grid Bot — Stop
okx bot grid stop --algoId <id> --algoOrdType <type> --instId <id> \
[--stopType <1|2>] [--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
Grid Bot — List Orders
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
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
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)
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>] \
[--triggerCond <cross_up|cross_down>] [--thold <threshold>] [--timeframe <timeframe>] [--timePeriod <period>] \
[--algoClOrdId <id>] [--reserveFunds <true|false>] [--tradeQuoteCcy <ccy>] [--json]
Param
Required
Default
Description
--algoOrdType
Yes
-
spot_dca (Spot DCA) or contract_dca (Contract DCA)
--instId
Yes
-
Instrument (e.g., BTC-USDT for spot, BTC-USDT-SWAP for contract)
--lever
Cond.
-
Leverage multiplier (e.g., 3). Required for contract_dca
--direction
Yes
-
long or short. spot_dca must be long
--initOrdAmt
Yes
-
Initial order amount (quote currency)
--maxSafetyOrds
Yes
-
Max safety orders, integer [0, 100] (e.g., 3; 0 = no DCA)
--safetyOrdAmt
Cond.
-
Safety order amount (quote currency). Required when maxSafetyOrds > 0
--pxSteps
Cond.
-
Initial price deviation [0.001, 0.5], e.g., 0.03 = 3%. Required when maxSafetyOrds > 0
--pxStepsMult
Cond.
1
Price step multiplier (e.g., 1.2). Required when maxSafetyOrds > 0
--volMult
Cond.
1
Safety order size multiplier (e.g., 1.5). Required when maxSafetyOrds > 0
--tpPct
Yes
-
Take-profit ratio: long [0.001, 10], short [0.001, 0.9999] (e.g., 0.03 = 3%)
--slPct
No
-
Stop-loss ratio, must exceed MPD (e.g., 0.05 = 5%). Must be used with --slMode
--slMode
No
market
Stop-loss type: limit or market. Must be used with --slPct
--allowReinvest
No
true
Reinvest profit into the next DCA cycle
--triggerStrategy
No
instant
contract_dca: instant, price, rsi; spot_dca: instant, rsi
--triggerPx
No
-
Trigger price — required when triggerStrategy=price (contract_dca only)
--triggerCond
No
-
cross_up or cross_down — required when triggerStrategy=rsi, optional when triggerStrategy=price
--thold
No
-
RSI threshold (e.g. 30) — required when triggerStrategy=rsi
--timeframe
No
-
RSI timeframe (e.g. 15m) — required when triggerStrategy=rsi
--timePeriod
No
14
RSI period — optional when triggerStrategy=rsi
--algoClOrdId
No
-
Client-defined strategy order ID (1-32 alphanumeric)
--reserveFunds
No
true
true or false — whether to reserve funds
--tradeQuoteCcy
No
-
Trade quote currency
Conditional required logic:
- Always required:
--algoOrdType,--instId,--direction,--initOrdAmt,--maxSafetyOrds,--tpPct
- When
algoOrdType=contract_dca: also required--lever
- When
maxSafetyOrds > 0: also required--safetyOrdAmt,--pxSteps,--pxStepsMult,--volMult
--slPctand--slModemust be both set or both omitted
DCA Bot — Stop
okx bot dca stop --algoOrdType <spot_dca|contract_dca> --algoId <id> [--stopType <1|2>] [--json]
Param
Required
Default
Description
--algoOrdType
Yes
-
spot_dca or contract_dca
--algoId
Yes
-
DCA bot algo order ID (from create or list output). NOT a normal trade order ID
--stopType
Cond.
1 (contract_dca)
Required for spot_dca: 1=sell all tokens, 2=keep tokens. contract_dca always uses 1 (close position)
DCA Bot — List Orders
okx bot dca orders [--algoOrdType <spot_dca|contract_dca>] [--algoId <id>] [--instId <id>] [--history] [--json]
Param
Required
Default
Description
--algoOrdType
No
contract_dca
Filter by strategy type
--algoId
No
-
Filter by DCA bot algo order ID
--instId
No
-
Filter by instrument
--history
No
false
Show completed/stopped bots instead of active
DCA Bot — Details
okx bot dca details --algoOrdType <spot_dca|contract_dca> --algoId <id> [--json]
Returns: avgPx, upl, liqPx, sz, tpPx, slPx, initPx, fundingFee, fee, fillSafetyOrds, algoClOrdId, baseSz, quoteSz, tradeQuoteCcy.
DCA Bot — Sub-Orders
okx bot dca sub-orders --algoOrdType <spot_dca|contract_dca> --algoId <id> [--cycleId <id>] [--json]
Flag / Param
Effect
(default)
List all cycles
--cycleId <id>
Show orders within a specific cycle
Quickstart
# Spot grid: BTC $90k–$100k, 10 grids, 1000 USDT
okx bot grid create --instId BTC-USDT --algoOrdType grid \
--minPx 90000 --maxPx 100000 --gridNum 10 --quoteSz 1000
# Contract grid: BTC perp, neutral, 5x, 100 USDT margin
okx bot grid create --instId BTC-USDT-SWAP --algoOrdType contract_grid \
--minPx 90000 --maxPx 100000 --gridNum 10 \
--direction neutral --lever 5 --sz 100
# Coin-margined contract grid: BTC inverse perp
okx bot grid create --instId BTC-USD-SWAP --algoOrdType contract_grid \
--minPx 90000 --maxPx 100000 --gridNum 10 \
--direction long --lever 5 --sz 0.01
# Contract DCA bot: BTC perp, long, 3x, 3% TP
okx bot dca create --algoOrdType contract_dca --instId BTC-USDT-SWAP --lever 3 --direction long \
--initOrdAmt 100 --safetyOrdAmt 50 --maxSafetyOrds 3 \
--pxSteps 0.03 --pxStepsMult 1 --volMult 1 --tpPct 0.03
# Spot DCA bot: BTC spot, long, 5% TP
okx bot dca create --algoOrdType spot_dca --instId BTC-USDT --direction long \
--initOrdAmt 100 --safetyOrdAmt 50 --maxSafetyOrds 3 \
--pxSteps 0.03 --pxStepsMult 1.2 --volMult 1.5 --tpPct 0.05
# Amend grid price range
okx bot grid amend --algoId 3486105572796182528 --maxPx 102000 --minPx 88000 --gridNum 14
# Amend grid TP/SL
okx bot grid amend --algoId 3486105572796182528 --instId BTC-USDT --tpTriggerPx 110000 --slTriggerPx 80000
# Amend both in one call (combined mode)
okx bot grid amend --algoId 3486105572796182528 \
--maxPx 102000 --minPx 88000 --gridNum 14 \
--instId BTC-USDT --tpTriggerPx 110000 --slTriggerPx 80000
# Clear TP/SL (use =-1 syntax for negative values)
okx bot grid amend --algoId 3486105572796182528 --instId BTC-USDT --tpTriggerPx=-1 --slTriggerPx=-1
# List all active bots
okx bot grid orders --algoOrdType grid
okx bot grid orders --algoOrdType contract_grid
okx bot dca orders --algoOrdType contract_dca
okx bot dca orders --algoOrdType spot_dca
Cross-Skill Workflows
Spot Grid Bot
User: "Start a BTC grid bot between $90k and $100k with 10 grids, invest 1000 USDT"
1. okx-cex-market okx market ticker BTC-USDT → confirm price is in range
2. okx-cex-portfolio okx account balance USDT → confirm available funds
↓ user approves
3. okx-cex-bot okx bot grid create --instId BTC-USDT --algoOrdType grid \
--minPx 90000 --maxPx 100000 --gridNum 10 --quoteSz 1000
4. okx-cex-bot okx bot grid orders --algoOrdType grid → confirm bot is active
5. okx-cex-bot okx bot grid details --algoOrdType grid --algoId <id> → monitor PnL
Contract DCA Bot
User: "Start a long DCA bot on BTC perp, 3x leverage, $200 initial, 3% TP"
1. okx-cex-market okx market ticker BTC-USDT-SWAP → confirm current price
2. okx-cex-portfolio okx account balance USDT → confirm margin
↓ user approves
3. okx-cex-bot okx bot dca create --algoOrdType contract_dca --instId BTC-USDT-SWAP \
--lever 3 --direction long \
--initOrdAmt 200 --safetyOrdAmt 100 --maxSafetyOrds 3 \
--pxSteps 0.03 --pxStepsMult 1 --volMult 1 --tpPct 0.03
4. okx-cex-bot okx bot dca orders --algoOrdType contract_dca → confirm active
5. okx-cex-bot okx bot dca details --algoOrdType contract_dca --algoId <id> → monitor PnL
Spot DCA Bot
User: "帮我在现货上 DCA BTC,首单 100 USDT,5% 止盈"
1. okx-cex-market okx market ticker BTC-USDT → confirm current price
2. okx-cex-portfolio okx account balance USDT → confirm funds
↓ user approves
3. okx-cex-bot okx bot dca create --algoOrdType spot_dca --instId BTC-USDT \
--direction long \
--initOrdAmt 100 --safetyOrdAmt 50 --maxSafetyOrds 3 \
--pxSteps 0.03 --pxStepsMult 1.2 --volMult 1.5 --tpPct 0.05
4. okx-cex-bot okx bot dca orders --algoOrdType spot_dca → confirm active
Edge Cases
Grid Bot
- Price out of range:
--minPxmust be < current price <--maxPx; check withokx-cex-marketfirst
- Insufficient balance: check
okx-cex-portfolio→account balancebefore creating. If insufficient, do NOT auto-transfer — report the shortfall and ask the user for instructions
- Contract grid direction:
long(buys more at lower prices),short(sells at higher),neutral(both). Direction is required for contract grid
- Contract grid basePos: defaults to
true— long/short grids automatically open a base position at creation. Neutral direction ignores this. Pass--no-basePosto disable
- Contract grid --sz: investment margin in USDT (USDT-M) or coin (coin-M), not number of contracts
- Coin-margined grids: use inverse instruments (e.g.,
BTC-USD-SWAP). Margin unit is the base coin (BTC), not USDT
- Stop type:
stopType 1sells/closes all (default);stopType 2keeps assets as-is (spot grid) or leaves position open for manual close (contract grid)
- TP/SL:
tpTriggerPx/tpRatioandslTriggerPx/slRatioare mutually exclusive pairs. Ratio-based TP/SL is contract grid only
- Amend — at least one mode required: must provide either price-range params (
--maxPx+--minPx+--gridNum) or TP/SL params; providing neither returns a validation error
- Amend — combined mode: price-range and TP/SL can be combined in one call (two sequential API requests internally)
- Amend — clear TP/SL: pass
--tpTriggerPx=-1or--slTriggerPx=-1(use=syntax for negative values, not--flag -1)
- Amend — contract grid topUpAmt: if new range requires more margin, provide
--topUpAmt; omit to auto-use the minimum required
- Amend — spot grid topUpAmt: not supported; omit
--topUpAmtfor spot grids
- Already stopped bot: stop returns error — check
bot grid orders --historyfirst to confirm state
- Insufficient margin (51340): extract required minimum from error, check balance via
okx-cex-portfolio, report shortfall to user — do NOT auto-transfer
- Demo mode:
okx --demo bot grid create ...(OAuth) orokx --profile <demo-profile> bot grid create ...(API Key) — safe for testing, no real funds
- algoClOrdId duplicate: if the same
algoClOrdIdalready exists, the API returns error code51065
DCA Bot
- Spot DCA direction: must always be
long. If user says "short spot DCA", explain that spot DCA only supports long direction
- Spot DCA stopType: always ask user whether to sell all tokens (
1) or keep them (2) when stopping
- Contract DCA lever: required. If missing, the tool returns a validation error
- pxStepsMult:
1.0= equal spacing;>1.0= widen gaps between successive safety orders
- volMult:
1.0= equal sizes;>1.0= increase per safety order (Martingale scaling)
- triggerStrategy:
instantstarts immediately;pricewaits for trigger price (contract_dca only);rsiwaits for RSI condition (both spot_dca and contract_dca)
- Already stopped bot: stop returns error — check
bot dca orders --historyfirst
- Demo mode:
okx --demo bot dca create ...(OAuth) orokx --profile <demo-profile> bot dca create ...(API Key) — safe testing, no real funds
- INVALID_PRICE_STEPS_MULTIPLIER error: adjust
slPct. Recalculate MPD = Σ(pxSteps × pxStepsMult^i) for i = 0..maxSafetyOrds−1, then setslPct> MPD
- algoClOrdId duplicate: error code
51065
Communication Guidelines
- Grid/DCA: use "bot" not "strategy" (e.g., "grid bot", "DCA bot")
- DCA: always say "DCA" or "Martingale" — DCA supports both Spot DCA and Contract DCA
- Chinese: Grid = "网格", Spot DCA = "现货马丁", Contract DCA = "合约马丁"
- Use natural language for parameters — "What price range?" not "Enter minPx and maxPx"
- If the user already provides values, map directly — don't re-ask
Parameter Display Names
{base} and {quote}: extract from instId by splitting on -. E.g., BTC-USDT-SWAP → base=BTC, quote=USDT.
#### Grid Bot — Spot ( algoOrdType=grid )
API Field
EN
ZH
instId
Trading pair
交易对
minPx
Lower price bound
网格下限价格
maxPx
Upper price bound
网格上限价格
gridNum
Number of grids
网格数量
quoteSz
Investment amount ({quote})
投入金额({quote})
baseSz
Investment amount ({base})
投入金额({base})
runType
Spacing mode (1=arithmetic, 2=geometric)
网格间距模式(1=等差, 2=等比)
stopType
Stop behavior
停止方式
#### Grid Bot — Contract ( algoOrdType=contract_grid )
API Field
EN
ZH
instId
Trading pair
交易对
minPx
Lower price bound
网格下限价格
maxPx
Upper price bound
网格上限价格
gridNum
Number of grids
网格数量
sz
Investment margin (USDT for USDT-M; {base} for coin-M)
投入保证金(USDT-M 为 USDT;币本位为 {base})
direction
Direction (long / short / neutral)
方向(做多 / 做空 / 中性)
lever
Leverage
杠杆倍数
runType
Spacing mode (1=arithmetic, 2=geometric)
网格间距模式(1=等差, 2=等比)
basePos
Open base position
是否开底仓
stopType
Stop behavior
停止方式
#### DCA Bot (Spot & Contract)
API Field
EN
ZH
algoOrdType
Strategy type (spot/contract)
策略类型(现货/合约)
instId
Trading pair
交易对
initOrdAmt
Initial order amount ({quote})
首单金额({quote})
safetyOrdAmt
Safety order amount ({quote})
补仓金额({quote})
maxSafetyOrds
Max safety orders
最大补仓次数
pxSteps
Price drop per safety order (%)
补仓价格跌幅(%)
pxStepsMult
Price step multiplier
补仓跌幅倍数
volMult
Safety order size multiplier
补仓金额倍数
tpPct
Take-profit ratio (%)
止盈比例(%)
slPct
Stop-loss ratio (%)
止损比例(%)
slMode
Stop-loss type (limit/market)
止损类型(限价/市价)
lever
Leverage
杠杆倍数
direction
Direction (long/short)
方向(做多/做空)
allowReinvest
Reinvest profit
利润再投入
triggerStrategy
Trigger mode (contract_dca: instant/price/rsi; spot_dca: instant/rsi)
触发方式
triggerPx
Trigger price
触发价格
algoClOrdId
Client order ID
客户端策略订单 ID
stopType
Stop type (sell all / keep tokens)
停止类型(卖出/保留)
reserveFunds
Reserve funds
预留资金
**slPct stop-loss logic:**
- Long: stop-loss price = initial fill price × (1 − slPct)
- Short: stop-loss price = initial fill price × (1 + slPct)
When triggered and position fully closed, the bot ends.
Global Notes
- All bots run on OKX servers — stopping the CLI does not affect them
- Auth method and trading mode are determined in "Credential & Profile Check"; see that section for parameter rules
--jsonreturns the raw OKX API v5 response by default. Add--envto wrap the output as{"env": "<live|demo>", "profile": "<name>", "data": <response>}
- Rate limit: 20 requests per 2 seconds per UID
- Grid
--gridNumrange: 2–100