All
Filtrovat podle:
Jak si mohu na účet vložit hotovost?
Potřebuji pomoc s ověřením účtu
Proč se nemohu přihlásit ke svému účtu?
Jsou nějaké poplatky za výběr kryptoměn?
Potřebuji pomoc s přihlášením do svého účtu
Klient příkazového řádku REST API v Pythonu umožňuje plný přístup k REST API Krakenu prostřednictvím příkazového řádku (například Terminal v macOS), a proto nejsou vyžadovány žádné programovací znalosti ani zkušenosti s API.
Všechny funkce REST API jsou dostupné, včetně:
veřejných koncových bodů tržních dat
privátních koncových bodů dat účtu
privátních obchodních koncových bodů
privátních koncových bodů financování
privátních koncových bodů pro získávání výnosů
Klient příkazového řádku může být použit jako samostatný API klient, nebo může být volán z jiných programů (jako jsou jiné interpretované jazyky, např. skripty Bash, nebo kompilované jazyky, např. C/C++).
1. Nainstalujte Python 3 (pokud je to nutné).
macOS a Linux již pravděpodobně mají Python 3 nainstalovaný.
Windows pravděpodobně nemá Python 3 nainstalovaný, ale lze jej nainstalovat z https://www.python.org/.
2. Stáhněte a uložte soubor krakenapi.py do svého počítače do složky (adresáře) dle vašeho výběru.
Například: Macintosh HD > Users > Satoshi > KrakenAPI
3. Otevřete příkazový řádek (například Terminal v macOS) a přejděte do složky (adresáře) zvolené v předchozím kroku. K navigaci můžete použít příkaz UNIX/Linux „cd“ (change directory).
Například:cd /Users/Satoshi/KrakenAPI
4. Udělejte soubor krakenapi.py spustitelným.
Můžete použít příkaz UNIX/Linux „chmod 755“ (change mode).
Například: chmod 755 krakenapi.py
5. Přidejte svůj API klíč do stejné složky, kde uchováváte soubor krakenapi.py.
Zkopírujte/vložte svůj veřejný API klíč ze správy účtu do prostého textového souboru s názvem „API_Public_Key“.
Zkopírujte/vložte svůj soukromý (tajný) API klíč do prostého textového souboru s názvem „API_Private_Key“.
Pokyny pro vytvoření/konfiguraci API klíče jsou k dispozici.
API klíč je potřeba pouze v případě, že plánujete použít privátní API koncové body pro přístup k vašemu účtu Kraken (například dotazy na zůstatek, zadávání/rušení objednávek, exporty historie účtu atd.).
Použití klienta příkazového řádku REST API je následující:
./krakenapi.py endpoint [parameters] [-pretty]
Klient příkazového řádku podporuje všechny koncové body REST API, takže následující jsou jen některé příklady příkazů:
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-TGLQHDVe výchozím nastavení klient příkazového řádku vypíše původní odpověď API (JSON vhodný pro interpretaci kódem), ale pokud je použit další argument příkazového řádku -pretty:
./krakenapi.py TradeBalance asset=shib -pretty
klient poté vypíše stejnou odpověď API jako uživatelsky přívětivý JSON (s zalomením řádků/odsazením).
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)