您现在的位置是: 首页 >  教育

OKX API使用指南:快速上手交易,提升交易效率!

时间:2025-03-05 11:59:27 分类:教育 浏览:75

欧易交易所 OKX 接口使用

简介

OKX 提供了一套功能强大的应用程序编程接口(API),允许开发者以编程方式访问和管理其交易账户,获取实时和历史市场数据,执行交易操作,并自动化交易策略。这套API覆盖了从现货交易到衍生品交易的各种功能,为量化交易者、算法交易开发者和第三方应用程序集成商提供了广泛的可能性。本文将深入探讨如何安全有效地使用 OKX API,包括详细的身份验证流程、常用接口的具体使用方法,例如获取账户余额、下单、查询订单状态,以及在使用API时应注意的关键安全性和限制。

身份验证

在使用 OKX API 之前,必须先创建并妥善管理 API 密钥。在您的 OKX 账户中,导航至 API 管理页面,您可以在此生成 API 密钥(API Key)、密钥(Secret Key)和密码短语(Passphrase)。请务必采取严格的安全措施来存储这些凭证,因为任何未经授权的访问都可能导致资金损失或其他安全风险。请将它们视为高度敏感的信息,避免泄露给任何第三方。

OKX API 提供了两种主要的身份验证方法:

  • HMAC SHA256 签名: 这是最常见的身份验证方式,广泛应用于大多数 API 请求。为了使用此方法,您需要使用您的 API 密钥(API Key)和密钥(Secret Key)结合请求的内容生成一个 HMAC SHA256 签名。然后,将此签名、API 密钥(API Key)和时间戳(timestamp)作为请求头的一部分发送给 OKX API 服务器。时间戳的作用是防止重放攻击,确保请求的时效性。正确的签名验证是API安全性的关键保障。
  • 密码短语: 密码短语主要用于执行一些需要更高安全级别的特定操作,例如从您的 OKX 账户提币(Withdrawal)。在提币请求中,您需要提供正确的密码短语,以验证您的身份并授权该操作。请记住,密码短语与API 密钥和密钥同等重要,必须妥善保管。

HMAC SHA256 签名示例 (Python)

在加密货币交易和API交互中,HMAC SHA256 签名是一种常用的安全认证机制,用于验证请求的完整性和真实性。以下 Python 代码展示了如何生成一个符合OKX API规范的 HMAC SHA256 签名。

import hashlib
import hmac
import time
import base64

这些语句导入了必要的 Python 库: hashlib 提供哈希算法, hmac 用于生成 HMAC 签名, time 用于获取时间戳, base64 用于对签名进行 Base64 编码。

def generate_signature(timestamp, method, request_path, body, secret_key):
定义了一个名为 generate_signature 的函数,该函数接收五个参数:

timestamp : Unix 时间戳,表示请求发送的时间,单位为秒。确保时间戳与服务器时间同步,否则可能导致签名验证失败。
method : HTTP 请求方法,如 "GET"、"POST"、"PUT" 或 "DELETE",必须大写。
request_path : API 请求的相对路径,例如 "/api/v5/market/tickers"。确保路径以斜杠开头,并且与API文档中定义的路径完全一致。
body : 请求体,对于 GET 请求,通常为空字符串;对于 POST/PUT 请求,包含 JSON 格式的请求数据。注意请求体需要是字符串格式。
secret_key : 你的 API 密钥,用于生成 HMAC 签名。务必妥善保管密钥,避免泄露。

函数文档字符串提供了对函数功能的详细说明以及参数的解释。

message = str(timestamp) + method + request_path + body
将时间戳、HTTP 方法、请求路径和请求体拼接成一个字符串,作为 HMAC 算法的输入。拼接顺序必须严格按照API文档的要求。
hmac_obj = hmac.new(secret_key.encode('utf-8'), message.encode('utf-8'), digestmod=hashlib.sha256)
创建一个 HMAC 对象,使用 SHA256 哈希算法。 secret_key message 都需要进行 UTF-8 编码。
signature = base64.b64encode(hmac_obj.digest())
计算 HMAC 签名,并将结果进行 Base64 编码。Base64 编码后的签名更易于在 HTTP 请求头中传递。
return signature.decode('utf-8')
将 Base64 编码后的签名转换为 UTF-8 字符串,并返回。

