ビットコイン自動トレードへの道 (番外編) (計画を”建てました”)
これまでビットコイン自動トレードBotを作るために、ただただプログラムを作り、BitMEXのテストサイトで試行錯誤し、つまみ食いのごとくテクニカル分析指標を使い、言ってしまえば「闇雲」にコーディングしてきたが、ちょっと腰を落ち着けて「計画」を「建てる」ことにしました。(どっかのCMみたいだなあ(笑))
これまでに実装できている部分は以下の部分だ。
①チェネルブレイクアウト型の押し目、戻り天井チェッカー
②補助として MACD、RSI、RCI、SMA、BBANDSなどのテクニカル分析ロジックと、これらのロジックをWebAPIで呼び出せるようにサービス化
③BitMEXとそのテストサイトからOHLCVデータ(1分足、5分足、1時間足、1日足)をバックエンドで自動収集(2016/12月からのデータは取得済み)
④OHLCVデータをデータベースに格納(sqlite3)
⑤d3jsを使ったデータの可視化
⑥BitMEX,Bitflyerに対して、CCXTモジュールもしくは直接サイトのAPIを叩いて売買注文(通常注文、特殊注文)を発行する
将来的にはテクニカル分析指標を拡充しつつ、これらを組み合わせて、トレンド追従型指標とオシレータ系指標の適材適所プラグイン機能を追加したい。イメージとしてはこんな感じだ。
売買が正しく発行されることまでは確認できているが、利益を生むかどうかは別問題だ。今のところ異常処理・例外処理もまだまだ弱い。
よって今回タイトルにもある通り、計画を”建てて”進めようと思う。
やることリストとして、以下を考えた。
①OHLCVデータ収集ロジック、WebAPIサービスの安定化と高速化、カプセル化
②テクニカル分析の理解と、その他の手法の習得
③チャネルブレイクアウト(CBO)チェッカーの誤検知削減
④通常注文以外の特殊注文を、他の取引所にも対応できるようにカプセル化
⑤バックテスト環境の構築と検証作業
⑥UI/UXの強化・使い勝手向上
⑦node.js自体が日進月歩で進化するので、そちらの勉強も続けて行かなければならない。(angularなどは半年でメジャーアップデートがあるし、JavaScriptのトレンドも押さえておかなければならない)
目標はあくまで「利益が出る仕組み作り」なのだから、上記の計画はこの目標を達成するための手段・手法にすぎない。(今回、目的の方がたくさん有るという逆転現象になっている感が強い)
①OHLCVデータ収集ロジックはすったもんだあったが、BitMEXのテストサイトからデータが収集できることと、一度に10080件のデータが取得可能ということで、BitMEX/TestNetの両サイトのRESTAPIから直接取得する方法で落ち着いている。(CCXTのOHLCVデータ取得機能は今回は使わなかったが、将来的にはカプセル化して透過的に使えるようにしたい)
WebAPIは他のアプリケーションから呼び出しを受ける側なので、負荷分散のために処理を並列化する必要があるかもしれない。cluster化も検討する。
②テクニカル分析は書籍を購入したり、ネット上の情報を検索して勉強を勧めている。指標はあまりにも多いので、まずは使えそうなものを数点選んで利用していきたいと思う。指標の探求が目的ではないので。
③チャネルブレイクアウト手法については、あちこちで聞きかじった情報から作ってみた。(基本はUKI氏の公開されたロジック)
2時間足は使わず、1時間足を使った。期間は都度調節可能とした。補助線として以下のテクニカル分析指標を利用した。
④通常の指値、成行注文はBitMEXもBitFlyerも問題なく発行できた。
特殊注文(BitMEXではOTO注文、BitflyerではIFD注文)なども実装できた。
それ以外については実装してみたが、動作に「??」なところも多く、いまのところOTOもしくはIFDと、ポジション確認で対応している。
取引所が異なっても、アプリケーション側から取引所を意識しないで使用できるようにしたい。(カプセル化)
⑤バックテストについては、今のところ構造化されていない。簡単に設定を変更して検証できるように構造化して構築する必要があると思っている。
⑥現状のUI/UXは貧弱極まりない。人様にお見せできるレベルには到底ないので、本体のロジックが安定運用に入ったら拡充していく方向で進めたい。
⑦仕事で使うので否が応でもやらざるを得ない。
普段は仕事をしているので、色んなものを試すのは週末になってしまうので、更新頻度はそれほど高くないと思われますが、これからも頑張って行きますので、よろしくお願いいたします。