五步学会 Jupyter Notebook 玩转现货交易:OKX API 完整指南

·

关键词:Jupyter Notebook、现货交易、Python-OKX、API Key、限价单、市价单

无论你是 Python 爱好者,还是想在自己的电脑上快速试错、复盘策略的加密货币交易员,本文都能让你 15 分钟上手:在一台普通电脑上,用 Jupyter Notebook 调用 OKX API,完成开户、下单、查仓到撤单的全链路现货交易流程。


1 本地部署 Jupyter Notebook

想在 Windows、macOS 还是 Linux 上跑都行;只要装了 AnacondaMiniconda,一条命令即可:

jupyter notebook

浏览器会弹出熟悉的树形文件页面,说明本地服务器已就绪。

👉 点击收藏五分钟上手的完整启动清单


2 安装 Python-OKX

打开 Notebook 新建 .ipynb,在第一个 cell 一次性装完:

!pip install python-okx --upgrade

安装完成后重启 kernel,再导入就不会出现 “module not found” 的红色报错。


3 创建并使用 API Key

  1. 登录 OKX → 模拟盘API 管理
  2. 生成 仅用于模拟盘的 API Key;勾选 “Trade” 权限。
  3. 保存三件事:api_keysecret_keypassphrase

以密码学最佳实践保存,千万别直接写死在公开仓库:

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 个如下:

import 示例:

import okx.Trade as Trade
import okx.Account as Account
import okx.MarketData as MarketData

5 查看实时行情 & 交易对列表

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 检查账户余额

现金账户用于现货交易,核心关注字段:

balance = accountAPI.get_account_balance()
print(balance["data"][0]["details"])

7 弄懂四种账户模式

模式tdMode 建议适合场景
Spot 单币cash极简单的买入持有
Spot & Futurescash同时跑交割/永续,分开保证金
多币种保证金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",