All
Filtrar por:
Como faço para depositar dinheiro na minha conta?
Eu preciso de ajuda com a verificação da conta
Por que não consigo acessar minha conta?
Há taxas de retirada de criptomoedas?
Eu preciso de ajuda para entrar na minha conta
O código Python a seguir implementa um cliente de API de linha de comando para nossa API WebSocket v1 de exchange. O código pode ser usado como um cliente de API autônomo ou pode ser chamado de outras linguagens de programação interpretadas ou compiladas (Bash, C++, etc.).
A biblioteca padrão Python WebSocket (websocket-client) é necessária para a rede WebSocket, mas nenhuma outra biblioteca/módulo de API é necessário.
O cliente de linha de comando da API WebSocket também pode ser baixado como krakenws.py.
Todos os feeds de dados de mercado públicos (ticker, book, spread, ohlc, trade), feeds de gerenciamento de conta privados (openOrders e ownTrades) e endpoints de negociação (addOrder, cancelOrder, cancelAll) são suportados.
Para os feeds/endpoints privados, um token de autenticação WebSocket deve ser fornecido recuperando o token do endpoint GetWebSocketsToken da API REST e, em seguida, copiando/colando o valor do token em um arquivo de texto chamado WS_Token (no mesmo diretório/pasta do cliente de linha de comando da API).
krakenws.py feed/endpoint [parâmetros]
./krakenws.py ticker XBT/USD ETH/EUR XDG/XBT
./krakenws.py book ETH/USD 10
./krakenws.py ohlc LTC/EUR XBT/USD 60
./krakenws.py openOrders
./krakenws.py ownTrades
./krakenws.py addOrder pair=XBT/USD type=buy ordertype=market volume=0.002 leverage=5
./krakenws.py cancelOrder txid=O6L3CW-FD5CZ-NE373X
O uso do cliente de linha de comando da API WebSocket v1 é o seguinte: por exemplo:
#!/usr/bin/env python
# API WebSocket da Kraken
#
# Uso: ./krakenws.py feed/endpoint [parâmetros]
# Exemplo: ./krakenws.py ticker XBT/USD
# Exemplo: ./krakenws.py spread XBT/USD XBT/EUR ETH/USD LTC/EUR
# Exemplo: ./krakenws.py book XBT/USD XBT/EUR 10
# Exemplo: ./krakenws.py openOrders
# Exemplo: ./krakenws.py ownTrades
# Exemplo: ./krakenws.py addOrder pair=XBT/EUR type=sell ordertype=limit price=7500 volume=0.125
# Exemplo: ./krakenws.py cancelOrder txid=OADMSD-7AGC3-IMB46A,OD6VRE-HCSPM-CKORER
#
# Para gerenciamento de conta e negociação, um token de autenticação WebSocket válido (do endpoint GetWebSocketsToken da API REST) deve ser fornecido em um arquivo de texto simples chamado WS_Token.
import sys
import signal
from websocket import create_connection
def timeoutfunction(signalnumber, frame):
raise KeyboardInterrupt
signal.signal(signal.SIGALRM, timeoutfunction)
api_status = {"ping"}
api_public = {"trade", "book", "ticker", "spread", "ohlc"}
api_private = {"openOrders", "ownTrades", "balances"}
api_trading = {"addOrder", "editOrder", "cancelOrder", "cancelAll", "cancelAllOrdersAfter"}
api_domain_public = "wss://ws.kraken.com/"
api_domain_private = "wss://ws-auth.kraken.com/"
api_symbols = ""
api_number = 0
if len(sys.argv) < 2:
api_feed = "ping"
else:
api_feed = sys.argv[1]
if api_feed in api_status:
api_domain = api_domain_public
api_data = '{"event":"%(feed)s"}' % {"feed":api_feed}
signal.alarm(3)
elif api_feed in api_public:
if len(sys.argv) < 3:
print("Uso: %s feed/endpoint [parâmetros]" % sys.argv[0])
print("Exemplo: %s ticker XBT/USD" % sys.argv[0])
sys.exit(1)
for count in range(2, len(sys.argv)):
if sys.argv[count].isdecimal() == True:
api_number = int(sys.argv[count])
else:
if len(api_symbols) == 0:
api_symbols += sys.argv[count].upper()
else:
api_symbols += '","' + sys.argv[count].upper()
if api_feed == 'book':
api_data = '{"event":"subscribe", "subscription":{"name":"%(feed)s", "depth":%(depth)d}, "pair":["%(symbols)s"]}' % {"feed":api_feed, "symbols":api_symbols, "depth":api_number if api_number != 0 else 10}
elif api_feed == 'ohlc':
api_data = '{"event":"subscribe", "subscription":{"name":"%(feed)s", "interval":%(interval)d}, "pair":["%(symbols)s"]}' % {"feed":api_feed, "symbols":api_symbols, "interval":api_number if api_number != 0 else 1}
else:
api_data = '{"event":"subscribe", "subscription":{"name":"%(feed)s"}, "pair":["%(symbols)s"]}' % {"feed":api_feed, "symbols":api_symbols}
api_domain = api_domain_public
elif api_feed in api_private:
api_domain = api_domain_private
try:
api_token = open("WS_Token").read().strip()
except:
print("Token de autenticação WebSocket ausente (WS_Token)")
sys.exit(1)
if len(sys.argv) >= 3:
if api_feed == 'openOrders':
api_data = '{"event":"subscribe", "subscription":{"name":"%(feed)s", "ratecounter":%(ratecounter)s, "token":"%(token)s"}}' % {"feed":api_feed, "ratecounter":sys.argv[2].split('=')[1], "token":api_token}
elif api_feed == 'ownTrades':
api_data = '{"event":"subscribe", "subscription":{"name":"%(feed)s", "snapshot":%(snapshot)s, "token":"%(token)s"}}' % {"feed":api_feed, "snapshot":sys.argv[2].split('=')[1], "token":api_token}
else:
api_data = '{"event":"subscribe", "subscription":{"name":"%(feed)s", "token":"%(token)s"}}' % {"feed":api_feed, "token":api_token}
else:
api_data = '{"event":"subscribe", "subscription":{"name":"%(feed)s", "token":"%(token)s"}}' % {"feed":api_feed, "token":api_token}
elif api_feed in api_trading:
api_domain = api_domain_private
try:
api_token = open("WS_Token").read().strip()
except:
print("Token de autenticação WebSocket ausente (WS_Token)")
sys.exit(1)
api_data = '{"event":"%(feed)s", "token":"%(token)s"' % {"feed":api_feed, "token":api_token}
for count in range(2, len(sys.argv)):
if sys.argv[count].split('=')[0] == 'txid':
api_data = api_data + ', "%(name)s":["%(value)s"]' % {"name":sys.argv[count].split('=')[0], "value":sys.argv[count].split('=')[1].replace(',', '","')}
elif sys.argv[count].split('=')[0] == 'reqid':
api_data = api_data + ', "%(name)s":%(value)s' % {"name":sys.argv[count].split('=')[0], "value":sys.argv[count].split('=')[1]}
elif sys.argv[count].split('=')[0] == 'timeout':
api_data = api_data + ', "%(name)s":%(value)s' % {"name":sys.argv[count].split('=')[0], "value":sys.argv[count].split('=')[1]}
else:
api_data = api_data + ', "%(name)s":"%(value)s"' % {"name":sys.argv[count].split('=')[0], "value":sys.argv[count].split('=')[1]}
api_data = api_data + '}'
signal.alarm(3)
else:
print("Uso: %s feed/endpoint [parâmetros]" % sys.argv[0])
print("Exemplo: %s ticker XBT/USD" % sys.argv[0])
sys.exit(1)
try:
ws = create_connection(api_domain)
print("WebSocket -> Cliente: %s" % ws.recv())
except Exception as error:
print("Falha na conexão WebSocket (%s)" % error)
sys.exit(1)
try:
print("Cliente -> WebSocket: %s" % api_data)
ws.send(api_data)
print("WebSocket -> Cliente: %s" % ws.recv())
except Exception as error:
print("Falha na assinatura/solicitação WebSocket (%s)" % error)
ws.close()
sys.exit(1)
while True:
try:
print("WebSocket -> Cliente: %s" % ws.recv())
except KeyboardInterrupt:
ws.close()
sys.exit(0)
except Exception as error:
print("Falha nas mensagens WebSocket (%s)" % error)
sys.exit(1)
sys.exit(1)