示例

在进行与加密货币交易所的API交互时,身份验证至关重要。 以下代码段展示了如何构建一个请求,其中包含API密钥、密钥和签名,用于安全地访问受保护的资源。

api_key = "YOUR_API_KEY"

YOUR_API_KEY 替换为你从交易所获得的实际API密钥。 此密钥用于标识你的帐户并授权对API的访问。

secret_key = "YOUR_SECRET_KEY"

YOUR_SECRET_KEY 应该替换为你对应的密钥。密钥应被严格保密,绝不能泄露给他人,因为它允许对你的账户进行访问。

timestamp = str(int(time.time()))

时间戳是当前时间的整数表示,通常以自Unix纪元(1970年1月1日00:00:00 UTC)以来的秒数为单位。 时间戳用于防止重放攻击,确保请求的时效性。使用 time.time() 获取当前时间,将其转换为整数,然后转换为字符串。

method = "GET"

HTTP方法指定了对服务器执行的动作类型。 在此示例中, GET 方法用于从服务器检索信息。 其他常见方法包括 POST (用于创建新资源)、 PUT (用于更新现有资源)和 DELETE (用于删除资源)。

request_path = "/api/v5/market/tickers?instId=BTC-USDT"

request_path 是API端点的路径,指定要访问的特定资源。 在此示例中,它请求BTC-USDT交易对的市场行情数据。 查询字符串 ?instId=BTC-USDT 用于传递参数给API,以进一步指定请求的数据。 instId 代表交易对的ID。

body = ""

对于GET请求,请求体通常为空。对于POST或PUT请求,请求体将包含要发送到服务器的数据,通常以JSON格式表示。如果使用POST方式,则需要将相关数据以JSON格式放在Body里。

signature = generate_signature(timestamp, method, request_path, body, secret_key)

签名是通过使用密钥、时间戳、HTTP方法、请求路径和请求体对消息进行加密哈希处理来创建的。 签名用于验证请求的真实性和完整性,确保请求未被篡改。 generate_signature 函数 (未在此处定义) 负责执行签名生成过程。具体的签名算法取决于不同的交易所,常见的包括HMAC-SHA256算法。在实际应用中,需要根据交易所提供的文档来实现此函数。

构造请求头

在与OKX API交互时,构建正确的请求头至关重要,它包含了认证信息,用于验证请求的合法性。以下展示了如何使用Python字典构造必要的头部信息:

headers = {
    "OK-ACCESS-KEY": api_key,
    "OK-ACCESS-SIGN": signature,
    "OK-ACCESS-TIMESTAMP": timestamp,
    "OK-ACCESS-PASSPHRASE": "YOUR_PASSPHRASE"  # 如果账户启用了密码短语,则需要添加此项
}

其中,各个字段的含义如下:

  • OK-ACCESS-KEY : 你的API密钥,用于标识你的账户。务必妥善保管,避免泄露。
  • OK-ACCESS-SIGN : 使用密钥和请求参数生成的签名,用于验证请求的完整性和来源。生成签名时,需要使用特定的算法(例如HMAC-SHA256)对请求方法、请求路径、时间戳和请求体进行签名。详细签名生成方法请参考OKX官方API文档。
  • OK-ACCESS-TIMESTAMP : 请求发送时的时间戳,以秒为单位的Unix时间戳。时间戳的有效期通常很短,以防止重放攻击。
  • OK-ACCESS-PASSPHRASE : 你的账户密码短语,如果你的账户启用了密码短语,则必须包含此项。密码短语可以增强账户的安全性。

使用Python的 requests 库发送带有请求头的GET请求的示例代码如下:

import requests
import  #建议import ,方便处理返回数据

