关键词:Jupyter Notebook、现货交易、Python-OKX、API Key、限价单、市价单
无论你是 Python 爱好者,还是想在自己的电脑上快速试错、复盘策略的加密货币交易员,本文都能让你 15 分钟上手:在一台普通电脑上,用 Jupyter Notebook 调用 OKX API,完成开户、下单、查仓到撤单的全链路现货交易流程。
1 本地部署 Jupyter Notebook
想在 Windows、macOS 还是 Linux 上跑都行;只要装了 Anaconda 或 Miniconda,一条命令即可:
jupyter notebook浏览器会弹出熟悉的树形文件页面,说明本地服务器已就绪。
2 安装 Python-OKX
打开 Notebook 新建 .ipynb,在第一个 cell 一次性装完:
!pip install python-okx --upgrade安装完成后重启 kernel,再导入就不会出现 “module not found” 的红色报错。
3 创建并使用 API Key
- 登录 OKX → 模拟盘 → API 管理。
- 生成 仅用于模拟盘的 API Key;勾选 “Trade” 权限。
- 保存三件事:
api_key、secret_key、passphrase。
以密码学最佳实践保存,千万别直接写死在公开仓库:
import os
api_key = os.getenv("OKX_API_KEY")
secret_key = os.getenv("OKX_SECRET")
passphrase = os.getenv("OKX_PASS")4 初识四大模块
Python-OKX 把 REST 功能拆成 12 个子模块,现货交易最常用的 4 个如下:
- Trade(下单、撤单、修改订单)
- Account(查余额、账户配置)
- MarketData(拉行情、 ticker)
- PublicData(交易对、手续费档位)
import 示例:
import okx.Trade as Trade
import okx.Account as Account
import okx.MarketData as MarketData5 查看实时行情 & 交易对列表
flag = "1" # 0 为实盘,1 为模拟盘
marketAPI = MarketData.MarketAPI(flag=flag)
tickers = marketAPI.get_tickers(instType="SPOT")
print(tickers) # 所有现货 24h 行情想确认平台支持的所有现货币对:
accountAPI = Account.AccountAPI(api_key, secret_key, passphrase, False, flag)
all_pairs = accountAPI.get_instruments(instType="SPOT")
print(all_pairs[:3]) # 列表太长可先预览 3 条6 检查账户余额
现金账户用于现货交易,核心关注字段:
cashBal:可用余额frozenBal:冻结余额totalEq:折算总权益
balance = accountAPI.get_account_balance()
print(balance["data"][0]["details"])7 弄懂四种账户模式
| 模式 | tdMode 建议 | 适合场景 |
|---|---|---|
| Spot 单币 | cash | 极简单的买入持有 |
| Spot & Futures | cash | 同时跑交割/永续,分开保证金 |
| 多币种保证金 | cross | 做多币种对冲,共用保证金 |
| 组合保证金 | cross | 高频对冲、量化机构首选 |
查询当前模式:
cfg = accountAPI.get_account_config()
acctLv = cfg["data"][0]["acctLv"]
print("当前模式编号:", acctLv)8 下单三招式:限价、市价、附加参数
8.1 限价单:0.01 BTC 限价 19,000 USDT
tradeAPI = Trade.TradeAPI(api_key, secret_key, passphrase, False, flag)
order = tradeAPI.place_order(
instId="BTC-USDT",
tdMode="cash",
side="buy",
ordType="limit",
px="19000",
sz="0.01"
)
print("订单号:", order["data"][0]["ordId"])8.2 市价单:用 100 USDT 市价买 BTC
order = tradeAPI.place_order(
instId="BTC-USDT",
tdMode="cash",
side="buy",
ordType="market",
sz="100",
tgtCcy="quote_ccy"
)
print(order)8.3 自选 client ID 便于追踪
tradeAPI.place_order(
instId="BTC-USDT",
tdMode="cash",
side="sell",
ordType="market",
sz="0.005",