All
Filtrer etter:
Hvordan setter jeg inn penger på kontoen min?
Jeg trenger hjelp med kontobekreftelse
Hvorfor kan jeg ikke få tilgang til kontoen min?
Finnes det noen gebyrer for uttak av krypto?
Jeg trenger hjelp med å logge på kontoen min
REST API kommandolinjeklienten i Python gir full tilgang til Krakens REST API via kommandolinjen (som Terminal på macOS), og derfor kreves ingen programmeringskunnskap eller API-erfaring.
Alle REST API-funksjoner er tilgjengelige, inkludert:
offentlige markedsdata-endepunkter
private kontodata-endepunkter
private handels-endepunkter
private finansierings-endepunkter
private earn-endepunkter
Kommandolinjeklienten kan brukes som en frittstående API-klient, eller kan kalles fra andre programmer (som andre tolkningsspråk som Bash-skript, eller kompilerte språk som C/C++).
1. Installer Python 3 (om nødvendig).
macOS og Linux har muligens allerede Python 3 installert.
Windows har sannsynligvis ikke Python 3 installert, men det kan installeres fra https://www.python.org/.
2. Last ned og lagre filen krakenapi.py på datamaskinen din i mappen (katalogen) du velger.
For eksempel: Macintosh HD > Users > Satoshi > KrakenAPI
3. Åpne en kommandoprompt (som macOS' Terminal), og naviger til mappen (katalogen) valgt i forrige trinn. Du kan bruke UNIX/Linux "cd"-kommandoen (change directory) for å navigere.
For eksempel:cd /Users/Satoshi/KrakenAPI
4. Gjør krakenapi.py-filen kjørbar.
Du kan bruke UNIX/Linux "chmod 755"-kommandoen (change mode).
For eksempel: chmod 755 krakenapi.py
5. Legg til API-nøkkelen din i samme mappe der du oppbevarer krakenapi.py-filen.
Kopier/lim inn din offentlige API-nøkkel fra kontoadministrasjon i en ren tekstfil kalt "API_Public_Key".
Kopier/lim inn din private (hemmelige) API-nøkkel i en ren tekstfil kalt "API_Private_Key".
Instruksjoner for å opprette/konfigurere en API-nøkkel er tilgjengelige.
En API-nøkkel er kun nødvendig hvis du planlegger å bruke de private API-endepunktene for å få tilgang til Kraken-kontoen din (som saldoforespørsler, plassering/kansellering av ordre, eksport av kontohistorikk, osv.).
Bruken av REST API kommandolinjeklienten er som følger:
./krakenapi.py endpoint [parameters] [-pretty]
Kommandolinjeklienten støtter alle REST API-endepunktene, så følgende er bare noen få eksempelkommandoer:
Python
# Time
./krakenapi.py Time
# Ticker
./krakenapi.py Ticker pair=xbtusd
# Trades
./krakenapi.py Trades pair=etheur since=1574067140000000000
# Balance
./krakenapi.py Balance
# Trade Balance
./krakenapi.py TradeBalance asset=xbt
# Query Orders
./krakenapi.py QueryOrders txid=O7MN22-ZCX7J-TGLQHD
# Add Order
./krakenapi.py AddOrder pair=xbtusd type=buy ordertype=limit price=6500 volume=0.002 leverage=5
# Cancel Order
./krakenapi.py CancelOrder txid=O7MN22-ZCX7J-TGLQHDSom standard vil kommandolinjeklienten vise den originale API-responsen (JSON egnet for tolkning via kode), men hvis et ekstra kommandolinjeargument -pretty brukes:
./krakenapi.py TradeBalance asset=shib -pretty
vil klienten deretter vise den samme API-responsen som menneskevennlig JSON (med linjeskift/innrykk).
Python
#!/usr/bin/env python3
# Kraken Rest API
#
# Usage: ./krakenapi endpoint [parameters]
# Example: ./krakenapi Time
# Example: ./krakenapi OHLC pair=xbtusd interval=1440
# Example: ./krakenapi Balance
# Example: ./krakenapi TradeBalance asset=xdg
# Example: ./krakenapi OpenPositions
# Example: ./krakenapi AddOrder pair=xxbtzusd type=buy ordertype=market volume=0.003 leverage=5
import sys
import time
import base64
import hashlib
import hmac
import urllib.request
import json
api_public = {"Time", "Assets", "AssetPairs", "Ticker", "OHLC", "Depth", "Trades", "Spread", "SystemStatus"}
api_private = {"Balance", "BalanceEx", "TradeBalance", "OpenOrders", "ClosedOrders", "QueryOrders", "TradesHistory", "QueryTrades", "OpenPositions", "Ledgers", "QueryLedgers", "TradeVolume", "AddExport", "ExportStatus", "RetrieveExport", "RemoveExport", "GetWebSocketsToken", "CreateSubaccount", "AccountTransfer"}
api_trading = {"AddOrder", "AddOrderBatch", "EditOrder", "CancelOrder", "CancelOrderBatch", "CancelAll", "CancelAllOrdersAfter","OrderAmends","AmendOrder","ListSubaccounts"}
api_funding = {"DepositMethods", "DepositAddresses", "DepositStatus", "WithdrawMethods", "WithdrawAddresses", "WithdrawInfo", "Withdraw", "WithdrawStatus", "WithdrawCancel", "WalletTransfer"}
api_staking = {"Earn/Strategies", "Earn/Allocations", "Earn/Allocate", "Earn/Deallocate", "Earn/AllocateStatus", "Earn/DeallocateStatus", "Staking/Assets", "Staking/Balance", "Stake", "Unstake", "Staking/Pending", "Staking/Transactions"}
api_domain = "https://api.kraken.com"
api_data = ""
output_format = 0
if len(sys.argv) < 2:
api_method = "Time"
elif len(sys.argv) == 2:
api_method = sys.argv[1]
else:
api_method = sys.argv[1]
for count in range(2, len(sys.argv)):
if sys.argv[count] == '-pretty':
output_format = 1
continue
if count == 2:
api_data = sys.argv[count]
else:
api_data = api_data + "&" + sys.argv[count]
if api_method in api_private or api_method in api_trading or api_method in api_funding or api_method in api_staking:
api_path = "/0/private/"
api_nonce = str(int(time.time()*1000))
try:
api_key = open("API_Public_Key").read().strip()
api_secret = base64.b64decode(open("API_Private_Key").read().strip())
except:
print("API public key and API private (secret) key must be in plain text files called API_Public_Key and API_Private_Key")
sys.exit(1)
api_postdata = api_data + "&nonce=" + api_nonce
api_postdata = api_postdata.encode('utf-8')
api_sha256 = hashlib.sha256(api_nonce.encode('utf-8') + api_postdata).digest()
api_hmacsha512 = hmac.new(api_secret, api_path.encode('utf-8') + api_method.encode('utf-8') + api_sha256, hashlib.sha512)
api_request = urllib.request.Request(api_domain + api_path + api_method, api_postdata)
api_request.add_header("API-Key", api_key)
api_request.add_header("API-Sign", base64.b64encode(api_hmacsha512.digest()))
api_request.add_header("User-Agent", "Kraken REST API")
elif api_method in api_public:
api_path = "/0/public/"
api_request = urllib.request.Request(api_domain + api_path + api_method + '?' + api_data)
api_request.add_header("User-Agent", "Kraken REST API")
else:
print("Usage: %s method [parameters]" % sys.argv[0])
print("Example: %s OHLC pair=xbtusd interval=1440" % sys.argv[0])
sys.exit(1)
try:
api_reply = urllib.request.urlopen(api_request).read()
except Exception as error:
print("API call failed (%s)" % error)
sys.exit(1)
try:
api_reply = api_reply.decode()
except Exception as error:
if api_method == 'RetrieveExport':
sys.stdout.buffer.write(api_reply)
sys.exit(0)
print("API response invalid (%s)" % error)
sys.exit(1)
if '"error":[]' in api_reply:
print(api_reply if output_format == 0 else json.dumps(json.loads(api_reply), indent = 4))
sys.exit(0)
else:
print(api_reply if output_format == 0 else json.dumps(json.loads(api_reply), indent = 4))
sys.exit(1)