All
Filtrar por:
¿Cómo deposito efectivo en mi cuenta?
Necesito ayuda con la verificación de la cuenta
¿Por qué no puedo acceder a mi cuenta?
¿Existen comisiones por retirar criptomonedas?
Necesito ayuda para iniciar sesión en mi cuenta
El cliente de línea de comandos de la API REST en Python permite el acceso completo a la API REST de Kraken a través de la línea de comandos (como Terminal en macOS), por lo que no se requieren conocimientos de programación ni experiencia en API.
Todas las funciones de la API REST son accesibles, incluyendo:
endpoints de datos de mercado públicos
endpoints de datos de cuenta privados
endpoints de trading privados
endpoints de financiación privados
endpoints de ganancias privados
El cliente de línea de comandos puede utilizarse como un cliente de API independiente, o puede ser llamado desde otros programas (como otros lenguajes interpretados como scripts Bash, o lenguajes compilados como C/C++).
1. Instalar Python 3 (si es necesario).
macOS y Linux posiblemente ya tengan Python 3 instalado.
Windows probablemente no tenga Python 3 instalado, pero se puede instalar desde https://www.python.org/.
2. Descargue y guarde el archivo krakenapi.py en su ordenador, en la carpeta (directorio) de su elección.
Por ejemplo: Macintosh HD > Usuarios > Satoshi > KrakenAPI
3. Abra un símbolo del sistema (como Terminal de macOS) y navegue hasta la carpeta (directorio) elegida en el paso anterior. Puede utilizar el comando UNIX/Linux "cd" (cambiar directorio) para navegar.
Por ejemplo:cd /Users/Satoshi/KrakenAPI
4. Haga que el archivo krakenapi.py sea ejecutable.
Puede utilizar el comando UNIX/Linux "chmod 755" (cambiar modo).
Por ejemplo: chmod 755 krakenapi.py
5. Añada su clave API a la misma carpeta donde guarda el archivo krakenapi.py.
Copie/pegue su clave pública de API de la gestión de cuentas en un archivo de texto sin formato llamado "API_Public_Key".
Copie/pegue su clave privada (secreta) de API en un archivo de texto sin formato llamado "API_Private_Key".
Hay disponibles instrucciones para crear/configurar un par de claves API.
Solo se necesita una clave API si tiene previsto utilizar los endpoints privados de la API para acceder a su cuenta de Kraken (como consultas de saldo, realización/cancelación de órdenes, exportación del historial de la cuenta, etc.).
El uso del cliente de línea de comandos de la API REST es el siguiente:
./krakenapi.py endpoint [parameters] [-pretty]
El cliente de línea de comandos es compatible con todos los endpoints de la API REST, por lo que los siguientes son solo algunos ejemplos de comandos:
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-TGLQHDPor defecto, el cliente de línea de comandos mostrará la respuesta original de la API (JSON adecuado para ser interpretado mediante código), pero si se utiliza un argumento adicional de línea de comandos -pretty:
./krakenapi.py TradeBalance asset=shib -pretty
el cliente mostrará la misma respuesta de la API como JSON legible para humanos (con saltos de línea/sangrías).
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)