url = "https://www.okx.com" + request_path
response = requests.get(url, headers=headers)

# 检查HTTP状态码,确保请求成功
if response.status_code == 200:
    # 使用()方法解析JSON响应
    try:
        response_ = response.()
        print(.dumps(response_, indent=4)) # 使用.dumps格式化输出,更易阅读
    except .JSONDecodeError:
        print("Error decoding JSON response:", response.text)
else:
    print(f"Request failed with status code: {response.status_code}")
    print(response.text) # 打印响应内容,有助于调试

上述代码首先构建完整的URL,然后调用 requests.get() 方法发送GET请求,并将构造好的请求头传递给 headers 参数。 response 对象包含了服务器返回的响应,可以通过 response.status_code 属性获取HTTP状态码,通过 response.text 属性获取响应内容。

特别注意:在实际应用中,请替换 api_key , signature , timestamp YOUR_PASSPHRASE 为你的实际值。签名生成的过程比较复杂,请务必参考OKX官方API文档中关于签名的详细说明。

常用 API 接口

OKX API 提供了丰富的接口集,旨在满足不同用户的交易和数据需求。这些接口覆盖了从现货交易到衍生品交易,以及账户管理和市场数据获取等多个方面。了解并熟练运用这些接口,对于进行自动化交易、量化分析以及构建个性化交易策略至关重要。以下是一些常用接口及其详细使用方法:

1. 获取市场数据

  • /api/v5/market/tickers: 获取所有交易对的实时行情数据,这是了解市场整体动态的关键入口。通过该接口,您可以快速掌握不同交易对的价格波动情况。
    • 参数:
      • instId : 交易对 ID,它是识别特定交易市场的基础。例如, BTC-USDT 代表比特币与 USDT 的交易对, ETH-BTC 代表以太坊与比特币的交易对。准确指定 instId 是获取正确数据的首要步骤。
    • 返回值:包含交易对最新价格、24 小时成交量、最高价、最低价、开盘价等详细信息的列表。利用这些信息,您可以计算出价格变化幅度、评估市场活跃度,并制定相应的交易策略。 这些实时数据是进行技术分析和基本面分析的重要依据。
  • /api/v5/market/candles: 获取指定交易对的历史 K 线数据,用于分析价格趋势和波动规律。K 线图是技术分析中常用的工具,它可以直观地展示一段时间内的开盘价、收盘价、最高价和最低价。
    • 参数:
      • instId : 交易对 ID,用于指定要查询的交易对,与 /api/v5/market/tickers 接口中的 instId 含义相同。
      • bar : K 线周期,定义了每根 K 线代表的时间跨度。常用的周期包括 1m (1 分钟)、 5m (5 分钟)、 1h (1 小时)、 1d (1 天) 等。选择合适的 K 线周期取决于您的交易策略和时间框架。 更短的周期适合短线交易,更长的周期适合长线投资。
      • limit : 返回 K 线数量,控制每次请求返回的数据量。默认值为 100,最大值为 500。通过调整 limit 参数,您可以获取更长时间的历史数据,从而更全面地分析价格走势。 请注意,每次请求返回的数据量有限制,如果需要更多数据,可能需要多次请求并进行数据合并。
    • 返回值:包含一系列 K 线数据点的列表,每个数据点通常包含开盘价、收盘价、最高价、最低价、成交量和时间戳等信息。 通过分析 K 线图,可以识别各种技术形态,例如头肩顶、双底、三角形等,从而预测价格未来的走势。
  • /api/v5/market/depth: 获取指定交易对的实时深度数据,也称为订单簿数据。订单簿反映了市场上买单和卖单的分布情况,是了解市场供需关系的重要途径。
    • 参数:
      • instId : 交易对 ID,指定要查询的交易对。与前述接口中的 instId 含义相同。
      • limit : 返回的买单和卖单的数量,控制订单簿的深度。默认值为 20,最大值为 400。更大的 limit 值可以提供更全面的订单簿信息,但也会增加数据传输量。分析订单簿的深度可以帮助您判断市场的支撑位和阻力位,并预测价格的短期波动。
    • 返回值:包含买单和卖单数据的列表。每个订单通常包含价格和数量信息。买单数据按照价格从高到低排列,卖单数据按照价格从低到高排列。通过分析订单簿数据,您可以观察到市场上买卖力量的对比情况,判断价格未来的走势。例如,如果买单数量远大于卖单数量,则可能预示着价格上涨;反之,则可能预示着价格下跌。

