API 教程(四) 获取个人数据
安全警告:API密钥是您账户的”万能钥匙”。切勿将密钥硬编码在代码中,不要分享给任何人,建议使用环境变量存储。一旦泄露,请立即删除并重新生成。
获取个人数据是API应用的核心功能。无论是查询账户余额、监控持仓状态,还是获取历史订单,都需要通过私有API接口实现。与公共接口不同,私有接口需要API密钥认证和签名验证,这是保护您资产安全的关键机制。
本文将带您完成从生成API密钥到成功获取个人数据的全流程,并提供Python和JavaScript的完整代码示例。
为什么需要获取个人数据?
在实际交易场景中,获取个人数据是不可或缺的:
- 账户管理:实时查询各币种余额,避免因余额不足导致交易失败
- 风险控制:监控持仓情况,及时调整仓位避免爆仓风险
- 订单追踪:获取订单状态,确认成交情况和未成交订单
- 资金流水:查询充值提现记录,核对账户资金变动
- 量化交易:自动化策略需要实时获取账户状态做出决策
核心概念:API密钥与签名机制
1. API密钥三要素
在OKX平台生成API密钥时,会获得三个关键信息:
- API Key:公开标识符,用于识别您的身份(类似用户名)
- Secret Key:私密密钥,用于生成签名(类似密码,绝不能泄露)
- Passphrase:创建密钥时设置的口令,额外的安全验证
2. 签名机制(HMAC SHA256)
每次请求私有接口时,需要使用Secret Key对请求内容进行签名:
签名内容 = timestamp + method + requestPath + body
签名结果 = Base64(HMAC-SHA256(签名内容, Secret Key))
这个签名会放在请求头中,OKX服务器会验证签名是否正确,确保请求未被篡改且来自合法用户。
3. 权限管理
创建API密钥时可以设置不同权限级别:
- 只读权限:仅能查询数据,无法进行交易操作(推荐初学者使用)
- 交易权限:可以下单、撤单等交易操作
- 提现权限:允许提现到其他地址(高风险,需谨慎开启)
实战步骤:查询账户余额
步骤1:生成API密钥
- 登录OKX官网,进入”个人中心 - API管理”
- 点击”创建API”,选择”交易API”
- 设置Passphrase(请务必记住,无法找回)
- 选择权限(建议先选”只读”进行测试)
- 绑定IP白名单(可选,但强烈推荐)
- 完成二次验证,获取API Key和Secret Key
步骤2:构建签名(Python示例)
import hmac
import base64
import time
from datetime import datetime
def generate_signature(timestamp, method, request_path, body, secret_key):
“””生成OKX API签名”””
message = timestamp + method + request_path + body
mac = hmac.new(
bytes(secret_key, encoding='utf8'),
bytes(message, encoding='utf-8'),
digestmod='sha256'
)
return base64.b64encode(mac.digest()).decode()
# 示例:查询账户余额的签名
timestamp = datetime.utcnow().isoformat()[:-3] + 'Z'
method = 'GET'
request_path = '/api/v5/account/balance'
body = ''
signature = generate_signature(timestamp, method, request_path, body, 'YOUR_SECRET_KEY')
步骤3:发送请求
import requests
api_key = 'YOUR_API_KEY'
secret_key = 'YOUR_SECRET_KEY'
passphrase = 'YOUR_PASSPHRASE'
url = 'https://www.okx.com/api/v5/account/balance'
timestamp = datetime.utcnow().isoformat()[:-3] + 'Z'
signature = generate_signature(timestamp, 'GET', '/api/v5/account/balance', '', secret_key)
headers = {
'OK-ACCESS-KEY': api_key,
'OK-ACCESS-SIGN': signature,
'OK-ACCESS-TIMESTAMP': timestamp,
'OK-ACCESS-PASSPHRASE': passphrase,
'Content-Type': 'application/json'
}
response = requests.get(url, headers=headers)
print(response.json())
步骤4:解析响应
成功响应示例:
{
“code”: “0”,
“msg”: “”,
“data”: [
{
“totalEq”: “10500.5”,
“details”: [
{
“ccy”: “USDT”,
“availBal”: “10000”,
“frozenBal”: “500”
},
{
“ccy”: “BTC”,
“availBal”: “0.5”,
“frozenBal”: “0”
}
]
}
]
}
totalEq:账户总权益(折合USD)availBal:可用余额frozenBal:冻结余额(挂单占用)
JavaScript示例:查询持仓信息
const crypto = require('crypto');
const axios = require('axios');
function generateSignature(timestamp, method, requestPath, body, secretKey) {
const message = timestamp + method + requestPath + body;
const hmac = crypto.createHmac('sha256', secretKey);
return hmac.update(message).digest('base64');
}
async function getPositions() {
const apiKey = 'YOUR_API_KEY';
const secretKey = 'YOUR_SECRET_KEY';
const passphrase = 'YOUR_PASSPHRASE';
const timestamp = new Date().toISOString();
const method = 'GET';
const requestPath = '/api/v5/account/positions';
const body = '';
const signature = generateSignature(timestamp, method, requestPath, body, secretKey);
const response = await axios.get('https://www.okx.com' + requestPath, {
headers: {
'OK-ACCESS-KEY': apiKey,
'OK-ACCESS-SIGN': signature,
'OK-ACCESS-TIMESTAMP': timestamp,
'OK-ACCESS-PASSPHRASE': passphrase,
'Content-Type': 'application/json'
}
});
return response.data;
}
getPositions().then(data => console.log(data));
常见错误处理
错误码50113:签名验证失败
原因:签名计算错误或时间戳不准确
解决方法:
- 检查签名内容的拼接顺序(timestamp + method + requestPath + body)
- 确保时间戳格式为ISO 8601(如:2024-01-15T08:30:00.123Z)
- 验证Secret Key是否正确(注意不要有多余空格)
错误码50111:权限不足
原因:API密钥权限不足以访问该接口
解决方法:
- 检查API密钥是否开启了相应权限(如查询持仓需要”交易”权限)
- 重新生成具有足够权限的API密钥
错误码50112:IP地址不在白名单
原因:请求IP未添加到API密钥的白名单中
解决方法:
- 在API管理页面添加当前IP到白名单
- 或创建不绑定IP的API密钥(安全性较低,不推荐)
真实案例:某量化团队的API集成经验
2024年3月,一家量化交易团队在集成OKX API时遇到了间歇性的签名失败问题。经过排查发现,是服务器时间与OKX服务器时间相差超过30秒导致的。
解决方案:
- 使用NTP服务同步服务器时间
- 在代码中先调用
/api/v5/public/time获取OKX服务器时间 - 计算本地时间与服务器时间的偏移量,在生成签名时进行校正
实施后,签名成功率从92%提升至99.9%,大幅提高了策略的稳定性。
总结与行动建议
获取个人数据是API应用的基础,掌握签名机制是关键。建议您:
- 先用只读权限测试:熟悉流程后再开启交易权限
- 使用环境变量存储密钥:避免硬编码在代码中
- 启用IP白名单:增加额外的安全保护
- 处理好错误重试:网络波动时自动重试,但要设置最大重试次数
- 定期轮换密钥:建议每3-6个月更换一次API密钥
下一步,您可以尝试获取历史订单数据,或者结合WebSocket实时推送,构建完整的交易监控系统。
免责声明
本文章可能包含不适用于您所在地区的产品相关内容。本文仅致力于提供一般性信息,不对其中的任何事实错误或遗漏负责任。本文仅代表作者个人观点,不代表欧易的观点。 本文无意提供以下任何建议,包括但不限于:(i) 投资建议或投资推荐;(ii) 购买、出售或持有数字资产的要约或招揽;或 (iii) 财务、会计、法律或税务建议。 持有的数字资产 (包括稳定币) 涉及高风险,可能会大幅波动,甚至变得毫无价值。您应根据自己的财务状况仔细考虑交易或持有数字资产是否适合您。有关您具体情况的问题,请咨询您的法律/税务/投资专业人士。本文中出现的信息 (包括市场数据和统计信息,如果有) 仅供一般参考之用。尽管我们在准备这些数据和图表时已采取了所有合理的谨慎措施,但对于此处表达的任何事实错误或遗漏,我们不承担任何责任。 © 2025 OKX。本文可以全文复制或分发,也可以使用本文 100 字或更少的摘录,前提是此类使用是非商业性的。整篇文章的任何复制或分发亦必须突出说明:”本文版权所有 © 2025 OKX,经许可使用。”允许的摘录必须引用文章名称并包含出处,例如”文章名称,[作者姓名 (如适用)],© 2025 OKX”。部分内容可能由人工智能(AI)工具生成或辅助生成。不允许对本文进行衍生作品或其他用途。
展开
相关推荐

