-1.配置您的API信息
OKX/OKEx钱包API使用指南:从入门到实战,轻松实现自动化交易
在数字货币交易领域,手动操作往往难以跟上瞬息万变的市场行情,为了实现更高效的交易策略、自动化执行以及更精细化的资产管理,越来越多的高级用户和开发者开始关注和使用交易所提供的API(应用程序编程接口),OKX(原OKEx)作为全球领先的加密货币交易所,其钱包API功能强大,为用户提供了强大的自动化工具。

本文将为您详细解析OKX钱包API的使用方法,从准备工作到代码实战,帮助您快速上手,解锁交易新可能。
什么是OKX钱包API?
OKX钱包API就像是您与OKX账户之间的“信使”和“翻译官”,它允许您通过编写代码(如Python、JavaScript等)来发送指令,直接与OKX的服务器进行交互,从而完成原本需要在网页或app上手动操作的任务。
主要功能包括:
- 查询账户信息: 实时获取您的资产余额、交易历史等。
- 执行交易操作: 创建市价单、限价单、取消订单等。
- 管理API密钥: 对不同的API密钥进行权限设置和管理。
- 获取市场数据: 获取K线数据、市场深度、交易记录等。
准备工作:获取您的API密钥
在使用API之前,您必须先在OKX平台上创建并获取API密钥,这是最关键的一步,请务必妥善保管。

- 登录OKX账户: 访问OKX官网并登录您的账户。
- 进入API管理页面: 在右上角头像菜单中,找到并点击【API管理】。
- 创建API Key:
- 点击【创建API Key】。
- 为您的API命名: 给它一个易于识别的名字,我的Python交易机器人”。
- 设置权限(至关重要!):
- 只读权限: 只能查询账户信息、市场数据,无法进行任何交易或提币,适合用于数据分析或监控。
- 交易权限: 除了查询,还可以进行买卖交易,但不能提币,这是进行自动化交易最常用的权限。
- 提币权限: 包含交易权限,并允许通过API进行提币。此权限风险极高,请谨慎使用,除非您有绝对的安全保障。
- 设置IP白名单(强烈推荐): 为了安全,您可以限制您的API密钥只能从特定的IP地址访问,如果您只在家里的电脑上使用,就添加您家里的公网IP,这样可以有效防止密钥泄露后被他人滥用。
- 保存密钥信息: 创建成功后,系统会显示您的 API Key、Secret Key 和 Passphrase(口令)。请立即截图或复制并安全保存这三项信息,页面关闭后将无法再次查看Secret Key和Passphrase!
核心概念:API请求与身份验证
所有与OKX API的交互本质上都是发送HTTP请求,为了保证安全和验证您的身份,每个请求都必须包含特定的认证信息,OKX使用HMAC-SHA256算法进行签名认证。
一个完整的API请求通常包含以下要素:
- 请求方法: 如
GET(查询数据)、POST(提交操作)。 - 请求路径: 如
/api/v5/account/balance(查询账户余额)。 - 请求体: 对于POST请求,需要发送JSON格式的参数。
- 请求头: 这是身份验证的关键,需要包含:
OK-ACCESS-KEY: 您的API Key。OK-ACCESS-SIGN: 使用您的Secret Key对请求进行HMAC-SHA256签名后生成的字符串。OK-ACCESS-TIMESTAMP: 发送请求时的时间戳(UTC格式,如2023-01-01T12:00:00.000Z)。OK-ACCESS-PASSPHRASE: 您设置的API口令。Content-Type: 请求体的格式,通常为application/json。
签名生成逻辑(简化版): signature = HMAC-SHA256(secret_key, timestamp method request_path body)
这个过程通常由您的代码库自动完成,但理解其原理有助于排查问题。

实战演练:使用Python调用OKX API
下面我们以Python为例,演示如何查询账户余额和创建一个限价买单。
第一步:安装必要的库
您需要安装 requests 库来发送HTTP请求,以及 hmac 和 hashlib 库(Python内置)来生成签名。
pip install requests
第二步:编写Python代码
import requests
import json
import time
import hmac
import hashlib
from urllib.parse import urlencode
# !!! 请将以下替换为您自己的真实信息 !!!
API_KEY = '你的API Key'
SECRET_KEY = '你的Secret Key'
PASSPHRASE = '你的API口令'
BASE_URL = 'https://www.okx.com' # OKX API主网地址
# --- 2. 定义签名生成函数 ---
def get_sign(method, request_path, body, timestamp):
# 如果body是字典,先转为字符串并按key排序
if isinstance(body, dict):
body_str = urlencode(body)
else:
body_str = body
# 待签名字符串
sign_string = f'{timestamp}{method}{request_path}{body_str}'
# 使用HMAC-SHA256进行签名
signature = hmac.new(
SECRET_KEY.encode('utf-8'),
sign_string.encode('utf-8'),
hashlib.sha256
).digest()
# 返回Base64编码后的签名
import base64
return base64.b64encode(signature).decode()
# --- 3. 定义API请求通用函数 ---
def okx_request(method, request_path, params=None):
timestamp = time.strftime("%Y-%m-%dT%H:%M:%S.000Z", time.gmtime())
body = json.dumps(params, separators=(',', ':')) if params else ''
sign = get_sign(method, request_path, body, timestamp)
headers = {
'OK-ACCESS-KEY': API_KEY,
'OK-ACCESS-SIGN': sign,
'OK-ACCESS-TIMESTAMP': timestamp,
'OK-ACCESS-PASSPHRASE': PASSPHRASE,
'Content-Type': 'application/json'
}
url = f"{BASE_URL}{request_path}"
try:
if method == 'GET':
response = requests.get(url, headers=headers, params=params)
elif method == 'POST':
response = requests.post(url, headers=headers, data=body)
response.raise_for_status() # 如果请求失败,抛出异常
return response.json()
except requests.exceptions.RequestException as e:
print(f"请求失败: {e}")
return None
# --- 4. 调用API示例 ---
# 示例1:查询账户余额
print("--- 查询账户余额 ---")
balance_params = {
"ccy": "BTC" # 可选,指定币种,不指定则返回所有
}
balance_data = okx_request('GET', '/api/v5/account/balance', balance_params)
if balance_data and balance_data.get('code') == '0':
print(json.dumps(balance_data['data'], indent=2, ensure_ascii=False))
else:
print("查询余额失败")
print("\n" "="*50 "\n")
# 示例2:创建一个限价买单 (假设有交易权限)
# 注意:这只是一个示例,实际交易请谨慎操作!
print("--- 创建限价买单 (示例) ---")
order_params = {
"instId": "BTC-usdt", # 交易对
"tdMode": "cash", # 交易模式:cash(币币现货)
"side": "buy", # 买卖方向:buy
"ordType": "limit", # 订单类型:limit(限价)
"px": "30000", # 限价价格
"sz": "0.001" # 委托数量
}
# 注意:实际下单请取消下面这行注释,并确保您有足够资金
# order_data = okx_request('POST', '/api/v5/trade/order', order_params)
# if order_data and order_data.get('code') == '0':
# print("下单成功!")
# print(json.dumps(order_data['data'], indent=2, ensure_ascii=False))
# else:
# print("下单失败")
# print(json.dumps(order_data, indent=2, ensure_ascii=False))
print("\n--- 完整的API文档请参考OKX官方文档 ---")
print("https://www.okx.com/docs-v5/zh/")
安全注意事项
本文 原创,转载保留链接!网址:https://licai.bangqike.com/bixun/1302742.html
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。






