Ccxt: Ist es möglich, mehrere Bestellungen Binance aufzugeben

Erstellt am 15. Apr. 2020  ·  40Kommentare  ·  Quelle: ccxt/ccxt

Hallo

In Binance-Futures gibt es einen Endpunkt , um mehrere Bestellungen in einer Anfrage aufzugeben. Gibt es eine Methode, um das zu tun? Ich benutze Python.

Wenn nicht vorhanden, wie kann eine benutzerdefinierte Methode am besten hinzugefügt werden?

question

Alle 40 Kommentare

Hallo!

Gibt es eine Methode, um das zu tun? Ich benutze Python.

Nein, derzeit haben wir keine einheitliche Methode, um Bestellungen in großen Mengen aufzugeben, aber wir werden diese so schnell wie möglich hinzufügen.

Wenn nicht vorhanden, wie kann eine benutzerdefinierte Methode am besten hinzugefügt werden?

In der Zwischenzeit können Sie diesen Endpunkt mithilfe der impliziten API-Methoden austauschspezifisch verwenden, wie im Handbuch hier erläutert: https://github.com/ccxt/ccxt/wiki/Manual#implicit -api-Methoden . Auf diese Weise können Sie einen beliebigen Endpunkt aufrufen.

Lassen Sie uns wissen, wenn dies die Frage nicht beantwortet. Fühlen Sie sich frei, es wieder zu öffnen oder stellen Sie einfach weitere Fragen, falls vorhanden. Wir werden unser Bestes tun, um den "Bulk" -Aspekt so schnell wie möglich zu vereinheitlichen und auf neue Ankündigungen und Updates gespannt zu sein.

@ kroitor Vielen Dank für Ihre schnelle Antwort.
Die implizite API scheint mir eine großartige Lösung zu sein.
Ich versuche es und erhalte diesen Fehler
AttributeError: 'binance' object has no attribute 'fapiPrivatePostBatchOrders'

Ich habe die Methode define_rest_api verwendet, um den Code zu überprüfen
Ich drucke diese Zeile
camelcase = api_type + camelcase_method + Exchange.capitalize(camelcase_suffix)

Ich sehe meine Methode fapiPrivatePostBatchOrders aber ich finde andere ähnliche Methoden wie fapiPrivateGetPositionRisk die für mich funktionieren.

Sollte ich es irgendwo hinzufügen, damit es funktioniert? Es scheint, dass der Code meine Methode mit den verfügbaren Binance-Endpunkten vergleicht, sie nicht findet und dann einen Fehler auslöst.

Sollte ich es irgendwo hinzufügen, damit es funktioniert?

Nein, sorry, es wurde vor nicht allzu langer Zeit eingeführt, daher war es in den vorherigen CCXT-Versionen nicht verfügbar. Allerdings habe ich jetzt die erforderlichen Definitionen hochgeladen. Wenn Sie auf die neueste CCXT-Version 1.26.42+ aktualisieren, wird diese Methode dort angezeigt. Entschuldigen Sie, dass Sie dies nicht erwähnt haben. Lassen Sie mich wissen, wenn Sie nach dem Upgrade noch Probleme haben. Danke für die Berichterstattung!

@ Kroitor Ich batchOrders in binance.py

Es wurde zu get Array hinzugefügt. Ich denke, es sollte stattdessen zu post und delete hinzugefügt werden.
Ich habe das gemacht und es hat funktioniert.
Danke noch einmal.

@albatarnik ja, du hast recht, ich hätte mehr aufpassen sollen, es in 1.26.43 behoben, der neue Build wird in 15 Minuten eintreffen. Nochmals vielen Dank für Ihr Engagement!

@ Kroitor

Haben Sie eine Idee, warum ich diesen Fehler erhalte?
{'code': -1130, 'msg': "Data sent for parameter 'batchOrders:[{'symbol': 'BTCUSDT', 'side': 'BUY ', 'positionSide': 'LONG', 'type': 'MARKET', 'quantity': 0.005}]' is not valid."}

params =  {'batchOrders' : 
            [{
                "symbol" : "BTCUSDT",
                "side" : "BUY",
                "positionSide" : "LONG",
                "type" : "MARKET",
                "quantity": float(0.005)
            }]  
    }
    return ccxt.binance(keys).fapiPrivatePostBatchOrders(params)

