Bitmex API:交易秘籍!新手指南+安全策略,爆赚机会不容错过!

Bitmex API 申请

账户准备

在开始使用 Bitmex API 之前,必须先拥有一个有效的 Bitmex 交易账户。如果尚未注册,请访问 Bitmex 官方网站( Bitmex )进行账户创建。注册流程通常包括以下步骤:

  1. 提供有效的邮箱地址: 用于账户验证和接收重要通知。请务必使用常用邮箱,并定期检查邮件。
  2. 设置高强度密码: 为了保护您的账户安全,请选择一个包含大小写字母、数字和特殊字符的复杂密码,并避免使用与其他网站相同的密码。
  3. 完成 KYC 验证: Bitmex 要求用户完成 KYC(了解您的客户)验证,以符合监管要求。这可能需要您提供身份证明文件(例如护照、身份证)和地址证明文件(例如水电费账单)。
  4. 启用两步验证(2FA): 为了进一步增强账户安全性,强烈建议启用两步验证。2FA 会在您登录时要求提供除了密码之外的第二重验证码,例如通过 Google Authenticator 或短信接收的验证码。即使密码泄露,未经授权的访问者也无法轻易登录您的账户。

请注意,KYC 验证的流程和所需材料可能因您所在的国家/地区而异。请务必仔细阅读 Bitmex 官方网站上的相关说明,并按照指示完成验证。完成 KYC 验证后,您才能完全使用 Bitmex 的各项功能,包括 API 交易。

账户安全至关重要,请妥善保管您的登录凭证,并定期检查账户活动,以确保账户安全。

API 密钥生成

BitMEX 平台使用 API 密钥对进行身份验证,这是访问其交易平台和数据的安全方式。API 密钥由两部分组成:API Key 和 API Secret。API Key 类似于用户名,用于标识您的应用程序或账户,而 API Secret 则相当于密码,用于验证 API Key 的所有者。因此,务必妥善保管您的 API Secret,切勿将其泄露给任何第三方,因为泄露可能导致资金损失或未经授权的账户活动。

生成 API 密钥的详细步骤如下:

  1. 登录您的 BitMEX 账户。确保您访问的是 BitMEX 的官方网站,以避免网络钓鱼攻击。
  2. 点击页面右上角的账户头像,在下拉菜单中选择“API”。这将引导您进入 API 管理页面。
  3. 进入 API 管理页面后,点击“创建 API 密钥”按钮,开始生成新的 API 密钥。
  4. 在创建 API 密钥的对话框中,您需要配置以下几个关键选项,这些选项直接影响 API 密钥的安全性和功能:

    • 名称(Name) : 为您的 API 密钥设置一个易于识别的名称,这有助于您在拥有多个 API 密钥时进行管理和区分。例如,您可以根据使用场景命名,如“My Trading Bot”、“Data Analysis Script”或“Portfolio Tracker”。
    • CIDR(IP 白名单) : 这是一个极其重要的安全设置,强烈建议您配置。通过指定允许访问 API 的 IP 地址范围,您可以有效限制 API 密钥的使用来源。只有来自指定 IP 地址的请求才会被接受,从而降低 API 密钥被盗用后造成的潜在风险。如果您不确定您的固定 IP 地址,可以暂时设置为 0.0.0.0/0 (允许所有 IP 地址),但这会显著降低安全性。因此,在完成测试后,务必尽快修改为更严格的 IP 白名单。您可以根据需要添加多个 IP 地址段,以满足不同的访问需求。例如,如果您使用 VPS 服务器进行交易,则应将 VPS 服务器的 IP 地址添加到白名单中。
    • 密钥权限(Key Permissions) : 设置 API 密钥可以执行的操作,这是控制 API 密钥权限的关键部分。BitMEX 提供了多种权限选项,每种权限都允许 API 密钥执行不同的操作:
      • Order : 允许 API 密钥执行下单、修改订单和取消订单等交易操作。这是进行自动化交易和量化策略开发最常用的权限,也是交易机器人的核心权限。请注意,如果您的 API 密钥仅用于获取市场数据,则无需授予此权限。
      • OrderCancel : 仅允许 API 密钥取消订单,而不能进行下单或修改订单。这可以用于构建专门的订单取消工具或策略。
      • Withdraw : 允许 API 密钥提现。 强烈建议不要给 API 密钥授予提现权限,除非您完全信任该 API 密钥的使用环境。任何未经授权的提现都可能导致资金损失。 默认情况下,应禁用此权限。
      • Account : 允许 API 密钥读取账户信息,例如账户余额、持仓情况、交易历史等。这是监控账户状态和执行风险管理的重要权限。许多交易策略需要访问账户信息才能做出决策。
      • Affiliate : 允许 API 密钥管理联盟营销活动,例如创建推荐链接和查看推广数据。如果您参与了 BitMEX 的联盟计划,则需要此权限。

    根据您的具体需求,选择合适的权限。对于大多数交易机器人来说,“Order” 和 “Account” 权限是必需的,而“Withdraw”权限应始终禁用,除非有明确的提现需求并且采取了额外的安全措施。在配置权限时,遵循“最小权限原则”,即只授予 API 密钥完成其任务所需的最低权限,以最大程度地降低潜在的安全风险。

  5. 配置完成后,仔细检查所有设置,确保无误后点击“创建 API 密钥”按钮。
  6. 系统会立即生成 API Key 和 API Secret。 请务必立即复制并妥善保存 API Secret,因为您只能在创建时看到一次。 建议将 API Secret 存储在安全的地方,例如密码管理器或加密的文本文件中。如果您忘记了 API Secret,将无法恢复,只能删除该 API 密钥并重新生成,并更新所有使用该密钥的应用程序或脚本。