2. 交易相关接口

  • /api/v5/trade/order: 下单。允许用户创建新的交易订单。
    • 参数:
      • instId : 交易对 ID。指定要交易的加密货币交易对,例如 BTC-USDT。
      • tdMode : 交易模式。定义交易的类型 (cash: 现货交易,直接买卖加密货币; cross: 全仓杠杆交易,使用账户所有可用资金作为保证金; isolated: 逐仓杠杆交易,为特定交易对分配特定金额的保证金; sim: 模拟交易盘,用于测试和学习)。
      • side : 买卖方向。指示订单是买入还是卖出 (buy: 买入,增加持仓; sell: 卖出,减少持仓)。
      • ordType : 订单类型。定义订单执行方式 (market: 市价单,立即以当前市场最佳价格执行; limit: 限价单,以指定价格或更优价格执行; post_only: 只挂单,如果订单会立即成交,则会被取消,用于确保Maker手续费; fok: Fill or Kill,立即全部成交,否则取消; ioc: Immediate or Cancel,立即成交部分订单,剩余未成交部分取消)。
      • sz : 数量。指定要买入或卖出的加密货币数量。
      • px : 价格。指定限价单的价格,只有当市场价格达到或超过此价格时,订单才会被执行(仅限限价单使用)。
      • clOrdId : 客户端订单ID。用户自定义的订单ID,方便用户追踪订单状态。(可选)
      • tag : 订单标签。用户自定义的订单标签,方便用户进行订单管理和统计。(可选)
    • 返回值: 包含订单 ID 等信息的对象。例如订单ID( ordId ),客户端订单ID( clOrdId ),订单状态( state )等等。用于跟踪订单执行状态。
  • /api/v5/trade/cancel-order: 撤销订单。允许用户取消尚未完全成交的订单。
    • 参数:
      • instId : 交易对 ID。指定要撤销订单的交易对。
      • ordId : 订单 ID。指定要撤销的订单的唯一标识符。
      • clOrdId : 客户端订单ID。指定要撤销订单的客户端订单ID。(可选)
    • 返回值: 包含撤销订单结果信息的对象。例如订单ID( ordId ), 客户端订单ID( clOrdId ), 撤销结果( sCode , sMsg )等等,指示订单是否成功撤销。
  • /api/v5/trade/orders-pending: 获取未成交订单列表。允许用户查询当前所有未完全成交的挂单。
    • 参数:
      • instId : 交易对 ID。指定要查询的交易对。如果为空,则返回所有交易对的未成交订单。
      • limit : 返回订单数量。指定每次请求返回的订单数量(默认 100,最大 100)。
      • after : 分页参数。返回在此订单ID之后的订单列表。(可选)
      • before : 分页参数。返回在此订单ID之前的订单列表。(可选)
    • 返回值: 包含未成交订单信息的列表。列表中包含每个订单的详细信息,例如订单ID( ordId ),交易对( instId ),价格( px ),数量( sz ),订单状态( state )等等。

