Zum Inhalt springen

Tyler_Durden

Mitglied
  • Gesamte Inhalte

    29
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Tyler_Durden

  1. Lange Antwort: https://www.bitcoin.de/de/api/tapi/doc#scrollNav-10 Kurze Antwort: Nein
  2. Ist korrekt. Ich habe seit einigen Tagen eine Nachricht bei mir: Gibt im Marktplatz auch eine XRP / EUR Rubrik.
  3. 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 mir connection 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
  4. 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: LINK zB ist da die reason aufgeschlüsselt. die für mich sehr relevant ist.
  5. 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.
  6. 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
  7. 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?
  8. 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.
  9. 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?
  10. 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)
  11. 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 würde es meiner Meinung Nach mit einbeziehen.
  12. 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?
  13. 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.
  14. 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.
  15. 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: 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.
  16. 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?
  17. 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_id Aber auch mit der uri in der hmac_data, also https://api.bitcoin.de/v4/btceur/trades/ kommt der code 5 Fehler. Je nach Trust-Level auf Bitcoin.de hast du ein anderes Maximum.
  18. 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}
  19. 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.
  20. 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 mir Ich 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
  21. 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.
  22. 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. 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.
×
×
  • Neu erstellen...

Wichtige Information

Wir haben Cookies auf Deinem Gerät platziert. Das hilft uns diese Webseite zu verbessern. Du kannst die Cookie-Einstellungen anpassen, andernfalls gehen wir davon aus, dass Du damit einverstanden bist, weiterzumachen.