API 密钥管理

在 API 管理页面,您可以全面掌控您的 API 密钥。在这里,您可以安全地查看、编辑和删除您已创建的 API 密钥,以确保您的交易安全和 API 的最佳性能。

  • 查看 API 密钥信息 : 点击您感兴趣的 API 密钥的名称,系统将展示该密钥的详细信息。这些信息包括密钥的创建时间,明确记录了密钥的生成日期和时间;IP 白名单,详细列出了允许访问该密钥的 IP 地址列表,增强了安全性;以及权限设置,精确地定义了该密钥能够执行的操作范围,例如交易、读取账户信息等。
  • 编辑 API 密钥 : 您可以根据需要灵活修改 API 密钥的各项属性。可修改的属性包括 API 密钥的名称,便于您更好地组织和识别不同的密钥;IP 白名单,您可以添加、删除或修改允许访问的 IP 地址,以适应网络环境的变化;以及权限设置,您可以根据交易策略的调整来修改密钥的权限。 请务必谨慎操作,修改权限可能会影响您的交易机器人的正常功能。在修改前,请充分了解每项权限的影响,并进行充分的测试。 例如,取消“交易”权限将导致机器人无法执行任何交易操作。
  • 删除 API 密钥 : 当您的 API 密钥不再需要使用,或者您怀疑密钥可能已经泄露或被盗用时,请立即采取行动,删除该密钥。删除操作将立即撤销该密钥的所有权限,阻止任何未经授权的访问。删除密钥后,请务必更新所有使用该密钥的应用程序或脚本,以避免出现连接错误或其他异常情况。强烈建议定期审查并删除不再使用的 API 密钥,以降低安全风险。