3. 账户相关接口

  • /api/v5/account/balance: 获取账户余额。此接口允许用户查询指定币种在账户中的余额信息。
    • 参数:
      • ccy : 币种。指定要查询余额的币种,例如:USDT、BTC、ETH。该参数区分大小写,请务必提供正确的币种代码。
    • 返回值: 返回一个列表,其中包含账户余额信息。列表中通常会包含可用余额(可用于交易的部分)、冻结余额(暂时不能用于交易的部分)以及总余额等详细数据。具体字段名称和含义请参考API文档。返回值的结构通常是JSON格式,方便解析和使用。
  • /api/v5/asset/transfer: 资金划转。该接口用于在不同账户之间转移资金,例如从交易账户划转到资金账户,或者从资金账户划转到挖矿账户等。
    • 参数:
      • ccy : 币种。指定要划转的币种,例如 USDT。
      • amt : 数量。指定要划转的数量。注意精度问题,应与交易所要求的最小交易单位保持一致。
      • from : 从哪个账户。指定资金划出的账户类型。可能的账户类型包括:交易账户、资金账户、挖矿账户等。具体数值和代码请参考API文档。
      • to : 到哪个账户。指定资金划入的账户类型。与 from 参数一样,需要提供正确的账户类型代码。
      • type : 划转类型。用于进一步区分划转的类型,例如内部划转、提现等。具体数值和代码请参考API文档。
    • 返回值: 返回一个对象,其中包含划转结果信息。该对象通常会包含一个交易ID,用于追踪划转的状态。如果划转成功,会返回成功的标识;如果划转失败,会返回错误代码和错误信息,方便用户进行调试。同样,返回值通常是JSON格式。

注意事项

  • 频率限制: OKX API 为了保障系统稳定性和公平性,对请求频率进行了严格限制。超出频率限制会导致请求被服务器拒绝,返回错误代码。因此,在编写API调用程序时,务必仔细研读 OKX API 官方文档,特别是关于不同接口的频率限制说明。务必实现合理的频率控制机制,例如使用令牌桶算法或漏桶算法来平滑请求发送速率,避免触发频率限制。同时,也要注意区分不同类型的API接口,例如公共接口和私有接口,它们的频率限制可能有所不同。
  • 错误处理: 在使用 OKX API 的过程中,API 请求并非总是成功,可能会由于各种原因(例如网络问题、参数错误、服务器维护等)返回错误。因此,必须对 API 响应进行全面的错误检查。通过检查 API 响应中的 HTTP 状态码、错误代码和错误信息,可以判断请求是否成功以及失败的原因。针对不同的错误类型,需要采取不同的处理策略,例如重试机制、参数调整、日志记录等。完善的错误处理机制能够提高程序的健壮性和稳定性,避免因 API 错误而导致程序崩溃或数据丢失。
  • 安全: API 密钥和密码短语是访问 OKX API 的重要凭证,必须妥善保管,防止泄露。一旦泄露,攻击者可能会利用这些凭证进行非法操作,例如盗取资产、篡改数据等。强烈建议不要将 API 密钥和密码短语硬编码到代码中,这是一种非常不安全的做法。应该使用环境变量或其他安全的方式存储这些敏感信息,例如使用密钥管理服务(KMS)或硬件安全模块(HSM)。还可以考虑使用 IP 白名单来限制 API 密钥的使用范围,进一步提高安全性。定期更换 API 密钥也是一个有效的安全措施。
  • API 版本: OKX API 会不断更新迭代,推出新的功能和改进,同时也会修复一些潜在的 Bug。因此,请务必关注 OKX API 的最新版本,并及时更新你的代码。使用过时的 API 版本可能会导致程序无法正常工作,或者无法使用最新的功能。仔细阅读 API 文档的更新日志,了解新版本的特性和变更,并根据需要调整你的代码。同时,也要注意 API 版本的兼容性,确保升级后的代码能够与现有的系统兼容。
  • 模拟交易: 在将你的 API 交易程序部署到真实环境中之前,强烈建议先在 OKX 的模拟交易环境中进行充分的测试。模拟交易环境提供了一个与真实环境类似的交易平台,但使用的是虚拟资金。你可以在模拟交易环境中测试你的交易策略、风控机制和错误处理逻辑,而无需承担真实资金的风险。通过模拟交易,可以发现并修复潜在的问题,确保你的程序在真实环境中能够稳定可靠地运行。
  • IP 限制: 为了增强账户安全性,OKX 允许用户将 API 密钥与特定的 IP 地址绑定。这意味着只有来自这些指定 IP 地址的请求才会被允许。 如果你的应用部署在具有固定公网 IP 地址的服务器上,强烈建议配置 IP 限制。你可以在 OKX API 管理界面中添加或删除允许的 IP 地址。如果需要频繁更改IP, 则不建议开启IP限制。
  • WebSocket API: 除了 REST API 之外,OKX 还提供了 WebSocket API,用于实时推送市场数据、订单簿更新、交易信息等。WebSocket API 与 REST API 的使用方式有所不同。REST API 是基于请求-响应模式,而 WebSocket API 则需要建立持久的 WebSocket 连接,并订阅感兴趣的频道。通过 WebSocket API,你可以实时获取最新的市场数据,从而更快地响应市场变化。务必阅读OKX的WebSocket API文档,了解连接建立、消息订阅和数据格式等方面的细节。同时,请注意维护WebSocket连接的稳定性,例如使用心跳机制来检测连接是否断开,并自动重连。

