All
Filtrare după:
Cum pot depune numerar în contul meu?
Am nevoie de ajutor cu verificarea contului
De ce nu îmi pot accesa contul?
Există taxe pentru retragerea criptomonedelor?
Am nevoie de ajutor pentru a mă conecta la cont
Clientul de linie de comandă REST API în Python permite accesul complet la Kraken REST API prin linia de comandă (cum ar fi Terminal pe macOS), prin urmare nu sunt necesare cunoștințe de programare sau experiență cu API-ul.
Toate funcționalitățile REST API sunt accesibile, inclusiv:
endpoint-uri publice de date de piață
endpoint-uri private de date de cont
endpoint-uri private de tranzacționare
endpoint-uri private de finanțare
endpoint-uri private de câștig
Clientul de linie de comandă poate fi utilizat ca un client API independent sau poate fi apelat din alte programe (cum ar fi alte limbaje interpretate precum scripturile Bash sau limbaje compilate precum C/C++).
1. Instalați Python 3 (dacă este necesar).
macOS și Linux au probabil deja Python 3 instalat.
Windows probabil nu are Python 3 instalat, dar poate fi instalat de pe https://www.python.org/.
2. Descărcați și salvați fișierul krakenapi.py pe computerul dumneavoastră în folderul (directorul) ales.
De exemplu: Macintosh HD > Users > Satoshi > KrakenAPI
3. Deschideți o linie de comandă (cum ar fi Terminalul macOS) și navigați la folderul (directorul) ales în pasul anterior. Puteți utiliza comanda UNIX/Linux "cd" (change directory) pentru a naviga.
De exemplu:cd /Users/Satoshi/KrakenAPI
4. Faceți fișierul krakenapi.py executabil.
Puteți utiliza comanda UNIX/Linux "chmod 755" (change mode).
De exemplu: chmod 755 krakenapi.py
5. Adăugați cheia API în același folder în care păstrați fișierul krakenapi.py.
Copiați/lipiți cheia publică API din gestionarea contului într-un fișier text simplu numit "API_Public_Key".
Copiați/lipiți cheia privată (secretă) API într-un fișier text simplu numit "API_Private_Key".
Instrucțiuni pentru crearea/configurarea unei chei API sunt disponibile.
O cheie API este necesară doar dacă intenționați să utilizați endpoint-urile API private pentru a accesa contul dumneavoastră Kraken (cum ar fi interogări de sold, plasarea/anularea ordinelor, exporturi de istoric al contului etc.).
Utilizarea clientului de linie de comandă REST API este următoarea:
./krakenapi.py endpoint [parameters] [-pretty]
Clientul de linie de comandă acceptă toate endpoint-urile REST API, așa că următoarele sunt doar câteva exemple de comenzi:
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-TGLQHDÎn mod implicit, clientul de linie de comandă va afișa răspunsul API original (JSON potrivit pentru interpretare prin cod), dar dacă este utilizat un argument suplimentar de linie de comandă -pretty:
./krakenapi.py TradeBalance asset=shib -pretty
clientul va afișa apoi același răspuns API ca JSON ușor de citit (cu întreruperi de linie/indentări).
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)