使用 Jupyter Notebook 进行 OKX 现货交易完全指南

·

在量化交易领域,Jupyter Notebook 因其 交互式编码、实时可视化和轻量部署 成为极客首选。本文手把手教你从环境配置、API 密钥到下单、撤单、改单的全过程,帮助你在本地 5 分钟 跑通第一笔现货交易。
👉 立即测算用代码下单能省多少交易时间!


快速上手:安装与环境检查

1. 在本地启动 Jupyter Notebook

2. 安装 python-okx 官方库

新建 Notebook 单元格运行:

!pip install --upgrade python-okx
关键词:python-okx、API 库、环境配置

三步完成 API 密钥设置

  1. 登入 OKX 后,先切到 模拟盘 校验策略(Demo Trading)。
  2. 在「个人中心 ▸ API」点击 创建 API 密钥
  3. 权限选择 读取+交易,把以下三行密钥永久保存到 Notebook 开头:

    api_key    = "你的APIKey"
    secret_key = "你的SecretKey"
    passphrase = "你的Passphrase"
    关键词:API 密钥、模拟盘、私密保管

模块导入与对象初始化

python-okx 提供了 13 个模块,核心现货交易需用到:


先读懂行情:拉取市场与资产数据

获取可用现货交易对

inst = accountAPI.get_instruments(instType="SPOT")
print("现货交易对示例:", inst["data"][:3])

查看账户余额(关键字段 cashBal/frozenBal)

bal = accountAPI.get_account_balance()
for detail in bal["data"][0]["details"]:
    if detail["ccy"] in {"USDT","BTC"}:
        print(detail["ccy"], "可用:", detail["cashBal"], "冻结:", detail["frozenBal"])
关键词:现货交易对、账户余额、cashBal、frozenBal

下单实操:限价单 & 市价单

1. 限价单(Limit Order)

1 BTC = 19000 USDT 限价买入 0.01 BTC:

res = tradeAPI.place_order(
    instId="BTC-USDT",
    tdMode="cash",
    side="buy",
    ordType="limit",
    px="19000",
    sz="0.01"
)
print("订单号:", res["data"][0]["ordId"] if res["code"]=="0" else res["data"][0]["sMsg"])

2. 市价单(Market Order)

100 USDT 市价买 BTC,大小单位使用报价币:

res = tradeAPI.place_order(
    instId="BTC-USDT",
    tdMode="cash",
    side="buy",
    ordType="market",
    sz="100",
    tgtCcy="quote_ccy",
    clOrdId="my_order_003"  # 自定义 ID
)
关键词:限价单、市价单、tgtCcy、clOrdId

订单管理:查看 / 修改 / 撤销

操作函数范例
查单tradeAPI.get_order(instId="BTC-USDT", ordId="4978...")
撤单tradeAPI.cancel_order(instId="BTC-USDT", ordId="4978...")
改单tradeAPI.amend_order(instId="BTC-USDT", ordId="4978...", newSz="0.012")
列表tradeAPI.get_order_list()
历史tradeAPI.get_orders_history(instType="SPOT")

常见问题 FAQ

Q1:实盘与模拟盘如何一键切换?
A:变量 flag = "0"(实盘)或 "1"(模拟)即可全局生效,无需多次登录。

Q2:只能在限价单中调整价格吗?
A:是的。市价单无法改价,仅能改数量或撤单重下。

Q3:订单 clOrdId 可以重复吗?
A:不能。一个交易对一小时内不能重复使用同一自定义 ID,否则会报错 51000。

Q4:为何会提示 tdMode 错误?
A:现货必须设 tdMode="cash";若你的账户启用杠杆或交割,需要改成 "cross""isolated"

Q5:Notebook 长时间挂机链接断开怎么办?
A:在代码顶部加 import os,time + time.sleep(1) 适当心跳,或使用 tmux/screen 长期运行。

Q6:本地 IP 被封?
A:OKX 对每个密钥有 每分钟 20 次 请求限制,建议本地加缓存或减少轮询频率。


进阶技巧:DataFrame 展示与可视化

把查询结果转成 Pandas:

import pandas as pd
tickers = marketDataAPI.get_tickers(instType="SPOT")["data"]
df = pd.DataFrame(tickers)[["instId","last","vol24h"]]
df.head()

在 Notebook 中点击 Tab 自动补全,配合 Matplotlib/Plotly 可实时绘出盘口或资产曲线。
👉 探索更多回测模板与绘制工具!


总结

通过以上 15 个步骤,你已具备 从零到一 在 Jupyter Notebook 完成 OKX 现货交易的能力。记住三步口诀:密钥安全放首位、每次改动先跑模拟盘、订单状态随调随存。祝你策略常青,收益长虹!