見出し画像

bitflye(ビットフライヤー)のリアルタイムAPIで約定サイズ、BUY・SELLを表示する

Twitter:@ba__in

お久しぶりです。

Zaifのメールは絶対承認しない派の@ba__inです。

リアルタイムAPIで約定された方向(BUYSELL)を把握するコードが無かったので他の方が作ったコードにちょちょいと付け足して、色付きでプロットできるようにしてみました。

めちゃ簡単です。

ここから何か高頻度取引につながる発見があるやもしれませんね(⌒∇⌒)

コード(エディタにペッ!!てしたら使え..るはず)

# pip install websocket-client
import websocket
import json
import pandas as pd
import colorama
from colorama import Fore, Back, Style
colorama.init(autoreset=True)

CHANNEL = "lightning_executions_FX_BTC_JPY"

def on_message(ws, message):
    message = json.loads(message)
    if message["method"] == "channelMessage":
        # print("{} {}".format(message["params"]
        #                     ["channel"], message["params"]["message"]))
        params_message = message["params"]["message"]
        df = pd.DataFrame(params_message)

        # 直前の約定金額
        price = int(df.ix[[len(df) - 1], ["price"]].values.flatten())

        # 直前の約定数量
        size = float(df.ix[[len(df) - 1], ["size"]].values.flatten())

        #直前の約定された方向(BUY,SELL)
        side = df.ix[[len(df) - 1], ["side"]].values.flatten()

        if side =="BUY":
            print("size:{}".format(size), Fore.LIGHTYELLOW_EX + "BUY")
        elif side =="SELL":
            print("size:{}".format(size), Fore.LIGHTGREEN_EX + "SELL")

def on_open(ws):
    ws.send(json.dumps({"method": "subscribe",
                        "params": {"channel": CHANNEL}}))

if __name__ == "__main__":
    # note: reconnection handling needed.
    ws = websocket.WebSocketApp("wss://ws.lightstream.bitflyer.com/json-rpc",
                                on_message=on_message, on_open=on_open)
    ws.run_forever()


上記コードにはいろいろインストールするものが出てくるやもしれません。

(多分”colorama”、”websocket-client”あたり)

参考元

こちら (ページ内リンクがなぜか引用不可だったのでHPから検索ください)

では。

いいなと思ったら応援しよう!