見出し画像

仮想通貨botのバックテストのために板情報を取得する

はじめに

仮想通貨の売買手法の一つに自動売買botがあります。自動売買botとは、あらかじめプログラムしておいた戦略に従って、コンピュータに自動で売買させるもののことを言います。
作成したbotの効果検証のためには、過去データを用いたバックテストを行う必要があります。しかしながら板情報の履歴は公開されていないため、板情報を用いたバックテストや戦略検討のためには、個々人で取引所のAPIを利用して取得・保存しておく必要があります。
そこで本記事では、板情報取得方法の紹介およびプログラムの販売を行います。なお対象の取引所はbitFlyer Lightningで、取引通貨はFX_BTC_JPYとなります。

板情報とは

板情報とは、取引所に出された売買注文の一覧のことです。bitFlyer Lightningの取引画面だと、下記部分になります。列中央の数字が価格、Askが価格ごとの売り注文の数量、Bidが価格ごとの買い注文の数量になります。板の情報はめまぐるしく変動します。

bifFlyer lightningの板情報

板情報の取得方法

高頻度で変動する板情報の履歴は、後から取得することはできません。そのため、バックテストなどで用いたい場合は、リアルタイムに取得・保存しておく必要があります。
そのためにbitFlyer lightningでは板情報のスナップショットおよび板情報の差分を取得するRealtime APIが用意されており、これらを用いることで板情報のリアルタイム取得ができます。
今回はこのAPIをpybottersを用いて取得、保存するプログラムを作ってみました。取得したデータは下記のような形式で保存されます(量が多いため適宜省略しています)。

{
        "bids": [
                [
                        3928190.0,
                        0.22
                ],
                [
                        3927700.0,
                        0.00803893
                ],
                ...,
                [
                        3806228.0,
                        0.03
                ],
                [
                        3805656.0,
                        0.05
                ]
        ],
        "asks": [
                [
                        3929168.0,
                        0.02290558
                ],
                [
                        3929517.0,
                        0.01677368
                ],
                ...
                [
                        4163000.0,
                        0.01
                ],
                [
                        4164650.0,
                        0.01
                ]
        ],
        "timestamp": "2023-09-10T10:05:23.796130"
}
{
        "bids": [
                ...
        ],
        "asks": [
                ...
        ],
        "timestamp": "2023-09-10T10:05:23.860342"
}
{
        "bids": [
                ...
        ],
        "asks": [
                ...
        ],
        "timestamp": "2023-09-10T10:05:24.023305"
}

板情報の更新があるたびに、bidsとasksの状態を時刻とともにjson形式で保存しています。各時刻のデータは改行区切りにしています。

板情報取得のプログラム

作成したプログラムは下記の有料記事部分で公開しています。python = 3.11.5 と、複数取引所に対応したAPIクライアントの  pybotters = 0.16.0を用いています。今回利用するbitFlyerのAPIはpublic channelのため、API KEYとAPI SECRETは不要です。そのためコピペですぐに試すことができます。

下記プログラムをmain.pyなどの名前で保存し
pip install pybotters==0.16.0
でpybottersをインストールした後に、
python main.py
を実行するとプログラムの実行が開始されます。

実行するとdata/bitflyer/FX_BTC_JPYフォルダが作られ、その中にorderbooks_日付.jsonとしていた情報が保存されます。データ量が多いので、ディスクの空き容量には注意してください。

ここから先は

2,240字

¥ 500

この記事が気に入ったらサポートをしてみませんか?