API 使用注意事项

  • 安全第一 : API Secret 是您访问 BitMEX 账户的唯一凭证,类似于账户密码,务必高度重视其安全性。切勿以任何方式泄露给他人,包括通过电子邮件、聊天工具或屏幕截图等方式。 强烈建议定期更换 API 密钥,例如每月或每季度更换一次,以降低密钥泄露的风险。同时,开启双因素认证(2FA)能进一步提升账户安全性。
  • IP 白名单 : 为了最大程度地保障 API 密钥的安全,强烈建议设置严格的 IP 白名单。只允许预先授权的服务器或本地机器通过指定的 IP 地址访问 BitMEX API。 可以通过 BitMEX 账户设置或 API 管理页面配置 IP 白名单。 这样即使 API 密钥泄露,未经授权的 IP 地址也无法访问您的账户。
  • 权限控制 : 在创建 API 密钥时,务必根据实际需求授予其最小权限。例如,如果只需要进行交易操作,则只授予交易权限,避免授予提现等敏感权限。 这样做可以有效降低因 API 密钥被盗用而造成的潜在损失。仔细审查每个 API 密钥所需的权限,并定期检查和调整权限设置。
  • 频率限制 : BitMEX API 为了保障系统的稳定性和公平性,对 API 调用频率设置了限制。超过频率限制可能会导致您的 API 密钥被暂时禁用,甚至永久禁用。 请务必严格控制您的 API 调用频率,并采取必要的优化措施,例如批量请求、缓存数据等。 您可以参考 BitMEX 官方 API 文档,详细了解不同 API 接口的频率限制,以及相应的错误处理方式。 建议在代码中加入重试机制,以便在遇到频率限制错误时自动重试请求。
  • 错误处理 : API 调用过程中可能会出现各种错误,例如网络连接超时、API 服务器故障、参数格式错误、账户余额不足等。 请务必在您的代码中加入完善的错误处理机制,捕获并处理各种可能出现的异常情况。 针对不同的错误类型,采取不同的应对措施,例如重试、记录日志、发送告警等。 避免因未处理的错误导致程序崩溃、数据丢失或产生错误的交易。 仔细阅读 BitMEX API 文档中关于错误码的说明,以便更好地理解和处理 API 错误。
  • API 文档 : BitMEX 提供了详尽的 API 文档,涵盖了所有可用的 API 接口,包括 REST API 和 WebSocket API。 文档中详细描述了每个 API 接口的功能、参数、请求方式、返回值以及示例代码。 仔细阅读 API 文档,可以帮助您更好地理解和使用 BitMEX API,避免因使用不当而导致的问题。 BitMEX API 文档会定期更新,请及时关注最新版本,以便了解最新的 API 功能和改动。

使用示例(Python)

以下是一个使用 Python 编程语言的简单示例,演示了如何通过 Bitmex API 获取您的账户余额。请注意,为了成功执行此代码,您需要先安装 `requests` 库,它是一个流行的 Python HTTP 客户端库,用于发送 HTTP 请求。可以使用 pip 包管理器进行安装: pip install requests

示例代码如下:


import requests
import hashlib
import hmac
import time
import urllib.parse

# 替换成你自己的 API 密钥和密钥
api_key = 'YOUR_API_KEY'
api_secret = 'YOUR_API_SECRET'

# Bitmex API endpoint
base_url = 'https://www.bitmex.com/api/v1'

def generate_signature(api_secret, method, path, expires, data=''):
    """
    生成 Bitmex API 请求的签名。
    """
    if isinstance(data, (bytes, bytearray)):
        data = data.decode('utf8')
    parsed_url = urllib.parse.urlparse(path)
    path = parsed_url.path
    message = method + path + str(expires) + data
    
    signature = hmac.new(api_secret.encode('utf8'), message.encode('utf8'), digestmod=hashlib.sha256).hexdigest()
    return signature

