Ccxt: HitBTC: Übertragung zwischen Konten mithilfe einer einheitlichen API

Erstellt am 26. Okt. 2017  ·  45Kommentare  ·  Quelle: ccxt/ccxt

Hallo,

Es fällt mir schwer herauszufinden, wie man einheitliche API-Parameter für die Übertragung zwischen Konten verwendet. Zum Beispiel möchte ich Vermögenswerte zwischen Haupt- und Handelskonten auf hitbtc mithilfe der folgenden Endpunkte verschieben: / api / 1 / Zahlung / transfer_to_trading und / api / 1 / Zahlung / transfer_to_main (https://hitbtc.com/api#transfer)

Wie soll mein ccxt-Aufruf aussehen? Könnten Sie bitte ein Python-Beispiel angeben?

Vielen Dank,

duplicate question

Hilfreichster Kommentar

Zunächst einmal vielen Dank, dass Sie dies gemeldet haben!

Und du verschwendest nicht meine Zeit, überhaupt keine Sorgen.
Tatsächlich sammle ich diese Artefakte, also nochmals vielen Dank! )

Lassen Sie uns wissen, wenn Sie andere Schwierigkeiten damit haben! Prost!

Alle 45 Kommentare

Hallo, @ Fcl69!

Bereit? Bitte schön:

hitbtc.payment_post_transfer_to_trading ({
   'amount': 0.01,
   'currency_code': 'BTC',
})

hitbtc.payment_post_transfer_to_main ({
   'amount': 0.01,
   'currency_code': 'BTC',
})

↑ von hier: https://github.com/ccxt-dev/ccxt/issues/286#issuecomment -334932900

Beachten Sie außerdem, dass die übertragende API noch nicht vereinheitlicht ist, da die meisten Börsen diese nicht haben. Wir werden es später vereinheitlichen, wenn wir die Bestell-API vereinheitlicht haben.

Es war einfach. Ich habe es getestet und es scheint gut zu funktionieren.

Nebenbei bemerkt, wo ist es möglich, eine Liste aller Methoden zu sehen?
Da zum Beispiel hitbtc "transfer_to_trading" aufruft, ccxt jedoch "payment_post_transfer_to_trading" aufruft
Man würde es nie erfahren. Eine Liste könnte helfen.

Vielen Dank,

Hier:

https://github.com/ccxt-dev/ccxt/wiki/Manual#api -method-naming-Konventionen

console.log (new ccxt.kraken ())   // JavaScript
print (dir (ccxt.hitbtc ()))        # Python
var_dump (new \ccxt\okcoinusd ()); // PHP

api_methods

Mein Fehler. Verpasste es beim Lesen des Handbuchs. Nochmals vielen Dank für Ihre schnelle Antwort!

no-problemo

Hallo,

Es scheint, dass dies nicht mehr funktioniert.
Code:
exch = ccxt.hitbtc({ 'apiKey': 'key', 'secret': 'sec', 'enableRateLimit': True, 'verbose': True, }) return exch order = exch.payment_post_transfer_to_trading ({'amount': 0.02, 'currency_code': 'ETH',})

Ausgabe:

http://api.hitbtc.com/api/1/payment/transfer_to_main?apikey=api&nonce=1511884495558 POST http://api.hitbtc.com/api/1/payment/transfer_to_main?apikey=key&nonce=1511884495558
.0-h1.1-b0.3-
Anfrage: {'X-Signature': 'sig', 'Content-Type': 'application / x-www-form-urlencoded', 'Accept-Encoding': 'gzip, deflate', 'User-Agent': ' ccxt / 1.10.247 (+ https: //github.com/ccxt/ccxt) Python / 3.5.2 '}rency_code = ETH & apikey = api & nonce = 1511884495558 & betrag = 0.02
hitbtc POST http://api.hitbtc.com/api/1/payment/transfer_to_main?apikey=api&nonce=1511884495558 503 Service nicht verfügbar

503 Dienst nicht verfügbar


Für diese Anforderung ist kein Server verfügbar.

Wenn ich benutze
hitbtc2 im selben Code
es sagt:




Error

POST / api / 2 / transfer_to_main kann nicht gesendet werden


@ Fcl69 danke für die Meldung. Sieht so aus, als würden sie v1 → v2 wechseln. Ich werde das so schnell wie möglich beheben.

Vielen Dank und lassen Sie mich wissen, ob ich in diesem Fall v1 oder v2 verwenden soll und ob die Methoden ihre Benennung behalten.

