BitMEX 自动交易:2024 最新 API 设置与安全指南
BitMEX API 密钥设置指南:实现比特币自动交易
BitMEX 是一个流行的比特币衍生品交易所,允许用户进行高杠杆交易。利用 BitMEX 的 API (应用程序编程接口),您可以构建自动化的交易机器人,实现无人值守的比特币交易。 本文将详细介绍如何在 BitMEX 上设置 API 密钥,并将其用于自动交易。
1. 注册并登录 BitMEX 账户
在开始交易之前,您需要注册并登录您的 BitMEX 账户。BitMEX 是一家专注于加密货币衍生品交易的平台,提供高达 100 倍杠杆的比特币永续合约等产品。
注册账户:
- 访问 BitMEX 官方网站: https://www.bitmex.com/ 。请仔细核对网址,防止钓鱼网站。
- 点击 "注册" 或 "Sign Up" 按钮,进入注册页面。
- 填写您的电子邮件地址、设置高强度密码,并选择您所在的国家或地区。
- 阅读并同意服务条款和隐私政策。
- 完成验证码验证 (如出现)。
- 点击 "注册" 按钮提交您的注册信息。
- 检查您的电子邮件收件箱,找到 BitMEX 发送的验证邮件,并点击邮件中的链接激活您的账户。
登录账户:
- 访问 BitMEX 官方网站: https://www.bitmex.com/ 。
- 点击 "登录" 或 "Log In" 按钮,进入登录页面。
- 输入您注册时使用的电子邮件地址和密码。
- 完成验证码验证 (如出现)。
- 如果您已启用双重身份验证 (2FA),请输入 2FA 验证码。
- 点击 "登录" 按钮。
账户安全:
- 强密码: 使用包含大小写字母、数字和符号的复杂密码,并定期更换密码。避免使用与其他网站相同的密码。
- 双重身份验证 (2FA): 强烈建议您启用 2FA,例如使用 Google Authenticator 或 Authy 等应用程序。这将为您的账户增加一层额外的安全保护。
- 防钓鱼: 警惕钓鱼邮件和网站。务必仔细检查 BitMEX 官方网站的网址,不要点击来历不明的链接。
- 定期检查: 定期检查您的账户活动记录,确保没有未经授权的访问。
2. 创建 API 密钥
成功登录 BitMEX 账户后,找到并点击页面右上角的用户头像。在弹出的下拉菜单中,选择“API 密钥”选项,进入 API 密钥管理界面。
API 密钥管理页面集中展示了您已创建的所有 API 密钥,并允许您进行创建、查看、编辑和删除等操作。仔细审查现有密钥,确保其权限设置符合预期,并定期更新以提升安全性。
要创建新的 API 密钥,点击页面上的 "Create API Key" (创建 API 密钥) 按钮。BitMEX 可能会要求您进行二次身份验证,请按照指示完成验证步骤。
在 API 密钥创建表单中,您需要提供以下详细信息:
- Name (名称): 为您即将创建的 API 密钥指定一个具有描述性的名称。推荐使用易于识别且能反映密钥用途的名称,例如 "BitMEX_TradingBot_v1" 或 "MarketData_Analysis"。明确的命名有助于您在拥有多个密钥时进行管理和区分。
- CIDR Whitelist (CIDR 白名单): (可选) 为了进一步提高安全性,强烈建议您设置 CIDR 白名单。如果您的交易机器人或应用程序仅在特定的 IP 地址或 IP 地址范围内运行,请将这些 IP 地址以 CIDR 格式添加到白名单中。例如,"192.168.1.0/24" 表示允许 192.168.1.1 到 192.168.1.254 之间的所有 IP 地址访问。留空此字段将允许来自任何 IP 地址的访问,这会增加安全风险。谨慎评估您的网络环境,正确配置 CIDR 白名单至关重要。有关 CIDR 格式的详细信息,请参考相关网络安全文档。不正确的设置会导致 API 密钥无法使用,请务必进行充分测试。
-
Key Permissions (密钥权限):
这是创建 API 密钥过程中至关重要的一步。务必仔细评估您的应用程序或交易机器人所需的确切权限,并仅授予其最小权限集。
- Order (订单): 授予此权限后,API 密钥可以创建、修改和取消订单。这是执行自动交易策略的交易机器人所必需的权限。请注意,此权限允许机器人进行买卖操作,因此需要谨慎使用。
- Order Cancel (取消订单): 此权限仅允许 API 密钥取消现有的订单,而无法创建或修改订单。如果您希望限制机器人只能在特定情况下取消订单,可以使用此权限。例如,在风险管理策略中,当市场情况不利时,可以使用此权限来取消所有未成交的订单。
- Account (账户): 授予此权限后,API 密钥可以访问您的账户信息,例如账户余额、可用保证金、持仓情况和交易历史记录。如果您的机器人需要监控账户状态、计算风险指标或进行绩效分析,则需要此权限。请注意,虽然此权限允许读取账户信息,但不能进行任何资金操作。
- Withdraw (提款): 绝对不要将此权限授予任何自动交易机器人或未经完全信任的应用程序! 提款权限允许 API 密钥从您的 BitMEX 账户中提取资金。授予此权限将使您的账户面临极高的风险,一旦密钥泄露,您的资金可能会被盗取。强烈建议您永远不要启用此权限,即使是为了方便提款操作,也应通过手动方式进行。
- Affiliate (联盟营销): 此权限用于管理 BitMEX 联盟营销计划相关的功能,与自动交易或常规账户管理无关。除非您参与了 BitMEX 的联盟营销计划,否则可以忽略此权限。
选择合适的权限后,点击 "Create API Key" 按钮。
3. 保存 API 密钥
成功创建 API 密钥后,系统将生成一个包含
API Key ID
(API 密钥 ID) 和
API Secret
(API 密钥密码) 的页面。
API Key ID
类似于您的用户名,用于标识您的账户,而
API Secret
则类似于您的密码,用于验证您的身份。
务必妥善保管这两个信息,特别是
API Secret
,因为它具有极高的安全敏感性。
强烈建议您立即将
API Key ID
和
API Secret
记录在安全的地方,例如使用密码管理器进行加密存储,或将其离线保存在一个安全的物理介质中。
请勿通过电子邮件、短信或其他不安全的渠道传输
API Secret
。
请注意,出于安全考虑,大多数平台在您创建 API 密钥后只会显示一次
API Secret
。
如果您丢失了
API Secret
,通常无法恢复,只能重新生成新的 API 密钥。
重新生成 API 密钥意味着您需要更新所有使用旧密钥的应用程序和脚本,因此请务必谨慎操作。
有些平台可能还提供其他与 API 密钥相关的设置,例如权限控制和IP地址限制。 您可以根据您的需求配置这些选项,以进一步增强 API 密钥的安全性。 例如,您可以限制 API 密钥只能访问特定的 API 接口,或者只允许来自特定 IP 地址的请求使用该密钥。
务必将这两个值保存到安全的地方。 API Secret 只会显示一次,如果您丢失了它,您将需要重新创建 API 密钥。 重要提示: 不要将您的 API 密钥和 API Secret 分享给任何人! 这相当于将您的 BitMEX 账户的控制权交给他人。4. 使用 API 密钥进行自动交易
您已经成功创建了 API 密钥,现在可以将其安全地集成到您的自动交易机器人中,以便实现自动化交易策略。
您的交易机器人需要使用 API 密钥 ID(也称为 API key)和 API 密钥密码(也称为 API secret)来对 BitMEX API 进行身份验证。身份验证过程至关重要,BitMEX 通过此过程确认请求的合法性和来源。具体的身份验证实现方式取决于您选择的编程语言以及所使用的 BitMEX API 客户端库。请务必妥善保管您的 API 密钥密码,切勿泄露给他人,并避免将其直接硬编码到代码中,推荐使用环境变量或其他安全的方式进行存储。
以下是一些常用的编程语言和对应的 BitMEX API 客户端库,可以显著简化与 BitMEX API 的交互过程:
-
Python:
bitmex
库 (官方客户端)。此库提供了全面的功能,包括订单管理、账户查询、市场数据获取等。您可以使用 pip 命令安装:pip install bitmex
。 -
JavaScript:
bitmex-api
库。此库适用于 Node.js 环境,方便开发者构建基于 JavaScript 的交易机器人。您可以使用 npm 命令安装:npm install bitmex-api
。 - Java: 虽然 BitMEX 没有官方的 Java 客户端库,但您可以使用诸如 OkHttp 或 Apache HttpClient 等成熟的 HTTP 客户端库手动构建 API 请求。这意味着您需要自行处理 API 请求的签名和数据解析。
在使用 API 密钥进行自动交易之前,务必认真阅读并透彻理解 BitMEX API 的官方文档 ( https://www.bitmex.com/api/explorer/ )。 仔细研究 API 的各个端点、所需参数、以及返回数据的格式。 充分了解这些信息将帮助您正确构建 API 请求,有效避免错误并提高交易效率。 特别需要关注限价单、市价单等不同订单类型的参数要求,以及下单频率限制等重要规则,确保您的交易策略能够顺利执行。 请留意 API 版本的更新,及时调整您的代码以适应新的接口规范,保证交易的稳定性和兼容性。
代码示例 (Python):
此示例演示如何使用Python与BitMEX交易所进行交互。你需要安装BitMEX的Python客户端库。
可以使用pip进行安装:
pip install bitmex
。
import bitmex
接下来,你需要设置API密钥和密钥。请务必妥善保管你的API密钥和密钥,不要分享给他人。
将
YOUR_API_KEY_ID
和
YOUR_API_KEY_SECRET
替换为你实际的API密钥ID和密钥。
api_key = 'YOUR_API_KEY_ID'
api_secret = 'YOUR_API_KEY_SECRET'
现在,你可以创建一个BitMEX客户端实例。
test=False
表示连接到BitMEX的生产环境。
如果需要连接到测试网络,请将
test
设置为
True
。
client = bitmex.bitmex(test=False, api_key=api_key, api_secret=api_secret)
使用创建的client,你可以调用BitMEX API进行各种操作,例如获取账户信息,下单,查询订单等。具体API的使用方法请参考BitMEX官方API文档。
获取账户信息
通过 Deribit API 获取用户账户的保证金信息是交易策略执行和风险管理的关键一步。以下代码展示了如何使用 Deribit 客户端获取账户信息。
account = client.User.User_getMargin().result()[0]
这行代码调用了
client.User.User_getMargin()
方法,该方法向 Deribit 服务器发送请求,获取用户的保证金账户信息。
.result()
方法用于同步获取 API 调用的结果。由于 API 返回的结果是一个列表,所以使用
[0]
获取列表中的第一个元素,即账户信息。 返回的账户信息包含多个字段,如:
-
currency
: 账户的币种,例如 'BTC' 或 'ETH'。 -
equity
: 账户的权益,包括已实现和未实现的盈亏。 -
initial_margin
: 维持当前仓位所需的初始保证金。 -
maintenance_margin
: 维持当前仓位所需的最低保证金。如果账户权益低于此值,可能会触发强制平仓。 -
available_funds
: 可用资金,用于开立新仓位。 -
pnl
: 未实现盈亏。 -
session_rpl
: 本交易时段的已实现盈亏。 -
session_upl
: 本交易时段的未实现盈亏。 -
margin_balance
: 保证金余额。
print(account)
此命令会将获取到的账户信息打印到控制台。开发者可以根据自己的需求解析并使用这些信息,例如监控保证金水平,调整交易策略,或进行风险评估。
注意事项:
- 确保已正确配置 Deribit API 客户端,包括 API 密钥和私钥。
- API 调用可能会受到速率限制。请参考 Deribit API 文档,合理控制请求频率。
- 仔细阅读 API 返回的字段含义,确保正确理解账户信息。
- 在实际交易中使用 API 时,务必进行充分的测试,并采取适当的风险管理措施。
下单
在加密货币交易中,"下单" 是指向交易所提交购买或出售特定加密资产的指令。以下代码示例展示了如何使用 BitMEX API (假设
client
对象已正确初始化并配置) 创建一个限价买单。
order = client.Order.Order_new(symbol="XBTUSD", side="Buy", orderQty=100, price=10000, orderType="Limit").result()[0]
这行代码的具体含义如下:
-
client.Order.Order_new(...)
: 调用 BitMEX API 的Order_new
方法,该方法用于创建一个新的订单。 -
symbol="XBTUSD"
: 指定交易的合约代码,这里是 "XBTUSD",代表比特币/美元永续合约。交易所会通过合约代码来确定用户交易的是哪个交易对。 -
side="Buy"
: 指定订单的方向为 "Buy",表示这是一个买单。相应的,side="Sell"
则表示卖单。 -
orderQty=100
: 指定订单的数量为 100 张合约。BitMEX 等交易所通常使用合约张数作为交易单位,而非直接使用比特币的数量。 具体的数量单位取决于合约的规格。 -
price=10000
: 指定订单的价格为 10000 美元。这是一个限价单,只有当市场价格达到或低于 10000 美元时,该订单才会被执行。 -
orderType="Limit"
: 指定订单类型为 "Limit",表示这是一个限价单。限价单允许交易者以指定的价格或更好的价格进行交易。 除了限价单,常见的订单类型还包括市价单 (Market
),止损单 (Stop
) 等。 -
.result()[0]
: 执行 API 调用并获取结果。result()
方法返回一个包含 API 响应的列表,[0]
访问列表中的第一个元素,通常包含了订单的详细信息。 -
order = ...
: 将 API 响应的第一个元素赋值给变量order
。
print(order)
这行代码用于打印
order
变量的内容,以便查看订单的详细信息,例如订单 ID、状态、创建时间等。 打印订单信息有助于调试和验证订单是否已成功提交。
YOUR_API_KEY_ID
和 YOUR_API_KEY_SECRET
替换为您实际的 API 密钥 ID 和 API 密钥密码。
5. 管理和保护 API 密钥
- 定期轮换 API 密钥: 为了最大限度地提高安全性,强烈建议您定期更换 API 密钥。 密钥泄露是真实存在的风险,定期轮换可以降低其影响。 您应该删除旧的 API 密钥并立即生成一个新的。 考虑设置一个固定的轮换周期,例如每月或每季度一次,并记录轮换日期。
- 监控 API 密钥的使用情况: 持续监控 API 密钥的使用情况对于检测和防止未经授权的访问至关重要。 仔细检查 API 请求日志,寻找异常模式或可疑活动。 关注请求数量、时间戳和源 IP 地址。 实施警报机制,以便在检测到异常活动时立即收到通知。
- 使用环境变量或密钥管理系统存储 API 密钥: 强烈建议不要将 API 密钥直接硬编码到代码中,这会带来极高的安全风险。 最佳实践是使用环境变量来存储 API 密钥,并在运行时从环境变量中读取。 还可以考虑使用专门的密钥管理系统(KMS)来安全地存储和管理您的 API 密钥。 KMS 提供了更高级别的安全性和控制。
- 限制 API 密钥的访问权限: 遵循最小权限原则,仅授予 API 密钥执行所需任务的最低权限。 例如,如果您的机器人只需要读取市场数据,则不要授予它交易权限。 BitMEX 允许您创建具有特定权限的 API 密钥。 仔细审查并配置每个 API 密钥的权限,以最大限度地减少潜在的风险。
- 启用 IP 白名单 (如果适用): 如果您的交易机器人只会在特定的 IP 地址运行,那么启用 IP 白名单是限制 API 密钥使用范围的有效方法。 BitMEX 允许您指定允许使用 API 密钥的 IP 地址。 只有来自这些 IP 地址的请求才会被接受。 这样做可以防止攻击者在获得 API 密钥后从其他 IP 地址使用它。
- 注意 BitMEX 的 API 速率限制: BitMEX 对 API 请求的频率有限制,以防止系统过载。 您的交易机器人必须遵守这些限制。 如果超出速率限制,您的机器人可能会被暂时或永久禁止访问 API。 在 BitMEX API 文档中查找有关速率限制的详细信息,并确保您的机器人实施了适当的重试机制和错误处理,以优雅地处理速率限制错误。
- 仔细测试您的自动交易机器人: 在将您的自动交易机器人部署到真实交易环境之前,务必在测试环境 (例如 BitMEX 的测试网) 中对其进行全面测试。 模拟真实的市场条件,并测试各种交易场景。 确保您的机器人能够正常工作,并且不会导致意外的损失。 监控机器人在测试网上的表现,并进行必要的调整,然后再将其部署到真实交易环境。 同时检查订单类型、止损/止盈逻辑、资金管理策略是否按照预期执行。
通过仔细遵循这些步骤,您可以更安全地设置 BitMEX API 密钥,并用它来构建自动化的比特币交易机器人。 请记住,安全是一个持续的过程,需要不断的监控和改进。 定期审查您的安全措施,并及时了解最新的安全最佳实践。