Ich verwende den gleichen genauen Bestellparameter für die Nachbestellung und es funktioniert.

 return ccxt.binance(keys).fapiPrivatePostOrder( {
                "symbol" : "BTCUSDT",
                "side" : "BUY",
                "positionSide" : "LONG",
                "type" : "MARKET",
                "quantity": float(0.005)
            })

batchOrder sollte eine Liste gemäß den Binance-Dokumenten sein. Übergebe ich etwas Falsches?

@albatarnik Ich denke, es muss JSON-codiert sein. Wenn Sie das Handbuch genau befolgen und den ausführlichen Modus verwenden könnten, könnten Sie sehen, was genau an die Vermittlungsstelle gesendet wird und ob es dem von der Vermittlungsstelle erwarteten Format entspricht oder nicht:

exchange = ccxt.binance(keys)
exchange.verbose = True
params = {
    'batchOrders' : exchange.json([{
        "symbol" : "BTCUSDT",
        "side" : "BUY",
        "positionSide" : "LONG",
        "type" : "MARKET",
        "quantity": float(0.005)
    }])
}
exchange.fapiPrivatePostOrder(params)

Abgesehen davon kann der obige Fehler vom Austausch zurückgegeben werden, wenn irgendwo ein erforderliches Feld fehlt oder wenn die Werte in diesen Feldern nicht mit der Austauschspezifikation übereinstimmen. Lassen Sie mich wissen, wenn das nicht hilft.

@kroitor Ich bin sicher, dass kein Parameter fehlt. Glauben Sie, ich muss batchOrders an JSON codieren, um ihn als Liste zu übergeben?

Glaubst du, ich muss BatchOrders an JSON codieren, um es als Liste zu übergeben?

Nein, die Parameter müssen wahrscheinlich mit Array-Wiederholung urlencodiert werden. Es ist jedoch schwierig, die genaue Ursache ohne die ausführliche Ausgabe von Ihnen zu ermitteln. Kannst du es teilen?

@ Kroitor

Hilft das ?

Request: POST https://testnet.binancefuture.com/fapi/v1/batchOrders {'X-MBX-APIKEY': '', 'Content-Type': 'application/x-www-form
-urlencoded', 'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate'} timest
amp=1587060926204&recvWindow=5000&batchOrders=%5B%7B%27symbol%27%3A+%27BTCUSDT%27%2C+%27side%27%
3A+%27BUY%27%2C+%27positionSide%27%3A+%27LONG%27%2C+%27type%27%3A+%27MARKET%27%2C+%27quantity%27
%3A+0.005%7D%5D&signature=d389df8d64b7d098fb8d16aa300c2e85b06810e41da3e6049135366c4af9d8f1

Response: POST https://testnet.binancefuture.com/fapi/v1/batchOrders 400 {'Content-Type': 'appli
cation/json', 'Content-Length': '174', 'Connection': 'keep-alive', 'Date': 'Thu, 16 Apr 2020 18:
15:27 GMT', 'Server': 'Tengine', 'X-MBX-USED-WEIGHT-1M': '10', 'x-response-time': '2ms', 'X-Fram
e-Options': 'SAMEORIGIN', 'X-Xss-Protection': '1; mode=block', 'X-Content-Type-Options': 'nosnif
f', 'Referrer-Policy': 'origin-when-cross-origin', 'Strict-Transport-Security': 'max-age=3153600
0; includeSubdomains', 'X-Cache': 'Error from cloudfront', 'Via': '1.1 14eb24c973f72cd7fdce7ebf5
a06b76e.cloudfront.net (CloudFront)', 'X-Amz-Cf-Pop': 'GRU50', 'X-Amz-Cf-Id': '48fMpwrr4pkJJvDBU
L1AJO5W3acqqUv5vH-LiLJcmnaj3IiXQpRyEw=='} {"code":-1130,"msg":"Data sent for parameter 'batchOrders:[{'symbol': 'BTCUSDT', 'side': 'BUY', 'positionSide': 'LONG', 'type': 'MARKET', 'quantity': 0.005}]' is not valid."}

