尝试通过 bitmex 上的 REST API 发送取消订单请求。响应是签名无效。我将签名生成器用于获取和发布请求并且工作正常。
仍然试图弄清楚我在这里做错了什么。
def cancel_order(cl_order_id):
url = '/api/v1/order'
verb = 'DELETE'
data = {'clOrdID':cl_order_id} # Cancel order.
expires = int(round(time.time()) + 86400)
signature = generate_signature(secret, verb, url, expires, json.dumps(data).replace(' ', ''))
headers = {'api-expires': str(expires), 'api-key': api_key, 'api-signature': signature}
response = requests.delete(base_url + url, headers=headers, params=data)
print('Cancelling the order {} ... '.format(cl_order_id))
print(response.json())
def generate_signature(secret, verb, url, expires, data):
"""Generate a request signature compatible with BitMEX."""
parsedURL = urllib.parse.urlparse(url)
path = parsedURL.path
if parsedURL.query:
path = path + '?' + parsedURL.query
if isinstance(data, (bytes, bytearray)):
data = data.decode('utf8')
message = bytes(verb + path + str(expires) + data, 'utf-8')
print(message)
signature = hmac.new(bytes(secret, 'utf-8'), message, digestmod=hashlib.sha256).hexdigest()
return signature