比特币下跌也能盈利?如何进行合约交易
随着以比特币为代表的数字货币市场规模的不断扩大,在现货交易之外逐步催生出形式多样的衍生品交易,来作为一种对冲风险的工具,其中最受关注的莫过于合约交易。 合约交易是什么? 合约是数字货币衍生品市场中最常见的交易合约形式。数字资产合约交易是指买卖双方约定在未来某个时间,按指定价格,对某种资产进行交易。
2026年1月16日

比复制策略更简单?在OKX一键跟单最强策略交易员,让交易员帮你赚钱
不管是在传统金融领域,还是在加密货币市场,策略交易都是交易体系中非常重要且关键的一种方式,当面临复杂的交易环境和极端的交易行情时,即使拥有扎实的理论技术知识和丰富的交易经历经验,也很容易错失交易时机,或者受到情绪影响做出错误判断和操作。而策略交易正是能够解决这些问题的有效工具。 交易工具有了,怎么使
2025年11月21日

五、策略交易系列课程——屯币宝
前言: 我们经常会有这样的猜想: 牛市中有很多大涨的数字资产,如果能够连续捕捉涨幅较大的币种,比如每月捕捉一个翻倍的数字资产,一年后你的资产就会变成2的12次方,即4096倍,这是非常惊人的,当然这也是几乎不可能完成的事情,因为我们很难连续抓住大涨的币种。 这也是很多用户会遇到的问题: 牛市中,虽然
2025年11月3日

