我正在尝试在 python 中使用 BingX API 下新订单,但我收到以下回复:
{"code":100001,"msg":"","success":false,"timestamp":1674818924644}
我使用以下代码交易新订单:
import urllib.request
import json
import base64
import hmac
import time
import json
APIURL = "https://open-api.bingx.com"
APIKEY = "MyApiKEY"
SECRETKEY = "MySecretKey"
def genSignature(paramsStr):
return hmac.new(SECRETKEY.encode("utf-8"),
paramsStr.encode("utf-8"), digestmod="sha256").digest()
def post(url, body):
req = urllib.request.Request(url, headers={
'User-Agent': 'Mozilla/5.0',
'X-BX-APIKEY': APIKEY,
}, method="POST")
return urllib.request.urlopen(req).read()
def tradeOrder(symbol, side, tradeType):
paramsMap = {
"symbol": symbol,
"side": side,
"type": tradeType,
"timestamp": int(time.time()*1000),
}
paramsStr = "&".join(["%s=%s" % (k, paramsMap[k]) for k in paramsMap])
paramsStr += "&signature=" + genSignature(paramsStr).hex()
url = "%s/openApi/swap/v2/trade/order?%s" % (APIURL, paramsStr)
return post(url, paramsStr)
def main():
tradeOrder("BTC-USDT", "BUY", "MARKET")
if __name__ == "__main__":
main()
这段代码有什么问题?
我正在使用 api v2,这是link
如果要选择Type的值为MARKET,则必须添加数量字段。
在 Golang 中:
now := time.Now()
// convert to unix time in milliseconds
unixMilli := now.UnixMilli()
fmt.Println("time:", now)
fmt.Println("Unix time in milliseconds:", unixMilli)
// a date value
sTime := fmt.Sprint(unixMilli * 1000)
var dataSign *strings.Reader
switch _type {
case "LIMIT":
dataSign = strings.NewReader("symbol=" + symbol + "×tamp=" + sTime + "&side=" + side + "&type=" + _type + "&price=" + price + "&quantity=" + quantity + "&signature=" + createSignature("symbol="+symbol+"×tamp="+sTime+"&side="+side+"&type="+_type+"&price="+price+"&quantity="+quantity))
case "MARKET":
dataSign = strings.NewReader("symbol=" + symbol + "×tamp=" + sTime + "&side=" + side + "&type=" + _type + "&quantity=" + quantity + "&signature=" + createSignature("symbol="+symbol+"×tamp="+sTime+"&side="+side+"&type="+_type+"&quantity="+quantity))
case "TRIGGER_LIMIT":
dataSign = strings.NewReader("symbol=" + symbol + "×tamp=" + sTime + "&side=" + side + "&type=" + _type + "&price=" + price + "&stopPrice=" + stopPrice + "&quantity=" + quantity + "&signature=" + createSignature("symbol="+symbol+"×tamp="+sTime+"&side="+side+"&type="+_type+"&price="+price+"&stopPrice="+stopPrice+"&quantity="+quantity))
case "STOP_MARKET", "TAKE_PROFIT_MARKET", "TRIGGER_MARKET":
dataSign = strings.NewReader("symbol=" + symbol + "×tamp=" + sTime + "&side=" + side + "&type=" + _type + "&stopPrice=" + stopPrice + "&quantity=" + quantity + "&signature=" + createSignature("symbol="+symbol+"×tamp="+sTime+"&side="+side+"&type="+_type+"&stopPrice="+stopPrice+"&quantity="+quantity))
}
在BingX交易所使用API得出结论并以未来模式交易后,我能够解决这个问题。 如果您的问题没有解决,请再次发帖,以便我指导您。