Upbit API接口获取指南:数据分析与量化交易

Upbit API 接口获取教程

Upbit 作为韩国领先的加密货币交易所之一,为开发者提供了强大的 API 接口,方便他们进行数据分析、量化交易以及构建相关应用。本文将详细介绍如何获取和使用 Upbit API 接口,帮助开发者快速上手。

1. 注册 Upbit 账号并完成身份验证

要使用 Upbit API,您需要一个经过验证的 Upbit 账户。请访问 Upbit 官方网站( https://upbit.com )开始注册流程。注册过程涉及提供基本信息,例如有效的电子邮件地址和安全的密码。请务必选择一个强密码,并妥善保管,以确保账户安全。

成功注册后,下一步是完成强制性的身份验证(KYC)流程。Upbit 严格遵守反洗钱(AML)法规,因此要求所有用户完成身份验证。此过程通常包括上传政府颁发的身份证明文件(例如护照、身份证或驾照)的清晰照片或扫描件,并可能需要进行实时的面部识别。请确保您提供的身份证明文件有效且信息清晰可读。请仔细按照 Upbit 提供的指南操作,并提供真实、准确且最新的信息。未能提供所需信息或提供不准确的信息可能会导致验证失败或账户受限。身份验证过程可能需要几个工作日才能完成,具体取决于 Upbit 的验证队列和您提供的文件的清晰度。请耐心等待 Upbit 的验证结果通知。只有通过身份验证后,您才能完全访问 Upbit API 的所有功能。

2. 创建 API Key

完成身份验证之后,下一步是生成你的专属 API Key,这将允许你以编程方式访问 Upbit 的交易功能。

  1. 登录 Upbit 账号: 使用你在 Upbit 注册时设置的邮箱地址(或用户名)和密码,安全地登录 Upbit 官方网站。务必确保你访问的是官方网站,以防止钓鱼攻击。启用两步验证(2FA)能进一步增强账户安全性。
  2. 进入 API 管理页面: 成功登录后,你需要找到 API 管理页面。 通常可以在用户设置、个人中心或账户信息等相关区域找到 "API 관리" (API 管理) 选项。 Upbit 官网界面可能会不定期更新,如果直接查找困难,建议利用网站内部的搜索功能,输入 "API" 或 "API 관리" 进行搜索。
  3. 创建 API Key: 在 API 管理页面,你将看到一个 "API 키 발급" (API Key 发放) 或类似的按钮。 点击此按钮,系统将引导你完成 API Key 的创建流程。 在创建过程中,你可能需要填写 API Key 的用途说明,并设置访问权限。 请务必仔细阅读并理解不同权限的含义,只授予 API Key 所需的最小权限,例如只允许交易,禁止提现,以降低潜在的安全风险。
设置 API 权限: 在创建 API Key 之前,需要设置 API 的权限。 Upbit 提供了不同的权限选项,例如:
  • 查询账户信息 (자산 조회): 允许 API 查询你的账户余额、交易历史等信息。
  • 下单交易 (주문): 允许 API 进行买入和卖出操作。
  • 提币 (출금): 允许 API 将加密货币从你的 Upbit 账户提现。 请注意:为了安全起见,除非绝对必要,否则不要开启提币权限。 即使开启了提币权限,也需要设置提币白名单,限制 API 只能提现到指定的地址。
  • 设置 IP 白名单 (IP 접근 제한): 为了进一步提高安全性,建议设置 IP 白名单。 只有在白名单中的 IP 地址才能访问你的 API。 可以指定一个或多个 IP 地址。 如果你的应用程序运行在服务器上,可以将服务器的 IP 地址添加到白名单中。 如果你的应用程序运行在本地,可以将你的公网 IP 地址添加到白名单中。 可以使用诸如 curl ifconfig.me 等命令查询你的公网 IP 地址。
  • 阅读并同意 API 使用条款: 在创建 API Key 之前,需要仔细阅读 Upbit 的 API 使用条款,并勾选同意。
  • 提交申请: 完成以上设置后,点击 "확인" (确认) 按钮,提交 API Key 的申请。
  • 3. 获取 API Key 和 Secret Key

    API Key 申请获得批准后,Upbit 交易所将自动生成一个 API Key 和一个 Secret Key。 这两个密钥至关重要,是访问 Upbit API 的唯一凭证,请务必采取一切必要措施妥善保管,切勿泄露给任何第三方。一旦泄露,可能会导致您的账户资金被盗或被非法操作。

    请注意,Upbit 不会主动向您索取 API Key 和 Secret Key。如果有人声称是 Upbit 官方人员并要求您提供这些密钥,请立即提高警惕,切勿相信。

    • API Key (액세스 키): 用于唯一标识您的身份。 每一个API Key 都与特定的Upbit账户绑定,Upbit 通过 API Key 来识别请求的来源,并根据您的账户权限来授权 API 请求。
    • Secret Key (시크릿 키): 用于生成数字签名,对您的 API 请求进行身份验证,确保请求的真实性和完整性。 Secret Key 必须保密,任何拥有 Secret Key 的人都可以伪造您的 API 请求。务必不要将 Secret Key 存储在不安全的地方,例如公共的代码仓库或聊天记录中。

    为了确保您的 API Key 和 Secret Key 的安全,强烈建议您:

    1. 将 API Key 和 Secret Key 存储在安全的地方,例如加密的数据库或密钥管理系统。
    2. 定期更换 API Key 和 Secret Key,以防止密钥泄露带来的风险。
    3. 启用 Upbit 提供的双重身份验证(2FA),以增加账户的安全性。
    4. 限制 API Key 的权限,只授予必要的访问权限,避免不必要的风险。
    5. 监控 API Key 的使用情况,及时发现异常行为。

    通过以上措施,您可以最大限度地保护您的 API Key 和 Secret Key 的安全,从而保障您的 Upbit 账户的安全。

    请注意:Secret Key 非常重要,一旦泄露,其他人就可以使用你的 API Key 进行非法操作。 不要将 Secret Key 存储在不安全的地方,不要将其泄露给任何人。

    4. 使用 API 密钥进行身份验证

    与 Upbit API 交互,需要通过签名请求来验证您的身份并确保数据的完整性。此过程涉及使用 API 密钥(包括 Access Key 和 Secret Key)对请求进行加密签名,以便 Upbit 服务器能够识别和信任您的请求。以下是详细步骤:

    1. 构建 Payload(有效载荷): Payload 是一个 JSON 对象,包含了您向 Upbit API 发送的请求参数。Payload 的结构和内容必须严格按照 Upbit API 文档中针对特定端点的要求进行构建。对于不同的 API 端点,所需的参数可能不同,因此请务必查阅相应的文档。如果某个 API 端点不需要任何参数,Payload 仍然需要存在,但可以是一个空的 JSON 对象 {}
    2. 对 Payload 进行编码: 构建好 Payload 后,需要将其转换为 Upbit API 可以处理的格式。使用 JSON.stringify 函数将 Payload 对象转换成 JSON 字符串。然后,使用 Base64 编码算法对该 JSON 字符串进行编码。Base64 编码将 JSON 字符串转换为一个由 ASCII 字符组成的字符串,以便安全地传输数据。请注意,不同的编程语言和库可能有不同的 Base64 编码实现,请选择符合标准的实现。
    3. 生成访问令牌 (Access Token): 此步骤是身份验证的核心。使用 HMAC-SHA512 算法对 Base64 编码后的 Payload 进行签名。HMAC-SHA512 是一种消息认证码算法,它结合了哈希函数(SHA512)和密钥(您的 Secret Key)来生成一个唯一的签名。您需要使用您的 Secret Key 作为密钥来对 Payload 进行签名。生成的签名将作为访问令牌(Access Token)附加到您的请求头中,以便 Upbit 服务器验证请求的真实性和完整性。不同的编程语言和库提供了 HMAC-SHA512 算法的实现。
    构建 Authorization Header: 将 API Key 和签名后的访问令牌放入 Authorization Header 中。 Authorization Header 的格式如下:

    Authorization: Bearer .

    5. 调用 Upbit API

    拥有 API Key 和 Secret Key 后,即可开始调用 Upbit API。Upbit API 提供了一系列功能强大的接口,覆盖了交易、市场数据、账户管理等多个方面。这些接口使开发者能够构建自动化交易系统、数据分析工具以及其他与 Upbit 平台集成的应用程序。

    • 市场信息 (Market Data): 获取包括市场代码列表、交易对详细信息(例如交易手续费、最小交易量等)、当前市场价格(包括最新成交价、买一价、卖一价等)在内的各种市场相关数据。此接口可用于构建实时行情展示和市场监控系统。
    • 蜡烛图 (Candlestick Charts): 获取不同时间周期(例如 1 分钟、5 分钟、1 小时、1 天等)的蜡烛图数据。蜡烛图是技术分析的重要工具,可用于识别价格趋势和潜在的交易机会。该接口支持自定义时间范围,以便获取特定时间段内的历史数据。
    • 交易 (Trading): 执行各种交易操作,包括限价单、市价单等类型的下单交易,查询订单状态(例如已成交、部分成交、未成交、已取消等),以及取消未成交订单。此接口是构建自动化交易策略的核心。
    • 账户 (Account): 查询账户余额,包括可用余额、锁定余额和总余额,以及交易历史记录,包括买入、卖出、充值和提现等交易明细。此接口可用于账户管理和风险控制。
    • 存款/提款 (Deposit/Withdrawal): 查询加密货币和法币的存款和提款历史记录,包括申请提款操作。需要注意的是,提款操作通常需要进行身份验证和安全措施。

    在调用 Upbit API 时,务必严格遵循以下步骤,以确保请求的正确性和安全性:

    1. 仔细阅读 API 文档: 务必详细阅读 Upbit 官方提供的 API 文档。文档中包含了每个接口的详细描述,包括请求方法(例如 GET、POST、PUT、DELETE 等)、所需的请求参数(包括参数类型、是否必需、参数说明等)、返回值的格式和含义,以及可能的错误代码和错误信息。Upbit API 文档通常可以在 Upbit 开发者网站上找到,并定期更新。
    2. 构建请求 URL: 根据 API 文档,准确地构建请求 URL。URL 包含了 API 的基本地址以及特定的接口路径。例如,要获取所有交易市场的代码列表,请求 URL 可能是 https://api.upbit.com/v1/market/all 。 需要注意URL参数的正确编码。
    3. 设置请求 Header: 设置请求 Header,这是向服务器传递额外信息的关键步骤。至少需要设置两个 Header: Content-Type Authorization Content-Type 用于指定请求体的格式,通常设置为 application/ ,表示使用 JSON 格式发送数据。 Authorization 用于进行身份验证,通常包含 API Key 和 Secret Key 生成的签名。 Authorization Header 的格式取决于 Upbit API 的具体要求,通常是 "Bearer " 加上生成的 JWT (JSON Web Token)。
    4. 发送请求: 使用 HTTP 客户端发送请求。可以使用各种编程语言和工具,例如 curl (命令行工具)、 Python requests 库、 Node.js axios 库等。选择合适的 HTTP 客户端取决于你的编程环境和个人偏好。发送请求时,确保选择正确的 HTTP 方法(例如 GET、POST 等),并传递必要的请求参数。
    5. 处理响应: 解析 API 返回的 JSON 数据。根据 API 文档,了解返回数据的结构和含义。 通常,API 返回的数据会包含状态码、数据内容以及可能的错误信息。需要根据状态码判断请求是否成功,并根据数据内容进行后续处理。如果 API 返回了错误信息,需要仔细分析错误原因,并采取相应的措施进行修复。 例如,常见的错误包括参数错误、权限不足、频率限制等。

    6. 示例代码 (Python)

    以下是一个使用 Python 的 requests 库调用 Upbit API 获取账户信息的示例代码。此代码段展示了如何使用 JWT(JSON Web Token)进行身份验证,从而安全地访问 Upbit 交易所的账户信息。

    import jwt import uuid import hashlib from urllib.parse import urlencode

    import requests

    access_key = "YOUR_ACCESS_KEY" # 替换为你的 Upbit API Key secret_key = "YOUR_SECRET_KEY" # 替换为你的 Upbit Secret Key

    这段代码定义了您的 Upbit API 密钥对。 务必将 YOUR_ACCESS_KEY YOUR_SECRET_KEY 替换为您从 Upbit 交易所获得的实际凭据。 请妥善保管您的 Secret Key,切勿与他人分享,避免泄露您的账户信息。

    query = { 'access_key': access_key, 'nonce': str(uuid.uuid4()), } query_string = urlencode(query).encode()

    这里构建了一个查询参数字典,其中包括您的 Access Key 和一个随机生成的 nonce 值。 nonce(Number used once)用于防止重放攻击,保证每次请求的唯一性。 urlencode 函数将字典转换为 URL 编码的字符串,然后将其编码为字节串。

    m = hashlib.sha512() m.update(query_string) query_hash = m.hexdigest()

    这部分代码使用 SHA512 算法对查询字符串进行哈希处理。 hashlib.sha512() 创建一个 SHA512 哈希对象。 m.update(query_string) 将查询字符串添加到哈希对象中。 m.hexdigest() 返回哈希值的十六进制表示形式。 此哈希值将用于生成 JWT。

    payload = { 'access_key': access_key, 'nonce': str(uuid.uuid4()), 'query_hash': query_hash, 'query_hash_alg': 'SHA512', }

    此代码创建一个包含 Access Key、nonce、查询哈希值和哈希算法的 payload(载荷)。 此 payload 将被编码到 JWT 中。 query_hash_alg 指定了用于生成查询哈希值的算法。

    jwt_token = jwt.encode(payload, secret_key, algorithm="HS256") authorize_token = f"Bearer {jwt_token}"

    使用 PyJWT 库创建 JWT。 jwt.encode() 函数使用 HS256 算法和您的 Secret Key 对 payload 进行签名。 然后,将 JWT 封装在 "Bearer " 授权头中。 HS256 是一种对称加密算法,这意味着用于签名和验证令牌的密钥是相同的。

    headers = {"Authorization": authorize_token}

    创建一个包含授权头的字典。 该授权头将包含在对 Upbit API 的每个请求中,用于验证您的身份。 使用有效的JWT Token才能成功请求Upbit API。

    res = requests.get("https://api.upbit.com/v1/accounts", headers=headers)

    使用 requests.get() 函数向 Upbit API 的 /v1/accounts 端点发送 GET 请求。 此端点返回您的账户信息。 请求头包含授权令牌,用于验证您的身份。

    print(res.())

    打印 API 响应的 JSON 内容。 res.() 方法将响应内容解析为 Python 字典,方便您访问账户信息。 通过解析JSON,您可以访问账户余额、交易历史等信息。 注意:如果请求失败,例如因为API Key错误或者权限不足,返回的JSON会包含错误信息。

    请注意:请将 YOUR_ACCESS_KEYYOUR_SECRET_KEY 替换为你的实际 API Key 和 Secret Key。 这个示例代码使用了 PyJWT 库,你需要先安装该库: pip install PyJWT。 该示例展示了一种不使用 query_hash 的身份验证方法, 请参考 Upbit 官方文档了解更多身份验证方法。

    通过以上步骤,你应该能够成功获取 Upbit API 接口,并使用它进行数据分析和量化交易。 祝你使用愉快!

    本文章为原创、翻译或编译,转载请注明来自 币新知