def get_account_balance():
    """
    使用 Bitmex API 获取账户余额。
    """
    method = 'GET'
    path = '/api/v1/user/wallet'
    expires = int(time.time()) + 60  # 请求过期时间,设置为 60 秒后

    signature = generate_signature(api_secret, method, path, expires)

    headers = {
        'api-key': api_key,
        'api-expires': str(expires),
        'api-signature': signature
    }

    url = base_url + path

    try:
        response = requests.get(url, headers=headers)
        response.raise_for_status()  # 检查 HTTP 状态码

        data = response.()
        balance = data[0]['amount'] # 余额以聪为单位
        print(f"账户余额 (聪): {balance}")
        print(f"账户余额 (BTC): {balance / 100000000}") # 转换为 BTC
        return balance
    except requests.exceptions.RequestException as e:
        print(f"API 请求出错: {e}")
        return None
    except (KeyError, IndexError) as e:
        print(f"解析 JSON 响应出错: {e}, 可能是 API 响应格式发生了变化。请检查 API 文档。")
        return None

if __name__ == '__main__':
    get_account_balance()

代码解释:

  • api_key api_secret :请务必替换为您的 Bitmex API 密钥和密钥。
  • generate_signature 函数:根据 Bitmex API 的要求生成签名,用于身份验证。此函数接收API密钥,请求方法,路径,过期时间以及可选的数据作为参数。它使用 HMAC-SHA256 算法对消息进行签名。
  • get_account_balance 函数:构建 API 请求,设置必要的头部信息,发送请求并解析响应。 它会处理潜在的异常情况,例如网络错误或无效的 JSON 响应。返回的余额以聪(Satoshis)为单位,您可以将其除以 100,000,000 转换为 BTC。
  • 异常处理:示例代码包含了 try-except 块,用于捕获和处理可能发生的异常,例如 API 请求错误( requests.exceptions.RequestException )和 JSON 解析错误( KeyError , IndexError )。

重要提示:

  • 安全: 请妥善保管您的 API 密钥和密钥,不要将其泄露给他人。
  • 风险提示: 加密货币交易存在风险,请谨慎操作。
  • Bitmex API 文档: 建议参考 Bitmex 官方 API 文档,了解最新的 API 使用方法和限制。 Bitmex API Explorer

替换为您的 API Key 和 API Secret

api_key = 'YOUR_API_KEY' api_secret = 'YOUR_API_SECRET'

在使用任何加密货币交易所的API之前,务必妥善保管您的 API Key 和 API Secret。泄露这些凭据可能会导致资金损失。请使用强密码并启用双重身份验证。

def generate_signature(api_secret, method, path, expires, data=''): 生成 API 签名。

API 签名是用于验证请求来源的加密哈希值。它使用您的 API Secret 和请求的各种参数(如 HTTP 方法、API 路径、过期时间戳和请求数据)生成。

 if isinstance(data, (bytes, bytearray)):
      data = data.decode('utf8')
  nonce = str(expires)
  message = method + path + nonce + data
  signature = hmac.new(
          api_secret.encode('utf8'),
       message.encode('utf8'),
       digestmod=hashlib.sha256).hexdigest()
  return signature

此代码片段展示了如何使用 Python 的 hmac hashlib 库生成 SHA256 HMAC 签名。 nonce 通常设置为过期时间戳,用于防止重放攻击。编码过程使用 UTF-8 确保跨平台兼容性。消息字符串的构建顺序至关重要,必须与 API 文档一致。

def get_account_balance(api_key, api_secret): 获取账户余额。

此函数演示了如何使用 API 密钥和 API Secret 获取用户的账户余额。它构造一个签名的 HTTP GET 请求并将其发送到交易所的 API 端点。

 method = 'GET'
 path = '/api/v1/user/wallet'
 expires = int(time.time()) + 60  # 60 seconds from now
 signature = generate_signature(api_secret, method, path, expires)

这里定义了 HTTP 方法 (GET) 和 API 路径。 expires 参数设置为当前时间加上 60 秒,这意味着签名在 60 秒后过期。这是防止攻击者重用签名的安全措施。然后使用 generate_signature 函数创建签名。

headers = {
        'api-key': api_key,
       'api-signature': signature,
         'api-expires': str(expires)
  }

HTTP 头部包含 API 密钥、API 签名和过期时间戳。这些头部是交易所用来验证请求的必要参数。正确设置头部至关重要,否则请求将被拒绝。

