FoehnQuant數字貨幣量化之收集盤口訂單簿資料

garyhertel發表於2020-12-22

對於很多高頻做市策略來說,一般的k線資料或者逐筆成交資料是無法滿足資料分析的需求的,那麼如何來快速、簡便、高效地獲取高質量地盤口訂單簿資料呢?

首先,我們建立一個專案,將我們的config.json配置檔案複製貼上到專案中,然後新建一個python檔案,程式碼如下:

from foehnquant.base import *
from foehnquant.event import *
from foehnquant.const import *

# 定義orderbook資料更新回撥函式
def on_event_orderbook_update(orderbook: Orderbook):
    logger.debug("orderbook:{}".format(orderbook))
    save_to_mongodb("orderbook", 'BTC-USDT-SWAP', data={
        "timesatmp": ts_to_datetime_str(orderbook.timestamp/1000),
        "ask1": orderbook.asks[0][0],
        "ask2": orderbook.asks[1][0],
        "ask3": orderbook.asks[2][0],
        "ask4": orderbook.asks[3][0],
        "ask5": orderbook.asks[4][0],
        "bid1": orderbook.bids[0][0],
        "bid2": orderbook.bids[1][0],
        "bid3": orderbook.bids[2][0],
        "bid4": orderbook.bids[3][0],
        "bid5": orderbook.bids[4][0]
    })

# 初始化Quant後自動執行websocket例項
Quant(
    config_file="config.json",
    platform=HUOBIUSDTSWAP,
    channels=['orderbook'],
    symbols=['BTC-USDT-SWAP'],
    orderbook_update_callback=on_event_orderbook_update
)
# 匯出mongodb收集的資料至csv檔案
# config.loads('config.json')
# export_mongodb_to_csv("orderbook", 'BTC-USDT-SWAP', csv_file_path="orderbook.csv")

執行策略之後,初始化Quant之後,就自動建立了websocket例項,控制檯也輸出了接收到的資料:
在這裡插入圖片描述
我們通過mongodb compass也可以看到資料已經儲存至mongodb資料庫中:
在這裡插入圖片描述
為了更方便地做資料分析,我們可以將資料匯出至csv檔案,只需要2行程式碼就可實現:

config.loads('config.json')
export_mongodb_to_csv("orderbook", 'BTC-USDT-SWAP', csv_file_path="orderbook.csv")

匯出後,專案結構區多了一個orderbook.csv檔案,開啟後可以看到其內容:
在這裡插入圖片描述
我們直接使用excel也可看到:
在這裡插入圖片描述
我們此處只是做了一個簡單的示例,也可以自行儲存任意檔數的訂單簿資料,包括價格和數量等等。

相關文章