@ Fcl69 ok, von nun an solltest du v2 folgendermaßen verwenden:


hitbtc = ccxt.hitbtc2({'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_SECRET', 'enableRateLimit': True})

# balances (unified API)

hitbtc.fetch_balance({'type':'trading'})
hitbtc.fetch_balance({'type':'account'})

# transfers (custom private API)

hitbtc.private_post_account_transfer({'currency': 'BTC', 'amount': 1.0, 'type': 'bankToExchange'})
hitbtc.private_post_account_transfer({'currency': 'BTC', 'amount': 1.0, 'type': 'exchangeToBank'})

Das Obige ist bereits in der aktuellen Version von ccxt verfügbar (Sie müssen höchstwahrscheinlich nicht aktualisieren, wenn Sie eine Neuinstallation davon haben). Wir sind Ihnen dankbar, wenn Sie uns mitteilen, ob es die Arbeit für Sie erledigt und ob Sie Schwierigkeiten damit haben. Danke!

Insbesondere dieser scheint gelöst zu sein, aber es sieht so aus, als ob der Rückzug nicht mehr funktioniert. Der Versuch, die Ursache herauszufinden:

Traceback (letzter Anruf zuletzt):
Datei "/home/fcl/.local/lib/python3.5/site-packages/ccxt/base/exchange.py", Zeile 310, in Abruf
response = opener.open (Anfrage, Timeout = int (self.timeout / 1000))
Datei "/usr/lib/python3.5/urllib/request.py", Zeile 472, geöffnet
Antwort = Meth (req, Antwort)
Datei "/usr/lib/python3.5/urllib/request.py", Zeile 582, in http_response
'http', Anfrage, Antwort, Code, msg, hdrs)
Datei "/usr/lib/python3.5/urllib/request.py", Zeile 510, fehlerhaft
return self._call_chain ( args)Datei "/usr/lib/python3.5/urllib/request.py", Zeile 444, in _call_chainErgebnis = Funktion ( Argumente)
Datei "/usr/lib/python3.5/urllib/request.py", Zeile 590, in http_error_default
HTTPError auslösen (req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP-Fehler 400: Ungültige Anforderung

@ Fcl69 können Sie die ausführliche Ausgabe aktivieren?

sicher...

Code:

    exch = ccxt.hitbtc2({
        'apiKey': 'key',
        'secret': 'sec',
        'password': 'passphrase',
        'enableRateLimit': True,
        'verbose': True,
        })
        order1 = exch.private_post_account_transfer({'currency': 'ETH', 'amount': 7.98, 'type': 'exchangeToBank'})
       time.sleep(1.5)
       order = exch.withdraw('ETH', 7.98, 'wallet')

Ausgabe:

https://api.hitbtc.com/api/2/account/transfer POST https://api.hitbtc.com/api/2/account/transfer
Anfrage: {'Authorization': 'Basic ooooo =', 'Content-Type': 'application / json', 'Accept-Encoding': 'gzip, deflate', 'User-Agent': 'ccxt / 1.10.247 ( + https: //github.com/ccxt/ccxt) Python / 3.5.2 '} {"Betrag": 7.98, "Währung": "ETH", "Typ": "exchangeToBank"}
POST https://api.hitbtc.com/api/2/account/transfer
Antwort: Inhaltstyp: application / json; Zeichensatz = utf-8
Inhaltslänge: 45
Datum: Di, 28 Nov 2017 23:49:24 GMT
Verbindung: schließen

{"id": "id1"}
{'id': 'id1'}

dh es bewegte sich erfolgreich. Dann:

https://api.hitbtc.com/api/2/account/crypto/withdraw POST https://api.hitbtc.com/api/2/account/crypto/withdraw
Anfrage: {'Authorization': 'Basic oooooo =', 'Content-Type': 'application / json', 'Accept-Encoding': 'gzip, deflate', 'User-Agent': 'ccxt / 1.10.247 ( + https: //github.com/ccxt/ccxt) Python / 3.5.2 '} {"Adresse": "Brieftasche", "Währung": "ETH", "Betrag": "7,98"}
hitbtc2 Unzureichende Mittel

@ Fcl69 ist das die gesamte Ausgabe, die ausführlich geschrieben wird: True? Irgendwo in der Nähe sollte eine Antwort auf den Rückzugsanruf erfolgen ...

'verbose': True,

und es ist alles was ich habe:

https://api.hitbtc.com/api/2/account/crypto/withdraw POST https://api.hitbtc.com/api/2/account/crypto/withdraw
Anfrage: {'Authorization': 'Basic ooooooo =', 'User-Agent': 'ccxt / 1.10.247 (+ https: //github.com/ccxt/ccxt) Python / 3.5.2', 'Content-Type ':' application / json ',' Accept-Encoding ':' gzip, deflate '} {"Betrag": "7.98", "Adresse": "Brieftasche", "Währung": "ETH"}
hitbtc2 Unzureichende Mittel

@ Fcl69 ok, danke für das Feedback, ich werde es debuggen und mich hoffentlich bald mit einem Fix bei Ihnen

Übrigens funktioniert hitbtc api v1 auch nicht mit demselben Fehler - 503 Service Unavailable -.
Daher würde ich mich über ein schnelles Feedback freuen. Vielen Dank!

@ Fcl69 bitte

@ Fcl69 Sind Sie sicher, dass Sie Ihre Auszahlungslimits mit HitBTC übrigens nicht überschreiten?

Nein, da ich manuell abheben kann.

Können Sie versuchen, HitBTC v2 mit der ccxt-Version 1.10.257 (neueste Version) zurückzuziehen (wie zuvor)?

Ich werde Sir. In wenigen Stunden. Jetzt in einem Flugzeug :)

