Tyler_Durden
-
Gesamte Inhalte
29 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Blogs
Shop
Kalender
Downloads
Galerie
Beiträge von Tyler_Durden
-
-
Lange Antwort: https://www.bitcoin.de/de/api/tapi/doc#scrollNav-10
Kurze Antwort: Nein
-
Ist korrekt.
Ich habe seit einigen Tagen eine Nachricht bei mir:
ZitatSie gehören zu den ausgesuchten Kunden, die den Ripple (XRP) - Handel in der Beta-Phase nutzen. Bitte haben Sie Verständnis dafür, dass wir den Ripple - Handel sowie die Ein- / und Auszahlungen von XRP in der Beta-Phase manuell überwachen werden und aus diesem Grund zunächst nur tagsüber (Montag bis Freitag) ermöglichen werden.
Gibt im Marktplatz auch eine XRP / EUR Rubrik.
- 1
-
Am 7.2.2021 um 14:35 schrieb Noobfire:
Wenn man jetzt noch in einem extra Thread immer wieder einmal ein Ping Paket ("2") gesendet wird, bricht diese Verbindung auch nicht ab und läuft im Prinzip endlos.
Ich wieder 😐
Mein Code läuft soweit, wie ich es mir vortslle und loggt schön meinen Datensatz weg Danke erst einmal dafür, jetzt spare ich mir das Orderbuck abrufen und bin sogar noch kompletter.
Allerdings stoße ich jetzt auf die von dir erwähnten Verbindungsabbrüche
connection established: 2021-02-11 18:05:46 WebSocket connection accepted with {'sid': '', 'upgrades': [], 'pingInterval': 25000, 'pingTimeout': 5000} [...] packet queue is empty, aborting Exiting write loop task Received packet NOOP data None WebSocket connection was closed, aborting Waiting for write loop task to end Engine.IO connection dropped Connection failed, new attempt in 0.96 seconds Exiting read loop task disconnected from server: 2021-02-11 18:06:16
Wobei diese alle 30 Sekunden auftreten. (pingInterval + pingTimeout: 25000+5000 ms?)
Ich habe es auch mit dem Ping ws.send("2") probiert und bekomme auch die 3 als Serverantwort. Der Abbruch folgt aber trotzdem, auch wenn ich über websocket statt socketio verbinde.
Ich habe keine analoge Methodik für die socketio gefunden um die Verbindung offen zu halten.
Momentan lasse ich den Code einfach laufen. Allerdings spammt mirconnection established 2021-02-11 18:12:48 packet queue is empty, aborting disconnected from server 2021-02-11 18:13:18 connection established 2021-02-11 18:13:19
meinen Output zu
-
Der Interpreter für das Projekt ist D:\Programme\Python\Python39\python.exe
Was mich etwas wundert ist, dass die Shell bei python help auf [...]\AppData\Local\Microsoft\WindowsApps verweist, in dem auch noch mal python.exe und python3.9.exe liegen.
Das weiß ich aber nicht, wie die Pythoninstallation die Dateien ablegt und ob das nur ein Verweis ist.
Edit:
Anscheinend ist über den Windows Store eine Pythoninstanz installiert, und ich habe es manuell installiert gehabt.
Ich versuche das mal zusammen zu ziehen.
Bis jetzt ist es nicht aufgefallen, da ich alle packages über pycharm installiert habe. Wenn ich jetzt den client über pip3 install installiert habe, hat er es auf die windows Store installation geschrieben (wo auch immer die liegt).Ich deinstalliere jetzt alles, starte neu und installierte noch einmal. Mal sehen was dann rum kommt.
Edit2:
Jetzt ist alles klar. Alle meine Probleme kamen anscheinend tatsächlich daher, dass ich 2 mal python installiert hatte (wie auch immer und warum auch immer das ging)
Vielen lieben Dank! Jetzt kann ich mich damit beschäftigen die events durchzuarbeiten.
Vielleicht kann ich dir als Dank eine kleine Hilfe geben: LINKzB ist da die reason aufgeschlüsselt. die für mich sehr relevant ist.
Zitat"0yzjOGFy3vQgfFm0re8." : Durch Nutzer gelöscht
"0yxjWYBw2RVoMdjPhsLkivcyUrDYnJQ." : Angebot ausgelaufen
und wenn erfolgreich angenommen
"0yyDOGDwkTklP1BR" : gekauft
"0yzjXAA9kDutfQA." : verkauft
ZitatAttempting WebSocket connection to wss://ws3.bitcoin.de/socket.io/1/?transport=websocket&EIO=4
WebSocket connection accepted with {'sid': '07hn71jG3YqNyOUkCz0Y', 'upgrades': [], 'pingInterval': 25000, 'pingTimeout': 5000}
Engine.IO connection established
Sending packet MESSAGE data 0/market
Received packet MESSAGE data 0
Namespace / is connected
connection established
Received packet MESSAGE data 0/market,
Namespace /market is connected
Received packet MESSAGE data 2/market,["refresh_express_option",{"124434364":{"is_trade_by_sepa_allowed":"0","is_trade_by_fidor_reservation_allowed":"1","trading_pair":"btceur"}}]
Received event "refresh_express_option" [/market] -
vor einer Stunde schrieb Noobfire:
pip3 install python-socketio python-engineio websockets
Windows ist korrekt.
Über pip3 list bekomme ich foldende Packages, die installiert sind.
Package Version ---------------- --------- bidict 0.21.2 certifi 2020.12.5 chardet 4.0.0 idna 2.10 pip 21.0.1 python-engineio 4.0.0 python-socketio 5.0.4 requests 2.25.1 setuptools 3.3 six 1.15.0 urllib3 1.26.2 websocket-client 0.57.0 websockets 3.3
Interessanterweise bekomme ich in Pycharm
PyJWT 1.7.1 2.0.1 bidict 0.21.2 0.21.2 cachetools 4.2.0 4.2.1 certifi 2020.12.5 2020.12.5 chardet 4.0.0 4.0.0 google-api-core 1.25.0 1.25.1 google-api-python-client 1.12.8 1.12.8 google-auth 1.24.0 1.25.0 google-auth-httplib2 0.0.4 0.0.4 google-auth-oauthlib 0.4.2 0.4.2 googleapis-common-protos 1.52.0 1.52.0 gspread 3.6.0 3.6.0 httplib2 0.18.1 0.18.1 idna 2.10 3.1 oauthlib 3.1.0 3.1.0 pip 21.0 21.0.1 protobuf 3.14.0 3.14.0 pyasn1 0.4.8 0.4.8 pyasn1-modules 0.2.8 0.2.8 python-engineio 4.0.0 4.0.0 python-socketio 5.0.4 5.0.4 pytz 2020.5 2021.1 requests 2.25.1 2.25.1 requests-oauthlib 1.3.0 1.3.0 rsa 4.7 4.7 setuptools 52.0.0 53.0.0 six 1.15.0 1.15.0 twilio 6.51.0 6.51.1 uritemplate 3.0.1 3.0.1 urllib3 1.26.2 1.26.3 Und das erscheint mir schon einleuchtender. Jetzt befürchte ich, dass ich hier irgdnwie eine Pythonverwirrung drin habe. 😱
Muss ich mal schauen, was da los ist.
-
Ah, ok.
Guter Tipp.
Es kommt websocket-client package not installed, only polling transport is available
Ich habe also offentsichtlich das falsche package installiert.
Dann brauche ich sogar hier mal einen Tipp.
Wenn ich
pip3 install "python-socketio[client]"
in der Shell ausführe, bekomme ich ein Packet namens websocket-client, dass über
import socketio
nicht eingebunden werden kann.
Ich habe dann die Library manuell durchsucht nach dem websocket packat, das laut Signatur von Miguel Grinberg ist: python-socketio.
Die Verlinkung führt auch zu der githubpage, dessen Dokumentation du oben geteilt hast.Und schon stehe ich auf dem Schlauch
-
Danke erstmal an euch beide, da ihr euch ja wirklich tief in die GEschichte reingefuchst habt, und ich - da der Websocket nicht klappte - alle paar sekunde für mien Projekt das Orderbuch abfrage
Eher so Weg des geringsten Widerstands als Eleganz.
Da ich aber bei eurer für mich beeindruckenden Unterhaltung ca 5 Niveais zu tief einsteige habe ich noch ein paar Fragen.
Ich habe nun das socketio-Packet von Miguel Grinberg eingebunden und dein (noobfire) Codebeispiel läuft ohne Fehler durch.
Allerdings Endet der Code nach einem Durchlauf "erfolgreich".
Es erscheint nicht mal das
@sio.on('connect') def connect(): print('connection established')
Event.
Ich habe irgendwie erwartet, dass die Prozedur weiterläuft und bei einkommenden Ereignissen die Daten ausgibt, wie es bei dem socketio-client-tool der Fall ist, wenn man die Events korrekt eingibt.
Habe ich einen Denkfehler bzw. wo liegt dieser?
-
Ich möchte kokoloko an dieser Stelle einmal danken.
Ich kannte diesen Gesprächsfaden noch nicht und konnte die ganze Achternbahn der Gefühle einmal im vollen genießen.
Interessant, dass sich an den ausbleibdenden Support-Antworten auch 2020/2021 anscheinend nichts getan hat. Von einer verschlechterung des Supports kann man also wirklich nicht sprechen
Lustig auch, dass beim Kursverlust auf den Kurs von 3700€ verwiesen ist. Das tiefe Tal der Trauer nach '17.
-
Ich kann dir nur sagen, dass auf dem iPhone bei mir alles gut funktioniert.
iOS 14.3, iPhone 11, Appversion 2.0.202010141600
Besteht in deinem Netz vielleicht ein Inhaltsblocker/Firewall?
Ist die Appverbindung in deinem Acount noch auf Aktiv gesetzt?
-
Am 22.1.2021 um 17:10 schrieb flynk:
Hi,
könntest du mal den kompletten Code zeigen mit dem du die Bitcoin API zu dieser Fehlermeldung bringst.
Ich hab versucht den Code zu rekonstruieren, scheitere jedoch.Vielen Dank schonmal im voraus.
Ich hatte die Post-Parameter nicht im body des Requests:
headers = {'X-API-KEY': api_key, 'X-API-NONCE': nonce, 'X-API-SIGNATURE': h.hexdigest()} body = {'amount_currency_to_trade': Menge,'payment_option': 1, 'type': Typ} r = requests.post(url, headers=headers, data=body)
-
Hallo liebe Coinler,
da der Support seit Wochen nicht antwortet und ich im FAQ nicht schlauer werde, hoffe ich auf eure Erfahrung/Wissen zurückgreifen zu können.
Wird der Kickback nur gutgeschrieben, wenn ein Trade über die API abgeschlossen wird?
Explizit frage ich für den Gegenfall, ob der Kickback auch dann gilt, wenn das Kauf/Verkaufsangebot - eines erfolgreichen Trades - über die API erstellt wurde.
Der Absätze zu dem Thema
ZitatBei Nutzung der Trading-API [...]
Wird ein Handel über die Trading-API ausgeführt, [...]
würde es meiner Meinung Nach mit einbeziehen.
-
vor 11 Minuten schrieb fox42:
Richtig. Und dann kann man entsprechend reagieren, wenn etwas ansteht. ZB Order löschen, oder was auch immer.
letzte Nervfrage zu dem Thema, ich häte den code in die vorherige Nachricht präventiv tippen sollen:
if 'maintenance' in response.json(): print(response.json()["maintenance"]["start"] + " bis " + response.json()["maintenance"]["end"] + " - Grund: " + response.json()["maintenance"]["message"])
Verstehe ich den Aufbau der Maintenance-Details korrekt, dass der Code funktionieren müsste?
-
vor 6 Stunden schrieb fox42:
Die genaue Antwort habe ich nicht geloggt..
2021-01-19 10:00:50,616 WARN [] - Maintenance is scheduled from 2021-01-19T11:00:00+01:00 until 2021-01-19T11:30:00+01:00 2021-01-19 10:00:50,616 WARN [] - *** Scheduled maintainance on 2021/01/19 at 11:00 am (CET / UTC+1) *** Due to an update Bitcoin.de will be unavailable from 11:00 am for approx. 30 minutes. *** 2
Aber das kann man sich aus der API Doku herleiten:
Globale Werte im Response
Name Required Type Value Notes errors true array [{"message":"abc","code":123, "field" => "field_abs"}]
Liste mit Error-Meldungen und dazugehörigen Error-Codes. credits true integer -- Anzahl aktuell verbleibender Credits maintenance false array array Infos bzgl. Wartungsarbeiten (s. Tabelle "Maintenance-Details" nonce false integer -- Sofern der "Error-Code 4 (Invalid nonce)" auftritt, wird das letzte gültige Nonce in diesem Feld ausgegeben Maintenance-Details
Name Required Type Value Notes message true string -- Infotext start true string -- Start der Arbeiten (Format: 2015-04-07T12:23:04+02:00 gemäß RFC 3339) end true string -- Voraussichtliches Ende der Arbeiten (Format: 2015-04-07T12:23:04+02:00 gemäß RFC 3339) verstehe ich das richtig, dass die maintainence Info dann nur in der Response existiert, wenn eine ansteht?
Weil im Standard ist sie ja nicht drin.
Dann würde ich jetzt in meine Schleife eine Abfarge einbauen, die das maintenance list-element abfragt und ggf ausgibt.
-
vor 30 Minuten schrieb fox42:
Über die API knapp nach Punkt 10
Wie das?
Habe ich geloggt.
-
vor einer Stunde schrieb newuserhere:
Angeblich ist die Seite derzeit unter Wartungsarbeiten und das voraussichtliche Ende wird immer um zehn Minuten verschoben.
Diese Arbeiten wurden nicht angekündigt und weder per Email / Telefon ist ein Kontakt möglich. Auch die App funktioniert nicht mehr.
Hat jemand mehr Informationen hierzu?
Es war angekündigt.
Auf der Hauptseite habe ich ca 10-15 Minuten vorher ein Banner gesehen, dass die Wartungsarbeiten um 11:00 beginnen und ~30 minuten dauern.
Um 11:25 oder so habe ich dann gesehen, dass sie im auf der Wartungsseite als Ende 11:40 angegeben haben. -
Kleines Update auch für dich, wenn du dann so weit bist:
Die Post-Parameter müssen im Body übergeben werden.
Das habe ich jetzt gemacht und es kommt auch alles so wie es soll beim Server an:ZitatAPI-Aktion: executeTrade Angelegt am: 17. Januar 2021 23:13:45 CET API-Key: RED Request-URI: https://api.bitcoin.de/v4/btceur/trades/TESTETSTETSTETSTETS HTTP-Methode: POSTPOST-Parameter: { "amount_currency_to_trade":"0.01", "payment_option":"1", "type":"buy" }
Jetzt bekomme ich 'errors': [{'message': 'Invalid order_id', 'code': 26, 'field': 'order_id'}].
Also quasi das, was ich provoziert habe mit der Test-Order. Ich denke, dass der Trade dann durchgehen sollte, wenn die Order ID korrekt ist.- 1
-
vor 2 Stunden schrieb Mr.Davidwater:
Hast du schon versucht bei ID, Menge und den Rest mal manuell einzugeben. Die Umwandlung sieht für mich was ich sehe eigentlich richtig aus, habe es jetzt noch nicht selbst ausgeführt.
Ich würde jetzt erst mal versuchen, alles was geht, manuell einzugeben um das erstmal auszuschließen.
Gute Idee, das versuche ich morgen mal.
Wenn ich die Daten in ein Print gebe sieht es gut aus, aber wer weiß.Du hast also Post-Methoden noch nicht in Angriff genommen?
-
vor einer Stunde schrieb Mr.Davidwater:
Also ich sehe bei der Dokumentation, das hier beim hmac_data die uri verwendet wird: hmac_data = http_method+'#'+uri+'#'+api_key+'#'+nonce+'#'+post_parameter_md5_hashed_url_encoded_query_string
Du verwendest die url !
Bin jetzt mir nicht sicher ob das der Fehler ist, aber irgendwas mit deiner Signature wieder.
Das ist glaube ich eine Variablenbezeichnungfrage. Mein Code ist natürlich etwas stümperhaft und ungelenk.
Meine Varaible url ist final: https://api.bitcoin.de/v4/btceur/trades/[ID]
Stimmt also mit der URL inTrades - executeTrade überein: https://api.bitcoin.de/v4/:trading_pair/trades/:order_idAber auch mit der uri in der hmac_data, also https://api.bitcoin.de/v4/btceur/trades/ kommt der code 5 Fehler.
ZitatEdit: Bin echt überrascht das du 43 Credits hast, ich habe nur 23.
Je nach Trust-Level auf Bitcoin.de hast du ein anderes Maximum.
-
Wahrscheinlich bin ich wieder irgendwie bescheuert, und der Fehler ist offentsichtlich.
Aber ich habe es gegengecheckt und sehe ihn nicht.Ich wollte nun, wo meine Get-Prozeduren laufen und ich die Daten soweit verarbeite und abspeichere eine manuelle Post-Prozedur schreiben.
Sinn ist quasi einfach der ersten Posten der Kaufen-Seite zu kaufen (in diesem Fall die minimal mögliche Menge)Code sieht sinngemäß so aus:
nonce = str(int(time.time() * 1000000)) uri = "https://api.bitcoin.de/v4/btceur/trades/" #URL aus Trades - executeTrade http_method = 'POST' ID = buy.json()["orders"][0]["order_id"] #ID der günstigsten Oder ermitteln Menge = str(buy.json()["orders"][0]["min_amount_currency_to_trade"]) #Minimalmenge ermitteln url = uri + ID #Ergänzen um die Ordernummer url_encoded_query_string = "amount_currency_to_trade="+Menge+"&payment_option=1&type=buy" #POST - Parameter in alph. Reihenfolge post_parameter_md5_hashed_url_encoded_query_string = hashlib.md5(bytes(url_encoded_query_string.encode())).hexdigest() #md5 encoding - leerer String gibt korrrekt "d41d8cd98f00b204e9800998ecf8427e" aus hmac_data = http_method + '#' + url + '#' + api_key + '#' + nonce + '#' + post_parameter_md5_hashed_url_encoded_query_string#Aus Schritt 4 h = hmac.new(bytes(api_secret, 'utf-8'), hmac_data.encode(encoding='utf-8'), hashlib.sha256) #Aus funktionierender Get-Methode headers = {'X-API-KEY': api_key, 'X-API-NONCE': nonce, 'X-API-SIGNATURE': h.hexdigest()} r = requests.post(url, headers=headers) print(r.json())
Vielleicht müsste ich es meiner Gummiente erklären, aber die ist gerade nicht zugegen.
Daher hoffe ich, dass einer von euch direkt mit der Hand vor die Stirn schlägt und mir den Fehler zeigt und am besten erklärt.
PS: r.json() = {'errors': [{'message': 'Invalid signature', 'code': 5}], 'credits': 43}
-
vor einer Stunde schrieb bjew:
och, dann solltest fairerweise auch die Lösung schreiben .......
-
vor 1 Stunde schrieb Mr.Davidwater:
Hi,
ich probiere es auch mit Python und bekomme die selbe Error Message.
Ich schaue mich grade für Lösungen und alternative um, wenn ich es nicht mit der API von Bitcoin.de hin bekomme, würde ich auf die Kraken API wechseln. Jedoch ist mein Englisch für solch ein Fachbereich leicht eingeschränkt. Vielleicht können wir uns zusammen tun und gemeinsam ein Fehler freien Request bekommen.Also mein Request ist jetzt sauber durchgelaufen.
Interessanterweise klappt es, wenn ich die uri als variable übergebe, nicht aber, wenn ich sie noch einmal als string an der gleichen Stelle eintrage.
Weiß nciht warum, aber jetzt geht es.- 1
-
vor 49 Minuten schrieb ¯\_(ツ)_/¯:
Hab schon ewig nichts mehr mit der bitcoin.de API gemach, aber mein Account geht sogar noch... Hab mir mal eben die Abschnitte mit der Signature angeschaut und mal deinen python code entsprechend angepasst.
Die Stelle hast du wohl überlesen " Als Konsequenz kann bei GET- und DELETE-Requests der md5-Hash d41d8cd98f00b204e9800998ecf8427e für Variable post_parameter_md5_hashed_url_encoded_query_stringverwendet werden." und auch den Schritt 4 nicht mit übernommen ?!
Viel spass damit...
Vielen vielen Dank.
Ich hatte offentsichtlich einen anderen Fehler als Davidwater, aber du hast mir hiermit sehr geholfen.
Zusätzlich hatte ich aber auch einen Nonce, der anscheinend mal mit einem zu großen Faktor multipliziert war, das heißt es gab noch mehere Probleme bei mirIch habe gerade keine Orders, daher ist meine response leer. Ich will also das orderbook aufrufen, und da klappt es wieder nicht.
Bin vielleicht mit den Parametern nicht fit genug, aber das bekommeich hoffentlich auch noch hin
-
Am 5.1.2021 um 13:33 schrieb Mr.Davidwater:
Hi, bin gerade auch an dem selben Problem. Hast du schon irgendwelche Fortschritte gemacht. Wenn ich es auf der selben Art wie du mache, bekomme ich den selben Fehler. Jedoch bei meiner Variante bekomme ich nur Invalide Signature, mit Fehler Meldung.
Hallo David,
ich gehe davon aus, du nutzt auch Python als Sprache?
Ich habe keine hilfreiche Antwort vom bitcoin.de-Team bekommen.
Wenn ich zu Hause bin, schaue ich mal, wo ich bei dem Code aufgehört habe daran zu arbeiten, da auch dieser Thread hier eher... weniger hilfreich war.Letztes mal war es die response "message: Invalid signature", "code: 5" und meine credits.
-
vor 2 Stunden schrieb MixMax:
Signaturen sind in der Regel nicht deterministisch, daher kann man sie nicht vergleichen.
Auch wenn die Signatur für eine erhöhte Sicherheit (alleine schon wegen des immer anderen nonce) immer anders sein wird, habe ich zumindest ausprobieren können, ob der Text "Dies ist ein Text" mit dem Secret Key 12345 das selbe Ergebnis ausgibt.
Dies war der Fall.
vor 13 Stunden schrieb casiopaya:Eventuell kannst du dir doch mal den Code von github runterladen, den ans Laufen bringen und dann vergleichen, was dein code und der github code an Signatur produziert.
Leider sieht es so aus, als sei im Fall von dem Github-Modul die Signatur noch nicht Teil der API-Interaktion. Daher ist das nicht mögich.
Websocket vs Socket.IO / Socket.IO zeigt keine Events
in Bitcoin.de Trading API
Geschrieben · Bearbeitet von Tyler_Durden
Ups, habe übersehen, dass es eine Seite 2 gab.