错误码及处理

OKX API 响应包含一个 code 字段,用于指示请求的处理状态。通过分析这个 code ,开发者可以快速定位问题并采取相应的措施。常见的错误码及其详细说明如下:

  • 50001 : 请求参数错误。表示API请求中提供的参数不符合API的规范或要求。 开发者应仔细检查请求参数的类型、格式、取值范围以及必填字段是否完整。例如,时间戳格式不正确,交易数量超出限制,或缺少必要的身份验证参数等。
  • 50002 : 签名验证失败。通常由于以下原因导致:API密钥(API Key)或密钥(Secret Key)配置错误、签名算法实现不正确、时间戳过期或请求参数被篡改。需要检查API密钥和密钥配置是否正确,签名算法是否与OKX官方文档一致,并确保时间戳的准确性和请求参数的完整性,防止在传输过程中被篡改。为了进一步调试,可以打印签名字符串进行对比,确保与预期一致。
  • 50003 : 频率限制。为了保护API的稳定性和公平性,OKX对API请求的频率进行了限制。当请求频率超过限制时,会返回此错误码。开发者应实施频率控制策略,例如使用队列或令牌桶算法来平滑请求,避免突发的高并发请求。可以参考OKX官方文档了解不同API的频率限制,并根据实际情况进行调整。
  • 60011 : 账户余额不足。当进行交易或提币操作时,账户余额不足以支付交易费用或提币金额时,会返回此错误码。需要检查账户余额,并确保有足够的资金来完成操作。如果需要,可以充值或减少交易/提币的数量。
  • 60012 : 订单不存在。表示尝试操作的订单在OKX系统中不存在。可能的原因包括订单ID错误、订单已被取消或已完全成交。需要验证订单ID的正确性,并确保订单状态是可操作的状态。可以通过查询订单接口确认订单是否存在及其当前状态。

针对不同的错误码,你需要采取相应的处理策略。例如,对于参数错误,应仔细检查并修正参数;对于签名验证失败,应重新生成签名并确保其有效性;对于频率限制,应增加请求间隔或使用更合理的请求策略;对于余额不足,应充值或调整交易/提币金额;对于订单不存在,应检查订单ID或订单状态。 实施完善的错误处理机制是确保API集成稳定性和可靠性的关键。

示例:获取 BTC-USDT 最新价格 (Python)

本示例演示如何通过 Python 脚本与 OKX API 交互,实时获取 BTC-USDT 交易对的最新成交价格。为了安全地访问 API,脚本中使用了 API 密钥、密钥以及时间戳签名进行身份验证。

import requests import time import hmac import hashlib import base64

这段代码引入了必要的 Python 库。 requests 库用于发送 HTTP 请求, time 库用于获取当前时间戳, hmac hashlib 用于生成 API 请求签名, base64 用于编码签名。