geprüft. Es ist alles das Gleiche :(

https://api.hitbtc.com/api/2/account/crypto/withdraw POST https://api.hitbtc.com/api/2/account/crypto/withdraw
Anfrage: {'Accept-Encoding': 'gzip, deflate', 'User-Agent': 'ccxt / 1.10.257 (+ https: //github.com/ccxt/ccxt) Python / 3.5.2', 'Authorization ':' Basic = ',' Content-Type ':' application / json '} {"Währung": "ETH", "Betrag": 9,9, "Adresse": "Brieftasche"}
hitbtc2 Unzureichende Mittel

PS ausführlich ist eingeschaltet; Geld bewegt sich von Haupt- und Handelskonten kein Problem. Gleichgewicht ist ausreichend.

@ Fcl69 Entschuldigung, dass Sie dies gefragt haben, aber ... haben Sie "Zurückziehen" für diesen API-Schlüssel aktiviert? Wenn das alles in Ordnung ist, werde ich etwas Geld in HitBTC stecken und dann ausgiebig auf meiner Seite testen. Ich werde mich so schnell wie möglich bei Ihnen melden. Lassen Sie mich wissen, ob Sie alle Berechtigungen korrekt eingerichtet haben. Danke!

Tut mir nicht leid Es wäre ein Mist herauszufinden, dass ich es vermasselt habe, also bin ich bereit, alles zu testen. Ja, es ist eingeschaltet: https://cl.ly/3b1p470X1616

PS Alter, schläfst du jemals? ;)

Ja, es ist an

Genau wie ich dachte ... Das war meistens eine falsche zufällige Vermutung. Ok, es scheint, dass wir hier schwere Artillerie brauchen, also werde ich die Tests durchführen und hoffe, dies in den kommenden Stunden endlich zu lösen. Werde dich natürlich benachrichtigen.

PS Alter, schläfst du jemals? ;)

Oh, schieß, das habe ich vergessen, werde das auch beheben%))

Versuchte diesen JavaScript-Code und es hat funktioniert. Dies ist also höchstwahrscheinlich ein Problem mit der Reihenfolge der Python-Diktate. Fast fertig, es zu reparieren.

"use strict";

const ccxt      = require ('../../ccxt.js')
const asTable   = require ('as-table')
const log       = require ('ololog').configure ({ locate: false })

require ('ansicolor').nice;

const getPositiveAccounts = function (balance) {
    const result = {}
    Object.keys (balance)
        .filter (currency => balance[currency] && (balance[currency] > 0))
        .forEach (currency => {
            result[currency] = balance[currency]
        })
    return result
}

