仮想通貨botのバックテストのために板情報を取得する
はじめに
仮想通貨の売買手法の一つに自動売買botがあります。自動売買botとは、あらかじめプログラムしておいた戦略に従って、コンピュータに自動で売買させるもののことを言います。
作成したbotの効果検証のためには、過去データを用いたバックテストを行う必要があります。しかしながら板情報の履歴は公開されていないため、板情報を用いたバックテストや戦略検討のためには、個々人で取引所のAPIを利用して取得・保存しておく必要があります。
そこで本記事では、板情報取得方法の紹介およびプログラムの販売を行います。なお対象の取引所はbitFlyer Lightningで、取引通貨はFX_BTC_JPYとなります。
板情報とは
板情報とは、取引所に出された売買注文の一覧のことです。bitFlyer Lightningの取引画面だと、下記部分になります。列中央の数字が価格、Askが価格ごとの売り注文の数量、Bidが価格ごとの買い注文の数量になります。板の情報はめまぐるしく変動します。
板情報の取得方法
高頻度で変動する板情報の履歴は、後から取得することはできません。そのため、バックテストなどで用いたい場合は、リアルタイムに取得・保存しておく必要があります。
そのために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としていた情報が保存されます。データ量が多いので、ディスクの空き容量には注意してください。
ここから先は
¥ 500
この記事が気に入ったらサポートをしてみませんか?