哪些国家/地区不支持注册使用欧易
欧易目前不支持对下列地区的客户提供服务:部分美国领土,如 纽约、德克萨斯州、 波多黎各、美属萨摩亚、关岛、北马里亚纳群岛邦、美属维尔京群岛 (圣克罗伊岛,圣约翰岛和圣托马斯岛),古巴、伊朗、朝鲜、克里米亚、马来西亚、叙利亚、孟加拉国和玻利维亚。 有关详情,请参阅 欧易服务条款 。
2024年4月25日

快速了解欧易常用产品及功能
欧易(www.okx.com)是全球著名的数字资产服务平台之一,主要面向全球用户提供 比特币 、以太坊等数字资产的币币和衍生品交易服务,同时也和用户一同探索DeFi,DApp, NFT和GameFi的世界。 在欧易,您可以享受 币币 、合约等流畅的交易体验,第一时间关注热门领域/概念的代币信息,还有
2024年4月25日

零基础学K线 | 5 K线组合应用的重要性
涨跌有趋势,读懂价格语言; 买卖有信号,告别感觉交易。 一、看涨K线组合发关键位置 在本章的前两期我们讲解了K线看涨组合和看跌组合的应用,但这些组合不是在任何位置出现都有效。本节我们就来讲解组合出现位置的重要性。 看涨组合在哪些位置可以更好的发挥作用呢? 第一种情况:在一段明显的上涨走势中,临近的前
2024年4月25日
风险提示
加密货币交易涉及重大风险,交易者应充分认识:
-
市场波动风险:价格可能剧烈波动,导致投资损失。
-
杠杆风险:使用杠杆会放大收益和亏损,可能导致爆仓。
-
流动性风险:市场流动性不足可能导致无法及时平仓或滑点扩大。
-
技术风险:系统故障、网络延迟可能影响交易执行。
-
操作风险:误操作可能导致资金损失,务必谨慎操作。
-
安全风险:账户被盗、私钥泄露可能导致资产损失。
常见问题
新手应该如何开始交易?
建议从小额开始,先熟悉平台操作和交易规则,逐步增加投资。
如何控制交易风险?
设置止损、控制仓位、避免过度杠杆、分散投资。
交易手续费如何计算?
通常按交易金额的百分比收取,具体费率取决于VIP等级和交易类型。
如何选择交易策略?
根据风险承受能力、投资目标、市场行情选择适合的策略。
遇到问题如何联系客服?
可通过在线客服、工单系统、官方社交媒体等渠道联系。
如何保护账户安全?
启用2FA、使用强密码、不泄露私钥、警惕钓鱼网站。
交易失败怎么办?
检查账户余额、网络连接、订单参数,必要时联系客服。
如何提升交易技能?
学习交易知识、关注市场动态、总结交易经验、参加培训课程。
延伸阅读
- 交易基础知识
- 风险管理策略
- 交易工具使用
- 市场分析方法
- 高级交易策略
风险提示
加密货币交易涉及重大风险,交易者应充分认识:
-
市场波动风险:价格可能剧烈波动,导致投资损失。
-
杠杆风险:使用杠杆会放大收益和亏损,可能导致爆仓。
-
流动性风险:市场流动性不足可能导致无法及时平仓或滑点扩大。
-
技术风险:系统故障、网络延迟可能影响交易执行。
-
操作风险:误操作可能导致资金损失,务必谨慎操作。
-
安全风险:账户被盗、私钥泄露可能导致资产损失。
常见问题
新手应该如何开始交易?
建议从小额开始,先熟悉平台操作和交易规则,逐步增加投资。
如何控制交易风险?
设置止损、控制仓位、避免过度杠杆、分散投资。
交易手续费如何计算?
通常按交易金额的百分比收取,具体费率取决于VIP等级和交易类型。
如何选择交易策略?
根据风险承受能力、投资目标、市场行情选择适合的策略。
遇到问题如何联系客服?
可通过在线客服、工单系统、官方社交媒体等渠道联系。
如何保护账户安全?
启用2FA、使用强密码、不泄露私钥、警惕钓鱼网站。
交易失败怎么办?
检查账户余额、网络连接、订单参数,必要时联系客服。
如何提升交易技能?
学习交易知识、关注市场动态、总结交易经验、参加培训课程。
延伸阅读
- 交易基础知识
- 风险管理策略
- 交易工具使用
- 市场分析方法
- 高级交易策略