url = 'https://www.bitmex.com' + path
  response = requests.get(url, headers=headers)

构建完整的 API URL 并使用 Python 的 requests 库发送 GET 请求。 headers 参数包含之前创建的头部。

if response.status_code == 200:
     data = response.()
     print(.dumps(data, indent=2))
     return data
  else:
     print(f"Error: {response.status_code} - {response.text}")
    return None

检查 HTTP 状态码。200 表示请求成功。如果成功,则将响应解析为 JSON 并打印格式化的 JSON 数据。如果出现错误,则打印错误消息和状态码。强烈建议添加更详细的错误处理和日志记录机制。

调用函数获取账户余额

使用 get_account_balance 函数,并通过您的 API 密钥和密钥对进行身份验证,以安全地检索您的账户余额。

balance = get_account_balance(api_key, api_secret)

此函数会向交易所的 API 发送请求,验证您的凭据,并返回账户余额信息。 如果函数成功检索到余额,将输出一条成功消息;否则,将指示检索失败。

if balance: print("账户余额已成功检索。") else: print("未能检索到账户余额。")

请务必将代码中的 YOUR_API_KEY YOUR_API_SECRET 替换为您从交易平台获得的真实 API 密钥和密钥。 API 密钥和密钥对通常可以在您的账户设置或 API 管理页面中找到。 请妥善保管您的 API 密钥,避免泄露,防止未授权访问您的账户。

在执行这段代码之前,请确认您的 Python 环境已安装必要的 requests 库。 该库是发送 HTTP 请求的标准库,可以通过 Python 的包管理器 pip 进行安装。

您可以使用 pip install requests 命令来安装 requests 库。 打开您的命令行终端(例如:终端、命令提示符或 PowerShell),输入以上命令并执行。 pip 将会自动从 Python 包索引下载并安装 requests 及其依赖项。

本示例演示了如何通过 Python 脚本与交易所 API 交互,调用 GET /api/v1/user/wallet 接口来获取账户余额。 为了保证 API 调用的安全性,关键在于生成一个有效的 API 签名。 API 签名是一种加密的散列值,用于验证请求的来源和完整性,防止篡改。

生成 API 签名通常涉及以下步骤:收集必要的数据,例如 API Secret、HTTP 请求方法 (例如 GET, POST, PUT, DELETE)、请求的 API 路径 (例如 /api/v1/user/wallet)、请求的过期时间戳以及任何随请求发送的数据。 然后,将这些数据按照特定的格式组合成一个字符串,并使用加密哈希函数(例如 HMAC-SHA256)和您的 API Secret 对其进行哈希处理。 将生成的签名添加到您的 API 请求头中。 交易所的服务器会使用相同的算法和您的 API Secret 来验证签名,如果签名匹配,则认为请求是有效的。 不同的交易所可能有不同的签名生成方式,请务必参考其官方 API 文档。

进阶使用

BitMEX API 提供了远超基本账户余额查询的丰富功能集。您不仅可以查询账户余额,还能执行全面的交易操作,包括但不限于:精确地下达各种类型的订单(如限价单、市价单、止损单等),灵活地修改已有订单的价格、数量或其他参数,高效地取消未成交的订单,以及获取详细的历史市场数据(包括交易记录、深度信息等)。为了充分利用这些功能,建议您深入研究 BitMEX 官方提供的详尽 API 文档,该文档详细描述了每一个 API 接口的请求参数、响应格式和使用示例。

除了直接使用 API,您还可以借助社区开发的第三方库和工具,显著简化开发流程,提高开发效率。例如, bitmex-api-py 是一个流行的 Python 库,它封装了 BitMEX API 的常用功能,提供了友好的 Python 接口,使得您能够以更简洁、更 Pythonic 的方式与 BitMEX 交易所进行交互。还有其他语言的类似库,以及一些用于数据分析、策略回测的工具,可以帮助您更好地利用 BitMEX API 进行量化交易和数据分析。

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