BingX api 如何在永久交换 api v2 中交易订单?

问题描述 投票:0回答:1

我正在尝试在 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

python trading
1个回答
0
投票

如果要选择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 + "&timestamp=" + sTime + "&side=" + side + "&type=" + _type + "&price=" + price + "&quantity=" + quantity + "&signature=" + createSignature("symbol="+symbol+"&timestamp="+sTime+"&side="+side+"&type="+_type+"&price="+price+"&quantity="+quantity))
case "MARKET":
    dataSign = strings.NewReader("symbol=" + symbol + "&timestamp=" + sTime + "&side=" + side + "&type=" + _type + "&quantity=" + quantity + "&signature=" + createSignature("symbol="+symbol+"&timestamp="+sTime+"&side="+side+"&type="+_type+"&quantity="+quantity))
case "TRIGGER_LIMIT":
    dataSign = strings.NewReader("symbol=" + symbol + "&timestamp=" + sTime + "&side=" + side + "&type=" + _type + "&price=" + price + "&stopPrice=" + stopPrice + "&quantity=" + quantity + "&signature=" + createSignature("symbol="+symbol+"&timestamp="+sTime+"&side="+side+"&type="+_type+"&price="+price+"&stopPrice="+stopPrice+"&quantity="+quantity))
case "STOP_MARKET", "TAKE_PROFIT_MARKET", "TRIGGER_MARKET":
    dataSign = strings.NewReader("symbol=" + symbol + "&timestamp=" + sTime + "&side=" + side + "&type=" + _type + "&stopPrice=" + stopPrice + "&quantity=" + quantity + "&signature=" + createSignature("symbol="+symbol+"&timestamp="+sTime+"&side="+side+"&type="+_type+"&stopPrice="+stopPrice+"&quantity="+quantity))
}

在BingX交易所使用API得出结论并以未来模式交易后,我能够解决这个问题。 如果您的问题没有解决,请再次发帖,以便我指导您。

© www.soinside.com 2019 - 2024. All rights reserved.