見出し画像

Binance、Websocketに接続して、価格などの値を高速に取得。Python。

一つの通貨ペアの価格を取得するコードを書こうと思います。

まずはモジュールが必要です。

from binance.client import Client
from binance.enums import * #これは要らないかも
from binance.exceptions import * #これは要らないかも
from binance.websockets import BinanceSocketManager


APIを書き込みます。通貨ペアを指定します。

api_key = "ご自分のapi"#バイナンスから取得する必要があります。
api_secret = "ご自分のapi_secret"
client = Client(api_key, api_secret)
pair= "XRP" + "BTC" #通貨ペアを指定します。

Websocketなしだと以下のコードで価格を取得できます。

あまり高速に取得するとこれだとエラーになります。

ticker = client.get_ticker(symbol="XRPBTC")
last = ticker['lastPrice']
ask = ticker['askPrice']
bid = ticker['bidPrice']

ここからwebsocketを使うバージョンです。

def webscoket():
   bm = BinanceSocketManager(client)#websocket
   conn_key = bm.start_symbol_ticker_socket(pair, process_message)
   bm.start()# ソケットマネージャーを開始

def process_message(msg):
   if msg['e'] == 'error':#エラーが出たら
       print('ウェブソケットにエラーが発生。\n再接続します')
       bm = BinanceSocketManager(client)#ソケットを再スタートする処理
       bm.start()# ソケットマネージャーを開始
   else:
       # 通常のメッセージ処理
       symbol = msg['s']#必要ないと思うけど、通貨ペアです。
       event_time = msg['E']#時間
       last = msg['c']
       ask = msg['a']
       ask_Qty = msg['A']#最良価格のaskの量
       bid= msg['b']
       bid_Qty = msg['B']#最良価格のbidの量
#########################################################################
def run():#全体を動かす、メインのコードです。
   webscoket()
#########################################################################
if __name__ == "__main__":
       run()

以上です。

こちらのリンクからバイナンスのアカウントを作ると取引手数料が10%割引されます。
支払いにBinanceコインBNBを使うとさらに25%offになります。

コーヒー飲みます。ありがとうございます。