वेब सॉकेट एपीआई v1 ऑर्डर बुक फ़ीड (सिंक्रोनस/सिंगल-थ्रेडेड) की व्याख्या के लिए उदाहरण कोड

अंतिम अपडेट: 1 अप्रैल 2025

वेब सॉकेट एपीआई v1 ऑर्डर बुक फ़ीड से एक वैध ऑर्डर बुक बनाए रखने के लिए विस्तृत निर्देश हमारे एक वैध ऑर्डर बुक कैसे बनाए रखें सहायता पृष्ठ पर उपलब्ध हैं।

वेब सॉकेट एपीआई v1 ऑर्डर बुक लॉजिक को दर्शाने वाला उदाहरण कोड (पायथन में) नीचे दिया गया है और इसे krakenwsorderbook.py के रूप में डाउनलोड के लिए भी उपलब्ध है।

उदाहरण कोड एक कमांड लाइन क्लाइंट को लागू करता है जो निर्दिष्ट ऑर्डर बुक फ़ीड की सदस्यता लेता है, फिर फ़ीड संदेशों से एक वैध ऑर्डर बुक बनाता और बनाए रखता है, जबकि वर्तमान ऑर्डर बुक को प्रति सेकंड एक बार आउटपुट करता है।

कमांड लाइन क्लाइंट का उपयोग ./krakenwsbook.py symbol depth है जैसे कि निम्नलिखित उदाहरण कमांड:

  • ./krakenwsbook.py xbt/usd 10

  • ./krakenwsbook.py ltc/eur 25

उदाहरण कोड

#!/usr/bin/env python

# क्रैकन वेबसॉकेट एपीआई ऑर्डर बुक
#
# उपयोग: ./krakenwsbook.py symbol depth

import sys
import json
import signal
from websocket import create_connection

def alarmfunction(signalnumber, frame):
signal.alarm(1)
api_output_book()

def dicttofloat(keyvalue):
return float(keyvalue[0])

def api_output_book():
bid = sorted(api_book["bid"].items(), key=dicttofloat, reverse=True)
ask = sorted(api_book["ask"].items(), key=dicttofloat)
print("बोली\t\t\t\t\t\tपूछें")
for x in range(int(api_depth)):
print("%(bidprice)s (%(bidvolume)s)\t\t\t\t%(askprice)s (%(askvolume)s)" % {"bidprice":bid[x][0], "bidvolume":bid[x][1], "askprice":ask[x][0], "askvolume":ask[x][1]})

def api_update_book(side, data):
for x in data:
price_level = x[0]
if float(x[1]) != 0.0:
api_book[side].update({price_level:float(x[1])})
else:
if price_level in api_book[side]:
api_book[side].pop(price_level)
if side == "bid":
api_book["bid"] = dict(sorted(api_book["bid"].items(), key=dicttofloat, reverse=True)[:int(api_depth)])
elif side == "ask":
api_book["ask"] = dict(sorted(api_book["ask"].items(), key=dicttofloat)[:int(api_depth)])

signal.signal(signal.SIGALRM, alarmfunction)

if len(sys.argv) < 3:
print("उपयोग: %s symbol depth" % sys.argv[0])
print("उदाहरण: %s xbt/usd 10" % sys.argv[0])
sys.exit(1)

api_feed = "book"
api_symbol = sys.argv[1].upper()
api_depth = sys.argv[2]
api_domain = "wss://ws.kraken.com/"
api_book = {"bid":{}, "ask":{}}

try:
ws = create_connection(api_domain)
except Exception as error:
print("वेब सॉकेट कनेक्शन विफल (%s)" % error)
sys.exit(1)

api_data = '{"event":"subscribe", "subscription":{"name":"%(feed)s", "depth":%(depth)s}, "pair":["%(symbol)s"]}' % {"feed":api_feed, "depth":api_depth, "symbol":api_symbol}

try:
ws.send(api_data)
except Exception as error:
print("फ़ीड सदस्यता विफल (%s)" % error)
ws.close()
sys.exit(1)

while True:
try:
api_data = ws.recv()
except KeyboardInterrupt:
ws.close()
sys.exit(0)
except Exception as error:
print("वेब सॉकेट संदेश विफल (%s)" % error)
ws.close()
sys.exit(1)
api_data = json.loads(api_data)
if type(api_data) == list:
if "as" in api_data[1]:
api_update_book("ask", api_data[1]["as"])
api_update_book("bid", api_data[1]["bs"])
signal.alarm(1)
elif "a" in api_data[1] or "b" in api_data[1]:
for x in api_data[1:len(api_data[1:])-1]:
if "a" in x:
api_update_book("ask", x["a"])
elif "b" in x:
api_update_book("bid", x["b"])

ws.close()
sys.exit(1)

क्या आपको और मदद चाहिए?