All
Filtruj według:
Jak mogę wpłacić gotówkę na konto?
Potrzebuję pomocy w weryfikacji konta
Dlaczego nie mogę uzyskać dostępu do konta?
Czy są jakieś opłaty za wypłatę kryptowalut?
Potrzebuję pomocy w zalogowaniu się na konto
Klient wiersza poleceń REST API w Pythonie umożliwia pełny dostęp do Kraken REST API za pośrednictwem wiersza poleceń (takiego jak Terminal w systemie macOS), dlatego nie jest wymagana znajomość programowania ani doświadczenie z API.
Wszystkie funkcje REST API są dostępne, w tym:
publiczne punkty końcowe danych rynkowych
prywatne punkty końcowe danych konta
prywatne punkty końcowe handlu
prywatne punkty końcowe finansowania
prywatne punkty końcowe zarobków
Klient wiersza poleceń może być używany jako samodzielny klient API lub może być wywoływany z innych programów (takich jak inne języki interpretowane, np. skrypty Bash, lub języki kompilowane, np. C/C++).
1. Zainstaluj Python 3 (jeśli to konieczne).
Systemy macOS i Linux prawdopodobnie mają już zainstalowany Python 3.
System Windows prawdopodobnie nie ma zainstalowanego Pythona 3, ale można go zainstalować ze strony https://www.python.org/.
2. Pobierz i zapisz plik krakenapi.py na swój komputer w wybranym folderze (katalogu).
Na przykład: Macintosh HD > Użytkownicy > Satoshi > KrakenAPI
3. Otwórz wiersz poleceń (taki jak Terminal w systemie macOS) i przejdź do folderu (katalogu) wybranego w poprzednim kroku. Możesz użyć polecenia UNIX/Linux "cd" (change directory), aby nawigować.
Na przykład:cd /Users/Satoshi/KrakenAPI
4. Uczyń plik krakenapi.py wykonywalnym.
Możesz użyć polecenia UNIX/Linux "chmod 755" (change mode).
Na przykład: chmod 755 krakenapi.py
5. Dodaj swój klucz API do tego samego folderu, w którym przechowujesz plik krakenapi.py.
Skopiuj/wklej swój publiczny klucz API z zarządzania kontem do pliku tekstowego o nazwie "API_Public_Key".
Skopiuj/wklej swój prywatny (tajny) klucz API do pliku tekstowego o nazwie "API_Private_Key".
Dostępne są instrukcje dotyczące tworzenia/konfigurowania pary kluczy API.
Klucz API jest potrzebny tylko wtedy, gdy planujesz używać prywatnych punktów końcowych API do dostępu do swojego konta Kraken (takich jak zapytania o saldo, składanie/anulowanie zleceń, eksport historii konta itp.).
Użycie klienta wiersza poleceń REST API jest następujące:
./krakenapi.py endpoint [parameters] [-pretty]
Klient wiersza poleceń obsługuje wszystkie punkty końcowe REST API, więc poniżej przedstawiono tylko kilka przykładowych poleceń:
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-TGLQHDDomyślnie klient wiersza poleceń wyświetli oryginalną odpowiedź API (JSON odpowiedni do interpretacji za pomocą kodu), ale jeśli zostanie użyty dodatkowy argument wiersza poleceń -pretty:
./krakenapi.py TradeBalance asset=shib -pretty
klient wyświetli tę samą odpowiedź API w formacie JSON przyjaznym dla człowieka (z podziałami wierszy/wcięciami).
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)