API 教程(四) 获取个人数据

API 教程(四) 获取个人数据

OKX 教程团队
5 分钟阅读

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密钥

  1. 登录OKX官网,进入”个人中心 - API管理”
  2. 点击”创建API”,选择”交易API”
  3. 设置Passphrase(请务必记住,无法找回)
  4. 选择权限(建议先选”只读”进行测试)
  5. 绑定IP白名单(可选,但强烈推荐)
  6. 完成二次验证,获取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秒导致的。

解决方案

  1. 使用NTP服务同步服务器时间
  2. 在代码中先调用/api/v5/public/time获取OKX服务器时间
  3. 计算本地时间与服务器时间的偏移量,在生成签名时进行校正

实施后,签名成功率从92%提升至99.9%,大幅提高了策略的稳定性。

总结与行动建议

获取个人数据是API应用的基础,掌握签名机制是关键。建议您:

  1. 先用只读权限测试:熟悉流程后再开启交易权限
  2. 使用环境变量存储密钥:避免硬编码在代码中
  3. 启用IP白名单:增加额外的安全保护
  4. 处理好错误重试:网络波动时自动重试,但要设置最大重试次数
  5. 定期轮换密钥:建议每3-6个月更换一次API密钥

下一步,您可以尝试获取历史订单数据,或者结合WebSocket实时推送,构建完整的交易监控系统。

免责声明

本文章可能包含不适用于您所在地区的产品相关内容。本文仅致力于提供一般性信息,不对其中的任何事实错误或遗漏负责任。本文仅代表作者个人观点,不代表欧易的观点。 本文无意提供以下任何建议,包括但不限于:(i) 投资建议或投资推荐;(ii) 购买、出售或持有数字资产的要约或招揽;或 (iii) 财务、会计、法律或税务建议。 持有的数字资产 (包括稳定币) 涉及高风险,可能会大幅波动,甚至变得毫无价值。您应根据自己的财务状况仔细考虑交易或持有数字资产是否适合您。有关您具体情况的问题,请咨询您的法律/税务/投资专业人士。本文中出现的信息 (包括市场数据和统计信息,如果有) 仅供一般参考之用。尽管我们在准备这些数据和图表时已采取了所有合理的谨慎措施,但对于此处表达的任何事实错误或遗漏,我们不承担任何责任。 © 2025 OKX。本文可以全文复制或分发,也可以使用本文 100 字或更少的摘录,前提是此类使用是非商业性的。整篇文章的任何复制或分发亦必须突出说明:”本文版权所有 © 2025 OKX,经许可使用。”允许的摘录必须引用文章名称并包含出处,例如”文章名称,[作者姓名 (如适用)],© 2025 OKX”。部分内容可能由人工智能(AI)工具生成或辅助生成。不允许对本文进行衍生作品或其他用途。

展开

相关推荐

Forward Contracts vs. Futures Contracts What Are the Differences

比特币下跌也能盈利?如何进行合约交易

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

2026年1月16日

OKX Launches New 'Spot Copy Trading' Feature

比复制策略更简单?在OKX一键跟单最强策略交易员,让交易员帮你赚钱

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

2025年11月21日

thumbnail:strategic-trading-series-courses-5

五、策略交易系列课程——屯币宝

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

2025年11月3日

thumbnail:which-countries-do-not-support-registration-cn

哪些国家/地区不支持注册使用欧易

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

2024年4月25日

thumbnail:get-to-know-the-product

快速了解欧易常用产品及功能

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

2024年4月25日

thumbnail:zero-basic-to-learn-analysis-of-bitcoin5candlestick-patterns-identify-a-pattern-cn

零基础学K线 | 5 K线组合应用的重要性

涨跌有趋势,读懂价格语言; 买卖有信号,告别感觉交易。 一、看涨K线组合发关键位置 在本章的前两期我们讲解了K线看涨组合和看跌组合的应用,但这些组合不是在任何位置出现都有效。本节我们就来讲解组合出现位置的重要性。 看涨组合在哪些位置可以更好的发挥作用呢? 第一种情况:在一段明显的上涨走势中,临近的前

2024年4月25日

风险提示

加密货币交易涉及重大风险,交易者应充分认识:

  1. 市场波动风险:价格可能剧烈波动,导致投资损失。

  2. 杠杆风险:使用杠杆会放大收益和亏损,可能导致爆仓。

  3. 流动性风险:市场流动性不足可能导致无法及时平仓或滑点扩大。

  4. 技术风险:系统故障、网络延迟可能影响交易执行。

  5. 操作风险:误操作可能导致资金损失,务必谨慎操作。

  6. 安全风险:账户被盗、私钥泄露可能导致资产损失。

常见问题

新手应该如何开始交易?

建议从小额开始,先熟悉平台操作和交易规则,逐步增加投资。

如何控制交易风险?

设置止损、控制仓位、避免过度杠杆、分散投资。

交易手续费如何计算?

通常按交易金额的百分比收取,具体费率取决于VIP等级和交易类型。

如何选择交易策略?

根据风险承受能力、投资目标、市场行情选择适合的策略。

遇到问题如何联系客服?

可通过在线客服、工单系统、官方社交媒体等渠道联系。

如何保护账户安全?

启用2FA、使用强密码、不泄露私钥、警惕钓鱼网站。

交易失败怎么办?

检查账户余额、网络连接、订单参数,必要时联系客服。

如何提升交易技能?

学习交易知识、关注市场动态、总结交易经验、参加培训课程。

延伸阅读

  • 交易基础知识
  • 风险管理策略
  • 交易工具使用
  • 市场分析方法
  • 高级交易策略

风险提示

加密货币交易涉及重大风险,交易者应充分认识:

  1. 市场波动风险:价格可能剧烈波动,导致投资损失。

  2. 杠杆风险:使用杠杆会放大收益和亏损,可能导致爆仓。

  3. 流动性风险:市场流动性不足可能导致无法及时平仓或滑点扩大。

  4. 技术风险:系统故障、网络延迟可能影响交易执行。

  5. 操作风险:误操作可能导致资金损失,务必谨慎操作。

  6. 安全风险:账户被盗、私钥泄露可能导致资产损失。

常见问题

新手应该如何开始交易?

建议从小额开始,先熟悉平台操作和交易规则,逐步增加投资。

如何控制交易风险?

设置止损、控制仓位、避免过度杠杆、分散投资。

交易手续费如何计算?

通常按交易金额的百分比收取,具体费率取决于VIP等级和交易类型。

如何选择交易策略?

根据风险承受能力、投资目标、市场行情选择适合的策略。

遇到问题如何联系客服?

可通过在线客服、工单系统、官方社交媒体等渠道联系。

如何保护账户安全?

启用2FA、使用强密码、不泄露私钥、警惕钓鱼网站。

交易失败怎么办?

检查账户余额、网络连接、订单参数,必要时联系客服。

如何提升交易技能?

学习交易知识、关注市场动态、总结交易经验、参加培训课程。

延伸阅读

  • 交易基础知识
  • 风险管理策略
  • 交易工具使用
  • 市场分析方法
  • 高级交易策略

进阶交易策略

在我们的合作网站学习更多进阶交易策略和市场分析

学习交易策略

相关文章