def get_btc_price(): """ 获取 BTC-USDT 最新价格。

此函数定义了获取 BTC-USDT 最新价格的逻辑。该函数构造并发送一个 API 请求,然后解析响应以提取最新的价格数据。

Returns: BTC-USDT 最新价格 (浮点数),如果请求失败,返回 None。 """ api_key = "YOUR_API_KEY" secret_key = "YOUR_SECRET_KEY" timestamp = str(int(time.time())) method = "GET" request_path = "/api/v5/market/tickers?instId=BTC-USDT" body = ""

这里定义了 API 密钥 ( api_key )、密钥 ( secret_key )、时间戳 ( timestamp )、HTTP 方法 ( method )、API 请求路径 ( request_path ) 以及请求体 ( body )。 请务必用您自己的 API 密钥和密钥替换 YOUR_API_KEY YOUR_SECRET_KEY 。 请求路径指定了要查询的交易对 (BTC-USDT)。

signature = generate_signature(timestamp, method, request_path, body, secret_key)

该行调用 generate_signature 函数生成请求签名。签名用于验证请求的真实性和完整性,防止恶意篡改。

def generate_signature(timestamp, method, request_path, body, secret_key): message = timestamp + method + request_path + body mac = hmac.new(secret_key.encode('utf-8'), message.encode('utf-8'), hashlib.sha256) d = mac.digest() return base64.b64encode(d).decode()

generate_signature 函数使用 HMAC-SHA256 算法生成签名。它将时间戳、HTTP 方法、请求路径和请求体连接成一个字符串,然后使用密钥对其进行哈希处理。最终,将哈希值进行 Base64 编码。

headers = { "OK-ACCESS-KEY": api_key, "OK-ACCESS-SIGN": signature, "OK-ACCESS-TIMESTAMP": timestamp, "OK-ACCESS-PASSPHRASE": "YOUR_PASSPHRASE" # 如果需要,添加密码短语 }

这段代码定义了 HTTP 请求头。请求头包含了 API 密钥 ( OK-ACCESS-KEY )、签名 ( OK-ACCESS-SIGN )、时间戳 ( OK-ACCESS-TIMESTAMP ) 以及密码短语 ( OK-ACCESS-PASSPHRASE )。 并非所有 API 都需要密码短语,根据您账户的安全设置决定是否需要提供。请将 YOUR_PASSPHRASE 替换为您自己的密码短语,如果适用。

url = "https://www.okx.com" + request_path response = requests.get(url, headers=headers)

这里构造了完整的 API 请求 URL,并使用 requests.get 函数发送 GET 请求。请求头被添加到请求中,以便 API 可以验证客户端的身份。

if response.status_code == 200: data = response.() if data["code"] == "0": return float(data["data"][0]["last"]) else: print(f"API 错误: {data['code']} - {data['msg']}") return None else: print(f"HTTP 错误: {response.status_code}") return None

此部分代码处理 API 响应。检查 HTTP 状态码是否为 200 (成功)。如果请求成功,则解析 JSON 响应并检查 API 返回的错误代码。如果 code 为 "0",则提取 last 字段的值 (最新价格) 并将其转换为浮点数。如果 API 返回错误代码,则打印错误信息。如果 HTTP 状态码不是 200,则打印 HTTP 错误信息。

if __name__ == "__main__": price = get_btc_price() if price: print(f"BTC-USDT 最新价格: {price}") else: print("获取 BTC-USDT 价格失败。")

这段代码确保只有在直接运行脚本时才执行 get_btc_price 函数。如果成功获取到价格,则打印价格。否则,打印错误信息。

这个例子展示了如何使用 Python 和 OKX API 获取 BTC-USDT 的最新价格。 你需要替换 YOUR_API_KEY YOUR_SECRET_KEY 为你自己的 API 密钥和密钥。 请确保安装了 requests pip install requests . 这个例子也包含了错误处理,以便你可以更好地理解 API 的响应。 记住,安全地保存你的 API 密钥至关重要。

文章版权声明:除非注明,否则均为链链通原创文章,转载或复制请以超链接形式并注明出处。
相关推荐