All
Фильтровать по:
Как внести денежные средства в аккаунт?
Мне нужна помощь с верификацией аккаунта
Почему я не могу получить доступ к своему аккаунту?
Есть ли какие-либо комиссии за вывод криптовалюты?
Мне нужна помощь с входом в мой аккаунт
Следующий код Python реализует клиент командной строки API для нашего обменного WebSocket API v1. Код может использоваться как автономный клиент API или вызываться из других интерпретируемых или компилируемых языков программирования (Bash, C++ и т. д.).
Стандартная библиотека Python WebSocket (websocket-client) требуется для работы с сетью WebSocket, но никакие другие библиотеки/модули API не требуются.
Клиент командной строки WebSocket API также можно загрузить как krakenws.py.
Поддерживаются все публичные потоки рыночных данных (тикер, стакан, спред, свечи, сделки), приватные потоки управления счетом (openOrders и ownTrades) и торговые конечные точки (addOrder, cancelOrder, cancelAll).
Для приватных потоков/конечных точек необходимо предоставить токен аутентификации WebSocket, получив его из конечной точки REST API GetWebSocketsToken, а затем скопировав/вставив значение токена в текстовый файл с именем WS_Token (в той же директории/папке, что и клиент командной строки API).
krakenws.py feed/endpoint [параметры]
./krakenws.py тикер XBT/USD ETH/EUR XDG/XBT
./krakenws.py стакан ETH/USD 10
./krakenws.py свечи 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
Использование клиента командной строки WebSocket API v1 выглядит следующим образом:
#!/usr/bin/env python
# Kraken WebSocket API
#
# Использование: ./krakenws.py feed/endpoint [параметры]
# Пример: ./krakenws.py тикер XBT/USD
# Пример: ./krakenws.py спред XBT/USD XBT/EUR ETH/USD LTC/EUR
# Пример: ./krakenws.py стакан XBT/USD XBT/EUR 10
# Пример: ./krakenws.py openOrders
# Пример: ./krakenws.py ownTrades
# Пример: ./krakenws.py addOrder pair=XBT/EUR type=sell ordertype=limit price=7500 volume=0.125
# Пример: ./krakenws.py cancelOrder txid=OADMSD-7AGC3-IMB46A,OD6VRE-HCSPM-CKORER
#
# Для управления счетом и торговли действительный токен аутентификации WebSocket (из конечной точки REST API GetWebSocketsToken) должен быть предоставлен в текстовом файле с именем 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("Использование: %s feed/endpoint [параметры]" % sys.argv[0])
print("Пример: %s тикер 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("Токен аутентификации WebSocket отсутствует (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("Токен аутентификации WebSocket отсутствует (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("Использование: %s feed/endpoint [параметры]" % sys.argv[0])
print("Пример: %s тикер XBT/USD" % sys.argv[0])
sys.exit(1)
try:
ws = create_connection(api_domain)
print("WebSocket -> Клиент: %s" % ws.recv())
except Exception as error:
print("Соединение WebSocket не удалось (%s)" % error)
sys.exit(1)
try:
print("Клиент -> WebSocket: %s" % api_data)
ws.send(api_data)
print("WebSocket -> Клиент: %s" % ws.recv())
except Exception as error:
print("Подписка/запрос WebSocket не удалось (%s)" % error)
ws.close()
sys.exit(1)
while True:
try:
print("WebSocket -> Клиент: %s" % ws.recv())
except KeyboardInterrupt:
ws.close()
sys.exit(0)
except Exception as error:
print("Сообщения WebSocket не удалось (%s)" % error)
sys.exit(1)
sys.exit(1)