Ja, aus Binance-Dokumenten geht hervor, dass die Bestellungen JSON-codiert sein müssen:

Screen Shot 2020-04-16 at 21 18 10

Meine vorherige Antwort hat sich als richtig herausgestellt, und Folgendes sollte funktionieren:

exchange = ccxt.binance(keys)
exchange.verbose = True
params = {
    'batchOrders' : exchange.json([{
        "symbol" : "BTCUSDT",
        "side" : "BUY",
        "positionSide" : "LONG",
        "type" : "MARKET",
        "quantity": float(0.005)
    }])
}
exchange.fapiPrivatePostBatchOrders(params)

Lass es mich wissen, wenn nicht.

Verzeihung für die Verwirrung .

Jetzt erhalte ich 400 Fehler, der Endpunkt war korrekt, der gleiche, den Sie oben kommentiert haben!

Request: POST https://testnet.binancefuture.com/fapi/v1/batchOrders {'X-MBX-APIKEY': '', 'Content-Type': 'application/x-www-form
-urlencoded', 'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate'} timest
amp=1587061424110&recvWindow=5000&batchOrders=%5B%7B%22symbol%22%3A%22BTCUSDT%22%2C%22side%22%3A
%22BUY%22%2C%22positionSide%22%3A%22LONG%22%2C%22type%22%3A%22MARKET%22%2C%22quantity%22%3A0.005
%7D%5D&signature=43d4a60211f775d9c4fd4a52e83775e473d369d2cef1ccba47940e2294367fef

Response: POST https://testnet.binancefuture.com/fapi/v1/batchOrders 200 {'Content-Type': 'appli
cation/json', 'Content-Length': '38', 'Connection': 'keep-alive', 'Date': 'Thu, 16 Apr 2020 18:2
3:44 GMT', 'Server': 'Tengine', 'X-MBX-USED-WEIGHT-1M': '10', 'x-response-time': '2ms', 'X-Frame
-Options': 'SAMEORIGIN', 'X-Xss-Protection': '1; mode=block', 'X-Content-Type-Options': 'nosniff
', 'Referrer-Policy': 'origin-when-cross-origin', 'Strict-Transport-Security': 'max-age=31536000
; includeSubdomains', 'X-Cache': 'Miss from cloudfront', 'Via': '1.1 15a4ef612eb4a403e8f2af31a48
09e22.cloudfront.net (CloudFront)', 'X-Amz-Cf-Pop': 'GRU1-C1', 'X-Amz-Cf-Id': 'McbMj-fDcD694vj0k
cqiIei8gNxs_m0bXMnca2T3iYSEA3CTZ2EJgQ=='} [ {
  "code" : 400,
  "msg" : null
} ]

@albatarnik für mich sieht die obige Anfrage korrekt aus, ich meine, sie entspricht den Austauschspezifikationen. Ich bin mir nicht ganz sicher, ob Sie die positionSide angeben sollten, da sie optional ist. Möglicherweise möchten Sie die oben genannte ausführliche Ausgabe an den technischen Support von Binance senden, um Kommentare zu erhalten.

@albatarnik tatsächlich, nachdem man es genauer untersucht hat - der apiKey ist leer in der Anfrage, was nicht normal ist. Möglicherweise möchten Sie den Inhalt von keys in Ihrem Code überprüfen.

@ Kroitor Ich habe gerade entfernt, es ist tatsächlich da. Wissen Sie, wo ich das binance Support-Team kontaktieren kann?

@albatarnik yep, das Support-Formular von Binance finden Sie hier: https://binance.zendesk.com/hc/en-us/requests/new

@ Kroitor Danke für die Hilfe.

@albatarnik Wir mitteilen, ob Sie eine Lösung dafür haben oder nicht. Vielen Dank für Ihr Engagement!

@ Kroitor

Ich habe eine Antwort von binance erhalten. Es scheint, dass die von uns gesendete Codierung nicht korrekt ist.

import requests
url = "https://testnet.binancefuture.com/fapi/v1/batchOrders?batchOrders=[%7B%22symbol%22:%22BNBUSDT%22,%22side%22:%22BUY%22,%22type%22:%22MARKET%22,%22quantity%22:%221%22%7D,%7B%22symbol%22:%22BTCUSDT%22,%22side%22:%22BUY%22,%22type%22:%22MARKET%22,%22quantity%22:%221%22%7D]&timestamp=1587121469865&signature=x"

