All
Filtrera efter:
Hur gör jag en kontantinsättning till mitt konto?
Jag behöver hjälp med kontoverifiering
Varför kan jag inte komma åt mitt konto?
Finns det avgifter för kryptoutttag?
Jag behöver hjälp med att logga in på mitt konto
REST API-kommandoradsklienten i Python ger full åtkomst till Krakens REST API via kommandoraden (som Terminal på macOS), vilket innebär att ingen programmeringskunskap eller API-erfarenhet krävs.
Alla REST API-funktioner är tillgängliga, inklusive:
offentliga slutpunkter för marknadsdata
privata slutpunkter för kontodata
privata slutpunkter för handel
privata slutpunkter för finansiering
privata slutpunkter för intjäning
Kommandoradsklienten kan användas som en fristående API-klient, eller kan anropas från andra program (som andra tolkade språk som Bash-skript, eller kompilerade språk som C/C++).
1. Installera Python 3 (vid behov).
macOS och Linux har förmodligen redan Python 3 installerat.
Windows har förmodligen inte Python 3 installerat, men det kan installeras från https://www.python.org/.
2. Ladda ner och spara filen krakenapi.py på din dator i den mapp (katalog) du väljer.
Till exempel: Macintosh HD > Users > Satoshi > KrakenAPI
3. Öppna en kommandotolk (som macOS's Terminal), och navigera till den mapp (katalog) som valdes i föregående steg. Du kan använda UNIX/Linux-kommandot "cd" (change directory) för att navigera.
Till exempel:cd /Users/Satoshi/KrakenAPI
4. Gör filen krakenapi.py körbar.
Du kan använda UNIX/Linux-kommandot "chmod 755" (change mode).
Till exempel: chmod 755 krakenapi.py
5. Lägg till din API-nyckel i samma mapp där du förvarar filen krakenapi.py.
Kopiera/klistra in din publika API-nyckel från kontohanteringen i en vanlig textfil med namnet "API_Public_Key".
Kopiera/klistra in din privata (hemliga) API-nyckel i en vanlig textfil med namnet "API_Private_Key".
Instruktioner för att skapa/konfigurera en API-nyckel finns tillgängliga.
En API-nyckel behövs endast om du planerar att använda de privata API-slutpunkterna för att komma åt ditt Kraken-konto (såsom saldoförfrågningar, placering/annullering av order, export av kontohistorik, etc).
Användningen av REST API-kommandoradsklienten är följande:
./krakenapi.py endpoint [parameters] [-pretty]
Kommandoradsklienten stöder alla REST API-slutpunkter, så följande är bara några exempelkommandon:
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 kommer kommandoradsklienten att mata ut det ursprungliga API-svaret (JSON lämpligt för tolkning via kod), men om ett ytterligare kommandoradsargument -pretty används:
./krakenapi.py TradeBalance asset=shib -pretty
kommer klienten sedan att mata ut samma API-svar som användarvänlig JSON (med radbrytningar/indrag).
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)