;(async () => {

    // instantiate the exchange
    let exchange = new ccxt.hitbtc2  ({
        "apiKey": "MYKEY",
        "secret": "MYSECRET",
        "enableRateLimit": true,
    })

    try {

        let tradingBalance = await exchange.fetchBalance ()
        let accountBalance = await exchange.fetchBalance ({ type: 'account' })

        log.cyan    ('Trading balance:', getPositiveAccounts (tradingBalance.total))
        log.magenta ('Account balance:', getPositiveAccounts (accountBalance.total))

        // withdraw
        let withdraw = await exchange.withdraw ('ETH', 0.01, '0x811DCfeb6dC0b9ed825808B6B060Ca469b83fB81')

        // output the result
        log (exchange.name.green, 'withdraw', withdraw)

    } catch (e) {

        if (e instanceof ccxt.DDoSProtection || e.message.includes ('ECONNRESET')) {
            log.bright.yellow ('[DDoS Protection] ' + e.message)
        } else if (e instanceof ccxt.RequestTimeout) {
            log.bright.yellow ('[Request Timeout] ' + e.message)
        } else if (e instanceof ccxt.AuthenticationError) {
            log.bright.yellow ('[Authentication Error] ' + e.message)
        } else if (e instanceof ccxt.ExchangeNotAvailable) {
            log.bright.yellow ('[Exchange Not Available Error] ' + e.message)
        } else if (e instanceof ccxt.ExchangeError) {
            log.bright.yellow ('[Exchange Error] ' + e.message)
        } else if (e instanceof ccxt.NetworkError) {
            log.bright.yellow ('[Network Error] ' + e.message)
        } else {
            throw e;
        }
    }

}) ()

Ich habe auch dieses Python-Beispiel ausprobiert ... und ... es hat bei mir funktioniert.

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

from pprint import pprint

import os
import sys

import ccxt  # noqa: E402

def get_positive_accounts(balance):
    result = {}
    currencies = list(balance.keys())
    for currency in currencies:
        if balance[currency] and balance[currency] > 0:
            result[currency] = balance[currency]
    return result


exchange = ccxt.hitbtc2({
    "apiKey": "a34ca826b430bdfcca969241b0f7bd2d",
    "secret": "7b28d6b17aea18ae39903add0dae048a",
    "enableRateLimit": True,
})


trading_balance = exchange.fetch_balance()
account_balance = exchange.fetch_balance({'type': 'account'})

pprint('Trading balance:')
pprint(get_positive_accounts(trading_balance['total']))
pprint('Account balance:')
pprint(get_positive_accounts(account_balance['total']))

withdraw = exchange.withdraw('ETH', 0.01, '0x811DCfeb6dC0b9ed825808B6B060Ca469b83fB81')

pprint('Withdraw:')
pprint(withdraw)

screen shot 2017-11-30 at 20 19 29

Bist du sicher, dass deine Schlüssel in Ordnung sind?

Scheisse :(

Ich werde versuchen, einen brandneuen Schlüssel zu bekommen und mit dem obigen Code zu arbeiten. Ich werde euch auf dem Laufenden halten.

@ Fcl69 scheint mir ein Schlüssel- / Limit-Problem zu sein. Ich habe keine 7-9 ETH auf HitBTC, um Ihre speziellen Einstellungen zu testen, aber im Allgemeinen müssen wir möglicherweise sogar das Support-Team anpingen, um festzustellen, ob es ein implizites Limit für API-Abhebungen in Ihrem Konto gibt ... Stellen Sie auch sicher, dass Ihre Die installierte ccxt-Version ist auf dem neuesten Stand.

@ Fcl69 HitBTC hat auch einen bekannten, aber nicht dokumentierten Fehler mit seinen Schlüsseln. Daher sollten Sie sie im Allgemeinen deaktivieren und wieder aktivieren oder sie einfach neu erstellen, damit die Schlüssel ordnungsgemäß in ihre Datenbank aufgenommen werden. Dies scheint mir jedoch eher ein Limitproblem zu sein, kein Schlüsselproblem für mich, da frühere Weiterleitungsanrufe für Sie funktioniert haben. Dies könnte also auch ein "Problem mit dem Entzug von Berechtigungen" sein. Wie auch immer, lassen Sie uns alle möglichen Gründe einzeln ausschließen.

Der wahrscheinlichste Grund für das oben

Ich glaube wirklich nicht, dass es der Fall ist, aber ich werde es auch testen. Gib mir bitte 2-3 Stunden

@ Fcl69 versuchen Sie es in kleinere Stücke zu zerbrechen, ziehen Sie zuerst zurück, überprüfen Sie, ob es funktioniert, führen Sie dann eine Übertragung + Zurückziehen, dann eine Übertragung + längeres Warten + Zurückziehen usw. durch ...

Ich glaube, ich habe das Problem gefunden. Damit...
Ich habe versucht, den vollen Betrag, den ich auf dem Hauptkonto hatte, abzuheben. Es hieß "Unzureichende Mittel". Ich habe versucht, einen niedrigeren Betrag abzuheben, es hat funktioniert. Das Problem war, dass es den vollen Betrag abgehoben hatte + es wurden auch Gebühren für das Abheben vom Hauptkonto erhoben. Zuvor wurden hitbtc Abhebungsgebühren vom Abhebungsbetrag selbst abgezogen. : - \ Hündinnen ...
Ich muss meine Codelogik aktualisieren.
Und es tut mir schrecklich leid, dass ich Ihre Zeit hier verschwendet habe.

Zunächst einmal vielen Dank, dass Sie dies gemeldet haben!

Und du verschwendest nicht meine Zeit, überhaupt keine Sorgen.
Tatsächlich sammle ich diese Artefakte, also nochmals vielen Dank! )

