带有python、请求和签名的币安期货

问题描述

我正在尝试使用请求模块与 python 交易币安期货。

我有以下代码

import requests
import time
API_KEY ="your key"
SECRET_KEY="your secret key"

base_url = "https://fapi.binance.com"
api_path = "/fapi/v1/order"

headers={
'X-MBX-APIKEY': API_KEY
}

my_time=int(time.time() * 1000)
my_timestamp="timestamp="+str(my_time)

url_open=base_url+api_path+"?symbol=MATICUSDT&side=BUY&type=MARKET&quantity=40&"+my_timestamp+"&signature="+SECRET_KEY

response = requests.get(url_open,headers=headers)

代码返回以下错误: {"code":-1022,"msg":"此请求的签名无效。"}

我也尝试过对签名进行哈希处理:

import hmac
import hashlib
query_string="symbol=MATICUSDT&side=BUY&type=MARKET&quantity=40&"+my_timestamp
HashSig=hmac.new(SECRET_KEY.encode('utf-8'),query_string.encode('utf-8'),hashlib.sha256).hexdigest()

url_open=base_url+api_path+"?symbol=MATICUSDT&side=BUY&type=MARKET&quantity=40&"+my_timestamp+"&signature="+HashSig

response = requests.get(url_open,headers=headers)

这也会返回错误: {"code":-1022,"msg":"此请求的签名无效。"}

并且我尝试了以下代码

query_string=my_timestamp
HashSig=hmac.new(SECRET_KEY.encode('utf-8'),headers=headers)

这给出了同样的错误: {"code":-1022,"msg":"此请求的签名无效。"}

我不知道怎么做签名,有人可以帮我吗 我在谷歌上搜索了很多,但我找不到解决方案。 我的目标是用 python 在币安上交易期货

解决方法

首先,我认为您需要发出 post 请求而不是 get 创建订单的请求。检查 API 文档:https://binance-docs.github.io/apidocs/futures/en/#new-order-trade

我在使用 Binance API 时也遇到过类似的问题。

这最终对我有用:

from urllib.parse import urlencode
import hmac

params = {'symbol':'MATICUSDT','side':'BUY','type':'MARKET','quantity':40,'timestamp': int(time.time() * 1000) - 3000
}

signature_payload = urlencode(params)
signature = hmac.new(SECRET_KEY.encode(),signature_payload.encode(),'sha256').hexdigest()
params['signature'] = signature

# pass the params to requests.post
# I took a different approach though

我还必须从时间戳中减去 3000,否则服务器一直在抱怨。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...