Get OrderBook data from Binance spot market using binance api

Seungsoo Lee·2022년 7월 30일
0

python

목록 보기
3/4
  • binance spot market OrderBook data 가져오기
import websocket
import json
import rel

class WsHandler:
	def __init__(self):
		pass

	def on_message(self, ws, message):
		obj = json.loads(message)
		print(obj["u"], obj["U"])

	def on_error(self, ws, error):
		print(error)

	def on_close(self, ws, close_status_code, close_msg):
		print("### closed ###")

	def on_open(self, ws):
		print("Opened connection")

	def wsDiffDepthStream(self, ticker):
		# websocket.enableTrace(True)
		ws = websocket.WebSocketApp(f"wss://stream.binance.com:9443/ws/{ticker}@depth@100ms",
								on_open=self.on_open,
								on_message=self.on_message,
								on_error=self.on_error,
								on_close=self.on_close)

		ws.run_forever(dispatcher=rel) # Set dispatcher to automatic reconnection
		rel.signal(2, rel.abort)  # Keyboard Interrupt
		rel.dispatch()

if __name__ == "__main__":
	inst = WsHandler()
	inst.wsDiffDepthStream("btcusdt")

지금 이 코드는 binance spot market의 호가창 정보를 가져온다.

websocket url은 wss://stream.binance.com:9443/ws/{ticker}@depth@100ms 이다.(뒤에 100ms를 1000ms 로 바꿀수도 있다.)

binance API docs 참고

데이터들은 on_message 함수에서 처리할 수 있다.
websocket으로 들어오는 message의 type은 json 형태의 string으로 들어온다.
따라서 이를 python이 알아 듣기 쉬운 type으로 바꿔줘야하는데 이때 json.loads를 사용하면 dictionary type으로 바꿀 수 있다.
https://stackoverflow.com/questions/4917006/string-to-dictionary-in-python

지금은 print만 해두었지만 나중에 실시간으로 계속 데이터를 저장하거나 다른 함수에서 불러와 사용할 수 있게 만들 수 도 있다.

https://stackoverflow.com/questions/50066428/how-do-i-save-data-from-websocket

0개의 댓글