30分で考えるヒゲキャッチBot作成の下準備① - どうやって作るか
こんばんは。プログラミングはプロでも専門家でもなんでもない、ただのでめきん(@demekinnomimi)です。本noteでは、Bitflyerで動作するヒゲキャッチBotをどうやって作るか考えていきます。今回のインスパイア元は、いなごFlyerさんの以下のツイートです。
必要なデータ
上記ツイートから必要なデータを考えると、板情報と成行情報が必要だと分かります。
Bitflyer API仕様書から必要なデータが取れるか確認すると、「Realtime API - 板情報の差分」、「Realtime API or HTTP Public API - 板情報」、「Realtime API - 約定」、の3つを使えば必要なデータは揃いそうです。
データの保存先
次に、データをどこに保存するかを考えます。まともに使用経験のあるデータベースがNeo4jしかないので、インストール経験のあるInflux DBかMongo DBかMySQLの中で考えます。Botを動かす環境 (Conoha VPS) は、以下の画像のスペック(メモリ2GB)なので、メモリがたくさん必要なMongo DBは却下になります。時系列データ(約定、板情報の差分)を扱うなら、クエリを書くのが簡単なInfluxDBが良さそうです。しかし、板情報を保存するならMySQLの方が良さそうな気もします。
InfluxDBの要求スペックを見てみるとこのスペックだと厳しそうです。MySQLの要求スペックを見てみるとちょうど良さそうな感じがします。
色々ちょっと考えるとMySQLを使った方が良さそうな気もします。
しかし、今回は実装に30分しか使えないこともあり、あまり時間がかけれられないことから、既にVPSにインストール済みのInfluxDBを使うことにします。
指値推定の方法
ヒゲ発生時に注文する際の指値推定は、単純に重回帰式を作ってそれを使います。重回帰分析の前処理としては、データの標準化、説明変数の決定にステップワイズ変数選択だけします。説明変数候補はBotを実装しながら考えます。被説明変数は…どうしよう……(1/13 訂正)
Botで気をつける点
Botを作る前に、「HTTP Public API - 板の状態」から取引所の状態を取得しておき、ヒゲキャッチが本領発揮する相場急変動時の注文の通りやすさを事前に確認した方が良さそうな気がします。
後は板情報を取得するためにRealtime API と HTTP Public API のどちらを選択するかを考える必要もあります。
HTTPS APIのリクエスト制限の関係で、できればRealtime APIを使用したいですが、Twitterで検索してみた限り、HTTP Public APIを使用した方が良さそうな雰囲気があります。
以上、だいたい所要時間30分。
次回、プログラムを書いていきます。多分30分じゃなくて3時間くらいかかるので、暇な時にまたやります。
1/13 追記
どうしよう…