跳到主要内容

合约 V3 REST API

概述

HTTP API允许通过公共端点读取公共市场数据,并通过私有端点读取/写入私有账户。

  • HTTP API: https://api.poloniex.com

所有公共请求都不需要身份验证(API签名)。

私有HTTP端点(例如https://api.poloniex.com/v3/orders)使用HMAC-SHA256签名的请求进行身份验证。 详情请点击身份验证。

交易对的命名规则为 <baseCcy>_<quoteCcy>_PERP ,例如 BTC_USDT_PERP ,与以往系统的规则相反。

API Key 权限设置

  • 新创建的API的默认权限是 只读。
  • 如果需要通过API提款, 需要在UI修改权限, 选中提币。
  • 如果需要通过API交易, 需要在UI修改权限, 选中对应合约交易权限

身份验证

所有公共请求都不需要身份验证(API签名)。

所有私有HTTP端点需要使用HMAC-SHA256签名请求进行身份验证,并包含以下头部信息:

  • key:输入调用者的API密钥, 例如 A...-99...
  • signatureMethod:可选项,输入签名方法, 例如 hmacSHA256
  • signatureVersion:可选项,输入签名版本, 例如 1
  • signTimestamp:输入时间戳, 例如 1649371360000
  • signature:输入API调用者请求生成的签名, 例如 4F…%3D
  • recvWindow:可选项,输入持续时间,用毫秒表示, 例如 1500 。 该字段提供了额外的控制层,如果指定了该字段并且请求的Poloniex系统时间和signTimestamp对差值超过了recvWindow值,则请求会被拒绝。 以下是错误代码响应:
    • 400:signTimestamp比Poloniex系统时间多过1秒。
    • 408:请求超时,超过了recvWindow阈值。
提示

POST和DELETE请求应包含application/json类型的内容,并且格式必须是有效的JSON格式。

签名代码示例

以下是三种语言(Java/Python/Node.js)的API签名代码以及请求代码示例。点此查看详情.

生成API签名

步骤如下:

  1. 写一个"请求字符串",用于生成数字签名,包括:
    • 请求方法类型(GET/POST/DELETE等),随后写 "\n" ,例如 GET\n
    • 访问路径,随后写 "\n" ,例如 /orders\n
    • 添加时间戳参数和按ASCII顺序排序的参数列表,参数之间用&分隔,例如 limit=5&signTimestamp=1659259836247&symbol=ETH_USDT
    • 注:所有参数必须以URL/UTF-8编码, 即空格编码为 "%20"
    • 根据上述示例值生成的签名串为:
      GET\n
      /orders\n
      limit=5&symbol=ETH_USDT
    • 对于带有HTTP正文的DELETE或POST方法,例如根据ID取消订单: /orders/cancelByIds\n
      • 添加requestBody和时间戳:
        requestBody={"orderIds":["1234567890"],"clientOrderIds": ["myId-1"]}
        signTimestamp=1631018760000
      • 需要加时间戳。 时间戳有效期为1分钟。 按照以上顺序使用字符 & 连接参数:
        requestBody={"orderIds":["1234567890"],"clientOrderIds":["myId-1"]}&signTimestamp=1631018760000}
      • 签名计算最后一个字符串:
        DELETE\n
        /orders/cancelByIds/\n
    • 不带HTTP正文的DELETE或POST方法,例如按ID取消订单:/orders/1
      • 需要加时间戳。 时间戳有效期为1分钟。
        signTimestamp=1631018760000
      • 签名计算最后一个字符串:
        DELETE\n
        /orders/1\n
        signTimestamp=1631018760000
  2. 用上一步生成的“请求字符串”和密钥生成数字签名:
    • 调用HmacSHA256哈希函数,使用上一步中获取的请求字符串和API私钥作为两个参数,获取哈希值。
    • 使用Base64将该哈希值进行编码,编码后的值用作接口调用的数字签名。
    • 例如 5g4Rx5A2bLyMWFgR3Aqp+B4w+iJkL7n5OD3SuYtCJK8=
  3. 请求示例:(使用上述产生的签名)

注:POST和DELETE请求应包含application/json类型的内容,并且格式必须是有效的JSON格式。

GET命令:

curl -X GET \
--header 'key: A3xxxxxx-99xxxxxx-84xxxxxx-72xxxxxx' \
--header 'signatureMethod: HmacSHA256' \
--header 'signatureVersion: 2' \
--header 'signTimestamp: 1631018760000' \
--header 'signature: 5g4Rx5A2bLyMWFgR3Aqp+B4w+iJkL7n5OD3SuYtCJK8=' \

限频规则

您可以根据下列表格,参考限频的规则,合理使用您的交易策略。

如有其他问题,请通过电子邮件联系客服询问(api-support@poloniex.com)。

注:交易、持仓与账户相关的接口,根据UID维度,进行限频。行情相关的接口,根据IP纬度进行限频。

类型接口名称Url普通用户SilverGoldMarket MakerToken Market Maker
交易下单/v3/trade/order508010010001000
批量下单/v3/trade/orders5810100100
撤单/v3/trade/order10016020010001000
批量撤单/v3/trade/batchOrders101620100100
全部撤单/v3/trade/allOrders101620100100
市价全平/v3/trade/position101620200200
一键全平/v3/trade/positionAll2481616
查询当前委托/v3/trade/order/opens1020304050
查询成交明细/v3/trade/order/trades1015152020
查询历史委托/v3/trade/order/history1015152020
仓位查询当前持仓/v3/trade/position/opens1020304050
查询历史持仓/v3/trade/position/history1015152020
调整逐仓仓位保证金/v3/trade/position/margin1020304050
查看持仓模式/v3/position/mode1020304050
切换持仓模式/v3/position/mode1020304050
查询杠杆等级列表/v3/position/leverages1020304050
设置杠杆等级/v3/position/leverage1020304050
账户查询账户余额/v3/account/balance5080100200200
查询账户流水/v3/account/bills1015152020
类型接口名称Url限频 (次/每秒)
行情查询当前未平仓合约数量/v3/market/openInterest300
查询保险基金信息/v3/market/insurance
查询指数价格组成/v3/market/indexPriceComponents
查询orderBook/v3/market/orderBook
查询成交信息/v3/market/trades
查询行情信息/v3/market/tickers
查询指数价格/v3/market/indexPrice
查询标记价格/v3/market/markPrice
查询当前资金费率/v3/market/fundingRate
查询合约风险限额/v3/market/riskLimit
查询全部产品信息/v3/market/allInstruments
查询产品信息/v3/market/instruments
查询K线数据/v3/market/candles20
查询标记价格K线数据/v3/market/markPriceCandlesticks
查询指数价格K线数据/v3/market/indexPriceCandlesticks
查询溢价指数K线数据/v3/market/premiumIndexCandlesticks
查询历史资金费率/v3/market/fundingRate/history