All
Filtrer efter:
Hvordan indbetaler jeg kontanter på min konto?
Jeg har brug for hjælp til kontoverificering
Hvorfor kan jeg ikke få adgang til min konto?
Er der gebyrer for kryptoudbetaling?
Jeg har brug for hjælp til at logge ind på min konto
REST API kommandolinjeklienten i Python giver fuld adgang til Kraken REST API via kommandolinjen (såsom Terminal på macOS), og derfor kræves der ingen programmeringskendskab eller API-erfaring.
Alle REST API-funktioner er tilgængelige, herunder:
offentlige markedsdata-endpoints
private kontodata-endpoints
private handels-endpoints
private finansierings-endpoints
private indtjenings-endpoints
Kommandolinjeklienten kan bruges som en selvstændig API-klient, eller den kan kaldes fra andre programmer (såsom andre fortolkede sprog som Bash-scripts eller kompilerede sprog som C/C++).
1. Installer Python 3 (om nødvendigt).
macOS og Linux har muligvis allerede Python 3 installeret.
Windows har sandsynligvis ikke Python 3 installeret, men det kan installeres fra https://www.python.org/.
2. Download og gem krakenapi.py-filen på din computer i den mappe (directory), du vælger.
For eksempel: Macintosh HD > Brugere > Satoshi > KrakenAPI
3. Åbn en kommandoprompt (såsom macOS' Terminal), og naviger til den mappe (directory), der blev valgt i det forrige trin. Du kan bruge UNIX/Linux-kommandoen "cd" (skift directory) til at navigere.
For eksempel:cd /Users/Satoshi/KrakenAPI
4. Gør krakenapi.py-filen eksekverbar.
Du kan bruge UNIX/Linux-kommandoen "chmod 755" (skift tilstand).
For eksempel: chmod 755 krakenapi.py
5. Tilføj din API-nøgle til den samme mappe, hvor du opbevarer krakenapi.py-filen.
Kopiér/indsæt din offentlige API-nøgle fra kontostyring i en almindelig tekstfil kaldet "API_Public_Key".
Kopiér/indsæt din private (hemmelige) API-nøgle i en almindelig tekstfil kaldet "API_Private_Key".
Instruktioner til oprettelse/konfiguration af en API-nøgle er tilgængelige.
En API-nøgle er kun nødvendig, hvis du planlægger at bruge de private API-endpoints til at få adgang til din Kraken-konto (såsom saldoforespørgsler, placering/annullering af ordrer, eksport af kontohistorik osv.).
Brugen af REST API kommandolinjeklienten er som følger:
./krakenapi.py endpoint [parameters] [-pretty]
Kommandolinjeklienten understøtter alle REST API-endpoints, så følgende er blot et par 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 udskrive den originale API-respons (JSON egnet til fortolkning via kode), men hvis et yderligere kommandolinjeargument -pretty bruges:
./krakenapi.py TradeBalance asset=shib -pretty
vil klienten derefter udskrive den samme API-respons som menneskevenlig JSON (med linjeskift/indrykninger).
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)