aijiebots入门量化交易机器人,完全免费,办公环境运行,适合小白入门。
参数签名
API验证
发起请求
所有REST请求的header都必须包含以下key:
ACCESS-KEY:API KEY作为一个字符串。
ACCESS-SIGN:使用base64编码签名 (参考 HMAC 与 RSA)。
ACCESS-TIMESTAMP:您请求的时间戳。
ACCESS-PASSPHRASE:您在创建API KEY时设置的口令。
Content-Type:统一设置为application/json。
locale: 支持多语言, 如:中文(zh-CN),英语(en-US)
获取时间戳
Long timestamp = System.currentTimeMillis();
签名
ACCESS-SIGN的请求头是对 timestamp + method.toUpperCase() + requestPath + "?" + queryString + body
字符串(+表示字符串连接)使用 HMAC SHA256 方法加密,通过BASE64 编码输出而得到的。
签名各字段说明
timestamp:与 ACCESS-TIMESTAMP 请求头相同。
method:请求方法(POST/GET),字母全部大写。
requestPath:请求接口路径。
queryString:请求URL中(?后的请求参数)的查询字符串。需按key字母序升序
body:请求主体对应的字符串,如果请求没有主体(通常为GET请求)则body可省略。
queryString为空时,签名格式
timestamp + method.toUpperCase() + requestPath + body
queryString不为空时,签名格式
timestamp + method.toUpperCase() + requestPath + "?" + queryString + body
举例说明
获取合约深度信息,以 BTCUSDT 为例:
Timestamp = 16273667805456
Method = "GET"
requestPath = "/api/mix/v2/market/depth"
queryString= "?limit=20&symbol=BTCUSDT"
生成待签名的字符串:
16273667805456GET/api/mix/v2/market/depth?limit=20&symbol=BTCUSDT
合约下单,以 BTCUSDT 为例:
Timestamp = 16273667805456
Method = "POST"
requestPath = "/api/v2/mix/order/place-order"
body = {"productType":"usdt-futures","symbol":"BTCUSDT","size":"8","marginMode":"crossed",side":"buy","orderType":"limit","clientOid":"123456"}
生成待签名的字符串:
16273667805456POST/api/v2/mix/order/place-order{"productType":"usdt-futures","symbol":"BTCUSDT","size":"8","marginMode":"crossed",side":"buy","orderType":"limit","clientOid":"123456"}
生成最终签名的步骤
HMAC
第1步,将待签名字符串使用私钥secretkey进行hmac sha256加密
Signature = hmac_sha256(secretkey, Message)
第2步,对于Signature进行base64编码
Signature = base64.encode(Signature)
RSA
第一步,使用RSA私钥privateKey对待签名字符串进行SHA-256签名。
第二步,对生成的签名字符串进行编码为 base64 string,得到签名字符串进行接口请求。