在加密货币衍生品交易领域,Deribit以其提供的高流动性、丰富的产品种类(包括永续合约、期权等)以及专业的交易工具而备受全球交易者和机构的青睐,对于希望实现自动化交易、量化策略研究、或者构建定制化交易界面的开发者而言,掌握Deribit API开发是通往高效、精准交易的关键一步,本文将深入探讨Deribit API开发的核心要点、实践步骤以及注意事项,助您顺利开启自动化交易之旅。

Deribit API概览:为何选择API?

Deribit提供了功能强大的REST API和WebSocket API,允许程序化地访问其市场数据、账户信息以及执行交易操作。

  • REST API:适用于请求-响应模式的操作,如获取账户余额、查询历史订单、获取市场深度快照、下限价单/市价单等,它的特点是简单直观,适合不要求实时性的数据获取和交易指令执行。
  • WebSocket API:适用于需要实时数据推送的场景,如订阅实时价格变动、成交信息、订单状态更新、账户余额变动等,对于高频交易、算法交易以及需要实时监控的交易系统而言,WebSocket是不可或缺的工具。

选择API开发意味着您可以:

  1. 实现自动化交易:摆脱人工盯盘的疲劳,根据预设策略自动执行买卖操作。
  2. 量化策略回测与执行:将复杂的量化模型转化为可执行的交易程序,并进行历史数据回测。
  3. 构建定制化交易界面/工具:根据个人交易习惯和需求,开发专属的交易面板、信号提醒工具等。
  4. 高效获取市场数据:实时、批量地获取所需的市场行情数据,进行分析和决策。

准备工作:开启API开发之旅

在开始编码之前,您需要完成以下准备工作:

  1. 注册Deribit账户:如果您还没有Deribit账户,请先完成注册并通过身份验证(KYC)。
  2. 生成API密钥
    • 登录Deribit账户,进入“API”页面。
    • 创建新的API密钥,设置一个易于识别的标签(如“My Trading Bot”)。
    • 重要:妥善保管您的KeySecretSecret仅显示一次,请务必安全保存,泄露将导致资金损失。
    • 根据需求设置权限(仅交易、仅读取、或读写权限),建议遵循最小权限原则,仅开启必要的权限。
  3. 选择开发工具与环境
    • 编程语言:Python因其丰富的库支持和易用性,成为加密货币API开发的热门选择(如requests库用于REST API,websockets库用于WebSocket),您也可以选择Node.js、Java、C++等其他语言。
    • 代码编辑器/IDE:VS Code、PyCharm等。
    • API文档:Deribit官方API文档是开发者最重要的参考资料,务必熟悉其结构和各个端点的用法,您可以在Deribit官网找到最新的API文档。

Deribit API核心功能开发实践

REST API基础操作

  • 认证:绝大多数Deribit API私有接口都需要进行身份验证,通常使用HMAC-SHA256算法对请求进行签名,您需要在请求头中添加Authorization字段,值为HMAC-SHA256 <key>:<signature>,其中signature是根据请求方法、路径、时间戳、请求体等参数,使用您的Secret计算得出的。
  • 获取账户信息:调用private/get_account_info接口,可以获取账户余额、持仓等基本信息。
  • 获取市场数据
    • 获取交易所支持的币对:public/get_currencies
    • 获取某个币对的市场深度快照:public/get_order_book,参数如instrument_name(如"BTC-PERPETUAL")。
    • 获取K线数据:public/get_tradingview_chart_data,用于获取指定时间周期和数量的K线数据,方便技术分析。
  • 下单操作
    • 下限价单:private/buyprivate/sell,需要指定instrument_nameamount(数量)、price(价格)等参数。
    • 下市价单:private/buyprivate/sell,将type设为"market",并指定amount
    • 下单后,会返回订单ID,用于后续查询和管理。
  • 查询与管理订单
    • 查询订单详情:private/get_order_by_order_id
    • 查询当前挂单:private/get_open_orders
    • 取消订单:private/cancel

WebSocket API实时数据交互

WebSocket API的核心在于“订阅”与“接收”。

  • 连接:首先需要连接到Deribit的WebSocket服务器(有测试网和主网之分,开发时建议先使用测试网)。
  • 认证随机配图