:2026-02-24 6:51 点击:11
在加密货币交易中,自动化交易、策略执行和高效管理是提升交易效率的关键,OKX作为全球领先的数字资产交易平台,提供了功能强大的API(应用程序接口),允许开发者通过编程方式实现交易、数据查询、

API是应用程序接口,相当于OKX交易平台与你的交易程序之间的“桥梁”,通过API,你可以:
OKX API支持现货交易、合约交易、期权交易等全业务场景,并提供RESTful API(用于数据查询和订单提交)和WebSocket API(用于实时数据推送),满足不同需求。
在使用OKX API前,需完成以下准备工作:
确保已完成身份认证(KYC),未认证账户可能无法使用API功能。
OKX API权限分为只读、交易、提现三类,需按需勾选(建议最小权限原则):
为提升安全性,可在创建API时限制允许访问的IP地址(仅填写的IP可调用API),避免密钥泄露被恶意使用,若需临时更换IP,可随时在API管理页面修改。
OKX API主要通过RESTful接口实现操作,以下是核心功能的使用示例(以Python为例,需先安装requests库:pip install requests)。
OKX API使用HMAC-SHA256算法对请求进行签名,确保请求的合法性和安全性,签名步骤如下:
/api/v5/account/balance)、请求参数(按字母序排序)拼接成字符串; Secret Key对字符串进行HMAC-SHA256加密,生成签名; 示例代码:生成签名
import hmac
import base64
import hashlib
import time
def generate_signature(api_key, secret_key, passphrase, method, path, query_string=None, body=None):
timestamp = str(int(time.time()))
message = timestamp + method.upper() + path + (query_string or "") + (body or "")
signature = base64.b64encode(
hmac.new(secret_key.encode(), message.encode(), hashlib.sha256).digest()
).decode()
return signature
接口:GET /api/v5/account/balance
功能:获取账户余额(包括现货、合约等资产)。
示例代码
import requests
api_key = "your_api_key"
secret_key = "your_secret_key"
passphrase = "your_passphrase"
base_url = "https://www.okx.com"
def get_account_balance():
path = "/api/v5/account/balance"
timestamp = str(int(time.time()))
method = "GET"
body = ""
signature = generate_signature(api_key, secret_key, passphrase, method, path, body=body)
headers = {
"OK-ACCESS-KEY": api_key,
"OK-ACCESS-SIGN": signature,
"OK-ACCESS-PASSPHRASE": passphrase,
"OK-ACCESS-TIMESTAMP": timestamp,
"Content-Type": "application/json"
}
response = requests.get(base_url + path, headers=headers)
return response.json()
print(get_account_balance())
接口:POST /api/v5/trade/order
功能:提交限价单、市价单等。
请求参数说明
| 参数名 | 类型 | 必填 | 说明 |
|--------------|--------|------|--------------------------|
| instId | string | 是 | 交易产品,如BTC-USDT |
| tdMode | string | 是 | 交易模式:cash(现货)cross(全仓合约)isolated(逐仓合约) |
| side | string | 是 | 买卖方向:buy/sell |
| ordType | string | 是 | 订单类型:limit(限价)market(市价) |
| sz | string | 是 | 委托数量(张或币数) |
| px | string | 否 | 限价单价格(市价单无需) |
示例代码:买入BTC限价单
def place_order():
path = "/api/v5/trade/order"
timestamp = str(int(time.time()))
method = "POST"
body = json.dumps({
"instId": "BTC-USDT",
"tdMode": "cash",
"side": "buy",
"ordType": "limit",
"sz": "0.001",
"px": "30000"
})
signature = generate_signature(api_key, secret_key, passphrase, method, path, body=body)
headers = {
"OK-ACCESS-KEY": api_key,
"OK-ACCESS-SIGN": signature,
"OK-ACCESS-PASSPHRASE": passphrase,
"OK-ACCESS-TIMESTAMP": timestamp,
"Content-Type": "application/json"
}
response = requests.post(base_url + path, headers=headers, data=body)
return response.json()
print(place_order())
接口:GET /api/v5/trade/order
功能:通过订单ID查询订单详情(如成交状态、剩余数量)。
请求参数
ordId:订单ID(必填) instId:交易产品(可选,建议填写) 示例代码
def get_order_status(ord_id):
path = "/api/v5/trade/order"
timestamp = str(int(time.time()))
method = "GET"
query_string = f"ordId={ord_id}&instId=BTC-USDT"
signature = generate_signature(api_key, secret_key, passphrase, method, path, query_string=query_string)
headers = {
"OK-ACCESS-KEY": api_key,
"OK-ACCESS-SIGN": signature,
"OK-ACCESS-PASSPHRASE": passphrase,
"OK-ACCESS-TIMESTAMP": timestamp,
"Content-Type": "application/json"
}
response = requests.get(base_url + path + "?" + query_string, headers=headers)
return response.json()
print(get_order_status("your_order_id"))
对于需要实时数据的场景(如行情监控、高频交易),可使用WebSocket API。
示例代码:订阅BTC-USDT实时K线
import websockets
import asyncio
async def subscribe_kline():
ws_url = "wss://ws.okx.com:8443/ws/v5/public"
async with websockets.connect(ws_url) as websocket:
subscribe_msg = {
"op": "subscribe",
"args": [{
"channel": "candle1m",
"instId": "BTC-USDT"
}]
}
await websocket.send(json.dumps(subscribe_msg))
while True:
response = await websocket.recv()
print(response)
asyncio.run(subscribe_kline())
本文由用户投稿上传,若侵权请提供版权资料并联系删除!