payload = {}
headers = {
  'X-MBX-APIKEY': 'x'
}

response = requests.request("POST", url, headers=headers, data = payload)

print(response.text.encode('utf8'))
===

_Bitte stellen Sie sicher, dass Sie im Parameter die Zeichen {,} und "codiert haben.
Bitte klicken Sie auf diesen Link https://dev.binance.vision/t/how-to-place-batch-orders-for-tutures/86 , um weitere Informationen zu erhalten.

Mir ist aufgefallen, dass wir Folgendes codieren: [ : bis %5B %3A und sie sind nicht in ihrem Beispiel

http://snpy.in/qPMBHD

@albatarnik Ich werde versuchen, eine

Hallo @albatarnik !

Ich habe die Problemumgehung hinzugefügt, um das oben genannte benutzerdefinierte Format zu unterstützen.
Bitte aktualisieren Sie zunächst auf die neueste Version von CCXT 1.26.48+.

Danach sollten Sie in der Lage sein, Stapelbestellungen bei Binance aufzugeben, wie im folgenden Beispiel gezeigt:

# -*- coding: utf-8 -*-

import ccxt  # noqa: E402


exchange = ccxt.binance({
    "apiKey": "YOUR_API_KEY",
    "secret": "YOUR_SECRET",
    'enableRateLimit': True,
})


orders = [
    {
        "symbol" : "BTCUSDT",
        "side" : "BUY",
        "positionSide" : "LONG",
        "type" : "MARKET",
        "quantity": float(0.005)
    }
]

orders = [exchange.encode_uri_component(exchange.json(order), safe=",") for order in orders]
response = exchange.fapiPrivatePostBatchOrders({
    'batchOrders': '[' + ','.join(orders) + ']'
})

print(response)

Lassen Sie mich wissen, wenn Sie noch Probleme oder Schwierigkeiten mit den oben genannten haben.
Ihr Feedback und Engagement wird sehr geschätzt! Danke für die Berichterstattung!

Es hat funktioniert, danke @kroitor . Ich freue mich sehr über Ihre schnelle Antwort!

Hallo,

Ich habe den gleichen Fehler beim Versuch, 5 Bestellungen mit fapiPrivatePostBatchOrders zu buchen:

exchange = open_exchange_connection(my_api, my_secret)
side = 'BUY'

orders = [
        {'symbol': 'BTCUSDT', 'type': 'LIMIT', 'price': 7000, 'timeInForce': 'GTC', 'side': side, 'reduceOnly': False, 'quantity': 0.001},
        {'symbol': 'BTCUSDT', 'type': 'LIMIT', 'price': 6000, 'timeInForce': 'GTC', 'side': side, 'reduceOnly': False, 'quantity': 0.002},
        {'symbol': 'BTCUSDT', 'type': 'LIMIT', 'price': 5000, 'timeInForce': 'GTC', 'side': side, 'reduceOnly': False, 'quantity': 0.003},
        {'symbol': 'BTCUSDT', 'type': 'LIMIT', 'price': 4000, 'timeInForce': 'GTC', 'side': side, 'reduceOnly': False, 'quantity': 0.004},
        {'symbol': 'BTCUSDT', 'type': 'LIMIT', 'price': 3000, 'timeInForce': 'GTC', 'side': side, 'reduceOnly': False, 'quantity': 0.005}
    ]

    orders = [exchange.encode_uri_component(exchange.json(order), safe=",") for order in orders]

    print(orders)

    response = exchange.fapiPrivatePostBatchOrders({
        'batchOrders': '[' + ','.join(orders) + ']'
    })

    print(response)

Und hier ist was ich bekomme:

['%7B%22symbol%22%3A%22BTCUSDT%22,%22type%22%3A%22LIMIT%22,%22price%22%3A7000,%22timeInForce%22%3A%22GTC%22,%22side%22%3A%22BUY%22,%22reduceOnly%22%3Afalse,%22quantity%22%3A0.001%7D', '%7B%22symbol%22%3A%22BTCUSDT%22,%22type%22%3A%22LIMIT%22,%22price%22%3A6000,%22timeInForce%22%3A%22GTC%22,%22side%22%3A%22BUY%22,%22reduceOnly%22%3Afalse,%22quantity%22%3A0.002%7D', '%7B%22symbol%22%3A%22BTCUSDT%22,%22type%22%3A%22LIMIT%22,%22price%22%3A5000,%22timeInForce%22%3A%22GTC%22,%22side%22%3A%22BUY%22,%22reduceOnly%22%3Afalse,%22quantity%22%3A0.003%7D', '%7B%22symbol%22%3A%22BTCUSDT%22,%22type%22%3A%22LIMIT%22,%22price%22%3A4000,%22timeInForce%22%3A%22GTC%22,%22side%22%3A%22BUY%22,%22reduceOnly%22%3Afalse,%22quantity%22%3A0.004%7D', '%7B%22symbol%22%3A%22BTCUSDT%22,%22type%22%3A%22LIMIT%22,%22price%22%3A3000,%22timeInForce%22%3A%22GTC%22,%22side%22%3A%22BUY%22,%22reduceOnly%22%3Afalse,%22quantity%22%3A0.005%7D']
[{'code': 400, 'msg': None}, {'code': 400, 'msg': None}, {'code': 400, 'msg': None}, {'code': 400, 'msg': None}, {'code': 400, 'msg': None}]

Kann mir bitte jemand helfen?

@mickeyahs hi! Wie initialisieren Sie den Austausch? Was ist Ihre Version von CCXT?

hi @kroitor ,

def open_exchange_connection(api='', secret=''):
    exchange = ccxt.binance(dict(apiKey=api, secret=secret, timeout=30000, enableRateLimit=True,
                                 urls={
                                     'api': {
                                         'public': 'https://fapi.binance.com/fapi/v1'
                                     }
                                 },
                                 options={
                                     'defaultType': 'future',
                                     'adjustForTimeDifference': True
                                 }
                                 ))
    return exchange

ccxt importieren
ccxt .__ version__
'1.27.1'

@mickeyahs haben Sie das gleiche Problem mit der neuesten Version 1.33.97?

@ Kroitor
Ja, gerade auf 1.33.97 aktualisiert,
gleicher Fehler

@mickeyahs

Versuchen wir zuerst eine Bestellung:

import ccxt
from pprint import pprint


print('CCXT Version:', ccxt.__version__)

exchange = ccxt.binance({
    'apiKey': 'YOUR_API_KEY',
    'secret': 'YOUR_SECRET',
    'enableRateLimit': True,
    'options': {
        'defaultType': 'future',
        'adjustForTimeDifference': True,
    },
})

markets = exchange.load_markets()

exchange.verbose = True  # for debugging purposes

symbol = 'BTC/USDT'
type = 'limit'
side = 'buy'  # or 'sell'
amount = YOUR_AMOUNT_HERE
price = YOUR_PRICE_HERE

order = exchange.create_order(symbol, type, side, amount, price)
pprint(order)

↑ Bearbeiten Sie dieses Snippet für Ihre Werte und führen Sie es aus. Kopieren Sie dann die ausführliche Ausgabe von Anfrage + Antwort hier.

@ Kroitor , der obige Code funktioniert für mich:

CCXT Version: 1.33.97

Request: POST https://fapi.binance.com/fapi/v1/order {'X-MBX-APIKEY': 'XXX', 'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate'} timestamp=1599212777156&recvWindow=5000&symbol=BTCUSDT&type=LIMIT&side=BUY&quantity=0.001&price=5000&timeInForce=GTC&signature=215be7f38393b1318b92962c2bce503c2c306706e0ca039627f07f1deb41c6eb

Response: POST https://fapi.binance.com/fapi/v1/order 200 {'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Date': 'Fri, 04 Sep 2020 09:46:17 GMT', 'Server': 'Tengine', 'Vary': 'Accept-Encoding', 'X-MBX-USED-WEIGHT-1M': '121', 'X-MBX-ORDER-COUNT-1M': '1', 'x-response-time': '5ms', 'X-Frame-Options': 'SAMEORIGIN', 'X-Xss-Protection': '1; mode=block', 'X-Content-Type-Options': 'nosniff', 'Referrer-Policy': 'origin-when-cross-origin', 'Strict-Transport-Security': 'max-age=31536000; includeSubdomains', 'Content-Encoding': 'gzip', 'X-Cache': 'Miss from cloudfront', 'Via': '1.1 5e71ebbd3e768e1e564c88b3632039d8.cloudfront.net (CloudFront)', 'X-Amz-Cf-Pop': 'WAW50-C1', 'X-Amz-Cf-Id': 'tRmufuxl6BAeCTEPhlBOSz0rwS9v2N5As8AsAyEOmK7Sw7zJ5rhrpw=='} {"orderId":7121690026,"symbol":"BTCUSDT","status":"NEW","clientOrderId":"iNfanfAWwGugmpELqzWOCx","price":"5000","avgPrice":"0.00000","origQty":"0.001","executedQty":"0","cumQty":"0","cumQuote":"0","timeInForce":"GTC","type":"LIMIT","reduceOnly":false,"closePosition":false,"side":"BUY","positionSide":"BOTH","stopPrice":"0","workingType":"CONTRACT_PRICE","priceProtect":"false","origType":"LIMIT","updateTime":1599212777448}
{'amount': 0.001,
 'average': None,
 'clientOrderId': 'iNfanfAWwGugmpELqzWOCx',
 'cost': 0.0,
 'datetime': None,
 'fee': None,
 'filled': 0.0,
 'id': '7121690026',
 'info': {'avgPrice': '0.00000',
          'clientOrderId': 'iNfanfAWwGugmpELqzWOCx',
          'closePosition': False,
          'cumQty': '0',
          'cumQuote': '0',
          'executedQty': '0',
          'orderId': 7121690026,
          'origQty': '0.001',
          'origType': 'LIMIT',
          'positionSide': 'BOTH',
          'price': '5000',
          'priceProtect': 'false',
          'reduceOnly': False,
          'side': 'BUY',
          'status': 'NEW',
          'stopPrice': '0',
          'symbol': 'BTCUSDT',
          'timeInForce': 'GTC',
          'type': 'LIMIT',
          'updateTime': 1599212777448,
          'workingType': 'CONTRACT_PRICE'},
 'lastTradeTimestamp': None,
 'price': 5000.0,
 'remaining': 0.001,
 'side': 'buy',
 'status': 'open',
 'symbol': 'BTC/USDT',
 'timestamp': None,
 'trades': None,
 'type': 'limit'}

Process finished with exit code 0

@ kroitor tritt das gleiche Problem auf?

@mickeyahs Ich werde es debuggen und mich so schnell wie möglich bei Ihnen melden.

@ Kroitor vielen Dank

@ Kroitor Hallo,
Gibt es Neuigkeiten zu diesem Thema?

@mickeyahs Ich werde mein Bestes geben, um das

@ Kroitor Hallo,

hast du es geschafft, es zu debuggen?

@mickeyahs arbeiten daran rn

@mickeyahs ok, bitte probieren Sie dieses Snippet jetzt aus:

import ccxt
from pprint import pprint


print('CCXT Version:', ccxt.__version__)

exchange = ccxt.binance({
    "apiKey": 'YOUR_API_KEY',
    "secret": 'YOUR_SECRET',
    'enableRateLimit': True,
    'options': {
        'defaultType': 'future',
        'adjustForTimeDifference': True,
    },
})

markets = exchange.load_markets()

balance = exchange.fetch_balance()
pprint(balance)

symbol = 'BTC/USDT'
type = 'limit'
side = 'buy'  # or 'sell'
amount = 0.01
price = 5000

market = exchange.market(symbol)

orders = [
    {
        'symbol': market['id'],
        'side': side.upper(),
        'type': type.upper(),
        'quantity': exchange.amount_to_precision(symbol, amount),
        'price': exchange.price_to_precision(symbol, price),
        'timeInForce': 'GTC',
    }
]

orders = [exchange.encode_uri_component(exchange.json(order), safe=",") for order in orders]

exchange.verbose = True  # for debugging purposes

response = exchange.fapiPrivatePostBatchOrders({
    'batchOrders': '[' + ','.join(orders) + ']'
})

pprint(response)

↑ Bitte bearbeiten Sie Ihre Werte (Schlüssel, Preis, Menge usw.) und fügen Sie hier Ihre ausführliche Ausgabe ein.

Sieht so aus, als hätte es funktioniert:

Request: POST https://fapi.binance.com/fapi/v1/batchOrders {'X-MBX-APIKEY': 'XXX', 'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'python-requests/2.23.0', 'Accept-Encoding': 'gzip, deflate'} timestamp=1599920654294&recvWindow=5000&batchOrders=[%7B%22symbol%22%3A%22BTCUSDT%22,%22side%22%3A%22BUY%22,%22type%22%3A%22LIMIT%22,%22quantity%22%3A%220.01%22,%22price%22%3A%225000%22,%22timeInForce%22%3A%22GTC%22%7D]&signature=1a8dd99abc5e5b8ffa79b77fafb260d3370df0eacc0fe722e8ebab9f7d4b74c8

Response: POST https://fapi.binance.com/fapi/v1/batchOrders 200 {'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Date': 'Sat, 12 Sep 2020 14:24:14 GMT', 'Server': 'Tengine', 'Vary': 'Accept-Encoding', 'X-MBX-USED-WEIGHT-1M': '50', 'X-MBX-ORDER-COUNT-1M': '1', 'x-response-time': '5ms', 'X-Frame-Options': 'SAMEORIGIN', 'X-Xss-Protection': '1; mode=block', 'X-Content-Type-Options': 'nosniff', 'Referrer-Policy': 'origin-when-cross-origin', 'Strict-Transport-Security': 'max-age=31536000; includeSubdomains', 'Content-Encoding': 'gzip', 'X-Cache': 'Miss from cloudfront', 'Via': '1.1 f62050e21268ac5026b6ccb68a1f0a2b.cloudfront.net (CloudFront)', 'X-Amz-Cf-Pop': 'WAW50-C1', 'X-Amz-Cf-Id': 'TrgNODlG0CifD9SYndFkGCde3i4ODTzkQytXcbh6WSV_wKlTC7veJw=='} [ {
  "orderId" : 7383208635,
  "symbol" : "BTCUSDT",
  "status" : "NEW",
  "clientOrderId" : "DNSB5JCFI6gvt8CoRPvqWa0",
  "price" : "5000",
  "avgPrice" : "0.00000",
  "origQty" : "0.010",
  "executedQty" : "0",
  "cumQty" : "0",
  "cumQuote" : "0",
  "timeInForce" : "GTC",
  "type" : "LIMIT",
  "reduceOnly" : false,
  "closePosition" : false,
  "side" : "BUY",
  "positionSide" : "BOTH",
  "stopPrice" : "0",
  "workingType" : "CONTRACT_PRICE",
  "priceProtect" : "false",
  "origType" : "LIMIT",
  "updateTime" : 1599920654604
} ]
[{'avgPrice': '0.00000',
  'clientOrderId': 'DNSB5JCFI6gvt8CoRPvqWa0',
  'closePosition': False,
  'cumQty': '0',
  'cumQuote': '0',
  'executedQty': '0',
  'orderId': 7383208635,
  'origQty': '0.010',
  'origType': 'LIMIT',
  'positionSide': 'BOTH',
  'price': '5000',
  'priceProtect': 'false',
  'reduceOnly': False,
  'side': 'BUY',
  'status': 'NEW',
  'stopPrice': '0',
  'symbol': 'BTCUSDT',
  'timeInForce': 'GTC',
  'type': 'LIMIT',
  'updateTime': 1599920654604,
  'workingType': 'CONTRACT_PRICE'}]

Process finished with exit code 0

@mickeyahs in Ordnung, von dort aus fügen Sie dem Array auf die gleiche Weise bis zu 5 Bestellungen hinzu. Es sieht so aus, als ob Binance jetzt ein strengeres Format von Parametern erfordert. Stellen Sie sicher, dass Sie die temporären Debugging-Aufträge stornieren.) Lassen Sie mich wissen, wenn Sie weitere Fragen oder Schwierigkeiten haben.

Ja, es funktioniert gut mit 5. Vielen Dank für die Untersuchung und Hilfe!
Ich wünsche dir ein schönes Wochenende 👍

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen