All
Lọc theo:
Tôi có thể nạp tiền mặt vào tài khoản của mình bằng cách nào?
Tôi cần trợ giúp xác minh tài khoản
Tại sao tôi không thể truy cập vào tài khoản của mình?
Có phí rút tiền điện tử không?
Tôi cần trợ giúp để đăng nhập vào tài khoản của tôi
Hướng dẫn chi tiết về cách diễn giải nguồn cấp dữ liệu sổ lệnh WebSocket API v1 có sẵn trên trang hỗ trợ của chúng tôi về Cách duy trì sổ lệnh hợp lệ.
Mã ví dụ bằng Python để tích hợp với nguồn cấp dữ liệu sổ lệnh WebSocket API v1 và duy trì bản sao cục bộ của sổ lệnh được cung cấp dưới đây.
Mã này sử dụng thư viện WebSocket Python tiêu chuẩn và triển khai phương pháp bất đồng bộ (hướng sự kiện/đa luồng), cho phép các tác vụ khác tiếp tục song song với việc diễn giải nguồn cấp dữ liệu sổ lệnh.
Mã nên được thực thi thông qua dấu nhắc lệnh (chẳng hạn như macOS Terminal) như sau:
krakenwsorderbookasync.py symbol depth, hoặc,
python3 krakenwsorderbookasync.py symbol depth
Ví dụ, lệnh sau đây sẽ truy xuất và diễn giải nguồn cấp dữ liệu sổ lệnh Dogecoin/USD (XDG/USD) ở độ sâu 10 mức giá (mỗi bên):
krakenwsorderbookasync.py XDG/USD 10
Lưu ý rằng mã sẽ chạy vô thời hạn cho đến khi bị chấm dứt bởi ngắt bàn phím (Ctrl+C trong hầu hết các môi trường dòng lệnh).
Mã Python có thể được xem bên dưới và cũng có thể được tải xuống dưới dạng krakenwsorderbookasync.py.
#!/usr/bin/env python3
# Import WebSocket client library (and others)
import sys
import json
import signal
import time
import _thread
import websocket
# Parse command line arguments (symbol and depth)
if len(sys.argv) < 3:
sys.exit(1)
else:
api_symbol = sys.argv[1]
api_depth = int(sys.argv[2])
# Define order book variables
api_book = {'bid':{}, 'ask':{}}
# Define order book update functions
def dicttofloat(data):
return float(data[0])
def api_book_update(api_book_side, api_book_data):
for data in api_book_data:
price_level = data[0]
volume = data[1]
if float(volume) > 0.0:
api_book[api_book_side][price_level] = volume
else:
api_book[api_book_side].pop(price_level)
if api_book_side == 'bid':
api_book['bid'] = dict(sorted(api_book['bid'].items(), key=dicttofloat, reverse=True)[:api_depth])
elif api_book_side == 'ask':
api_book['ask'] = dict(sorted(api_book['ask'].items(), key=dicttofloat)[:api_depth])
# Define WebSocket callback functions
def ws_thread(*args):
ws = websocket.WebSocketApp('wss://ws.kraken.com/', on_open=ws_open, on_message=ws_message)
ws.run_forever()
def ws_open(ws):
ws.send('{"event":"subscribe", "subscription":{"name":"book", "depth":%(api_depth)d}, "pair":["%(api_symbol)s"]}' % {'api_depth':api_depth, 'api_symbol':api_symbol})
def ws_message(ws, ws_data):
api_data = json.loads(ws_data)
if 'event' in api_data:
return
else:
if 'as' in api_data[1]:
api_book_update('ask', api_data[1]['as'])
api_book_update('bid', api_data[1]['bs'])
else:
for data in api_data[1:len(api_data)-2]:
if 'a' in data:
api_book_update('ask', data['a'])
elif 'b' in data:
api_book_update('bid', data['b'])
# Start new thread for WebSocket interface
_thread.start_new_thread(ws_thread, ())
# Output order book (once per second) in main thread
try:
while True:
if len(api_book['bid']) < api_depth or len(api_book['ask']) < api_depth:
time.sleep(1)
else:
bid = sorted(api_book['bid'].items(), key=dicttofloat, reverse=True)
ask = sorted(api_book['ask'].items(), key=dicttofloat)
print('Bid\t\t\t\t\t\t\tAsk')
for count in range(api_depth):
print('%(bidprice)s (%(bidvolume)s)\t\t\t\t%(askprice)s (%(askvolume)s)' \
% {'bidprice':bid[count][0], 'bidvolume':bid[count][1], 'askprice':ask[count][0], 'askvolume':ask[count][1]})
time.sleep(1)
except KeyboardInterrupt:
sys.exit(0)