Lassen Sie uns wissen, wenn Sie andere Schwierigkeiten damit haben! Prost!

Hallo,

Ich weiß nicht, ob es in Ordnung ist, auf eine geschlossene Frage zu antworten, aber wenn dies nicht der Fall ist, lassen Sie es mich bitte wissen und ich werde eine neue Frage erstellen. Gibt es eine Möglichkeit zu erkennen, wenn Sie sich den Austauschcode ansehen, dass eine private / benutzerdefinierte Methode vorhanden ist? So zum Beispiel mit diesem und dem Handel zwischen Hauptkonto und Handelskonto.

In der Definition sehe ich:
'post': [ 'order', # Create new order 'account/crypto/withdraw', # Withdraw crypro 'account/crypto/address/{currency}', # Create new deposit crypro address 'account/transfer', # Transfer amount to trading

Aber dann weiß ich nicht, wie ich es verwenden oder die oben erwähnte Methode finden soll.

Ich weiß, dass es sich um eine Anfängerfrage handelt, und vielleicht wurde sie irgendwo zuvor beantwortet. Zeigen Sie mir einfach auf den Link, falls vorhanden.

Vielen Dank,

Josiah

@ ballaj2001

Hallo!

Aber dann weiß ich nicht, wie ich es verwenden oder die oben erwähnte Methode finden soll.

https://github.com/ccxt/ccxt/wiki/Manual#implicit -api-Methoden

Ohhh danke.

Ich glaube, ich habe diesen Teil des Handbuchs gelesen, aber ich wusste nicht, was es damals bedeutete. Das ist großartig.

Hallo! Kann jemand auflisten, welche Börsen using

exchange.payment_post_transfer_to_trading ({
   'amount': 0.01,
   'currency_code': 'BTC',
})  

??

Ich habe gelesen, dass nicht alle Börsen sie verwenden.

@Firiyuu hi, diese bestimmte Methode ist eine reine HitBTC-spezifische Methode (nur HitBTC). Weitere Informationen zu diesen Methoden: https://github.com/ccxt/ccxt/wiki/Manual#implicit -api-Methoden

Was wäre eine API, um zu überprüfen, wann immer die Übertragung zwischen Guthaben <> Handelskonten deaktiviert ist, um Fehler zu vermeiden?

@pinpins Dieser Aspekt ist nicht vollständig vereinheitlicht (wir sind noch in Arbeit), aber wir werden die Unterstützung dafür in einer austauschunabhängigen Weise innerhalb von exchange.currencies verpacken. In der Zwischenzeit können Sie immer noch innerhalb der Währung darauf zugreifen, um dies auf hitbtc2-spezifische Weise zu überprüfen:

mbp:ccxt igorkroitor$ node examples/js/cli hitbtc2 currency ETH
hitbtc2.currency (ETH)
{        id:   "ETH",
       code:   "ETH",
       type:   "crypto",
      payin:    true,
     payout:    true,
   transfer:    true,  # ←-------------------------------- HERE
       info: {                 id: "ETH",
                         fullName: "Ethereum",
                           crypto:  true,
                     payinEnabled:  true,
                   payinPaymentId:  false,
               payinConfirmations:  2,
                    payoutEnabled:  true,
                payoutIsPaymentId:  false,
                  transferEnabled:  true,  # ←-------------------------------- HERE
                         delisted:  false,
                        payoutFee: "0.00958"   },
       name:   "Ethereum",
     active:    true,
        fee:    0.00958,
  precision:    8,
     limits: {   amount: { min: 1e-8, max: 100000000 },
                  price: { min: 1e-8, max: 100000000 },
                   cost: { min: undefined, max: undefined },
               withdraw: { min: undefined, max: 100000000 }  } }
mbp:ccxt igorkroitor$
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen