OKX 模拟盘 API 让你用虚拟资金检查程序能否正确下单。第一次接入最有价值的结果,是程序能说清楚订单“被接受、挂着、成交了还是取消了”,而不只是接口返回一次成功。
下载完整 Python 示例 · 只想修报错? · 合约张数换算
第一步:单独创建模拟盘 Key
进入 OKX 的 Demo Trading,再进入该环境的 API 管理。你需要 API Key、Secret Key 和创建时填写的 Passphrase;Passphrase 不是登录密码。示例默认只查询公开规格,读取模拟余额才需要 Read,模拟下单和撤单还需要 Trade。不要添加 Withdraw。
把 Key 放在本机环境变量 OKX_DEMO_KEY、OKX_DEMO_SECRET、OKX_DEMO_PASSPHRASE 中。不要填到本站、聊天窗口或截图里。下载的程序始终携带 x-simulated-trading: 1,没有切换实盘的参数。

第二步:先跑不需要 Key 的公开请求
下载文件后,用 Python 3.10 或更新版本运行;只使用标准库,不需要安装 SDK。
python3 okx-demo.py
输出 BTC-USDT 的最小数量、数量步长和价格步长。它们决定下一步的 size 和 price 能否被接受。如果这里就报网络错误,先处理当前账户适用 API 域名、网络和平台状态,不要反复重建 Key。示例固定使用全球站 openapi.okx.com,地区账户须对照当地官方文档,不能把 Key 发往第三方代理。
第三步:读到模拟余额
python3 okx-demo.py --balance
成功后程序只打印“模拟余额请求成功”,不公开账户金额。如果提示 50101,检查 Key 是否确实来自模拟环境;50102 查电脑时钟;50113 查签名及三项凭证。模拟环境不等于真实市场深度,余额读取成功也不等于策略能够盈利。
第四步:提交一笔可清理的模拟订单
示例使用 BTC-USDT 现货、买入、post-only 限价单。数量单位是 BTC,不是合约张数。先看刚才返回的规格,再选择你自己的演示价格与数量:
python3 okx-demo.py --demo-order --price 10000 --size 0.001
这里的价格和数量只是命令格式示例,不是当前行情、有效订单保证或买入建议。post-only 价格若会立即吃单,交易所可能取消该单;价格超出允许范围也可能被拒绝。修改前先看模拟盘报价和规格。
程序生成唯一客户订单 ID,提交后读取订单,再尝试取消仍挂着的订单,最后再查一次状态。订单可能先成交,不能把“撤单请求已接受”写成“绝对未成交”。accFillSz 用来确认累计成交量。
下单超时,为什么不能再点一次?
请求超时可能发生在交易所已经收到订单之后。直接重发会产生两笔。示例不会自动重试下单,而是用原来的 clOrdId 查单并清理;若查单也失败,它会显示客户订单 ID,要求你到模拟盘查看未完成订单。
要改成合约时,先换成对应 instId,再处理 tdMode、持仓模式和合约张数。不要把这个现货示例的 sz=0.001 原样搬进永续请求。可先用张数计算器理解数量。
这份示例验证了什么?
下载代码的签名、参数和撤单流程经过本地测试;本站没有使用你的 Key,也没有替你执行账户中的模拟单。请以你自己得到的订单状态完成闭环。真实交易还涉及排队、滑点、网络延迟和资金风险,不能用一次模拟成功替代这些检查。