【仮想通貨取引】Gekkoと遺伝的アルゴリズムを駆使して最強のストラテジーを作る(第1回: インストール+動作確認編)
有料noteが続いたのでそろそろオープンソース普及活動でもしようかと思います。
今回はGekkoというツールを紹介します。
まずGekkoとは何かというと、ビットコインなどの仮想通貨の売買戦略のバックテストや自動売買を行うフリーソフトウェアです。Binanceにも対応しているので、BTC/ETH, BTC/XRPなど、かなり大量の仮想通貨ペアに対して使うことができます。
TradingViewを使ってもいいのですが、次回以降に遺伝的アルゴリズムで最強のパラメータを決めたいと思っているので、今回はGekkoを使います。
※遺伝的アルゴリズムについては次回以降で簡単に説明します。
Gekko自体の実装はnode.jsで書かれています。
【修正】BitMEXに対応したバージョンが今は404になっているようなので、
https://github.com/askmike/gekko
からDLしてください。
なお、bitFlyer用のパッチを作成することも考えたのですが、SFD対策が難しすぎるので今回はやりません。
ちなみに適当に書いたストラテジーのバックテスト結果はこんな感じです。
今回はMACDだけで戦っていて、最適化も全くしていないのでしょぼいですね。MACDはパラメータが少なく改良の余地が小さいので、今後は有用かつパラメータの多い別のストラテジーを採用し、それを改造していきます。
では、一通りGekkoがどんな感じの物か説明していきます。
Home: マイケル・ダグラスが出てきます。
(Home開くたびに出てくるのだが、肖像権は大丈夫なのだろうか...?)
Live Gekkos: 設定または実装したストラテジーのフォワードテストや、実際に売買botを動作させることができます。ただし今回は実行しません。
Backtest: バックテストを実行することが出来ます。Binanceが使えるので、BTC, ETH, その他数多のアルトコインに対応しています。ストラテジーについては、内蔵のもの、あるいは自分で実装したものを選択し、パラメータを設定して調節して成績を見ることが出来ます。
Local data: バックテスト用に過去の取引データが必要なので、これらを取得する機能です。
Config: botから取引を行うために、APIキーを登録します。
Documentation: Gekkoのドキュメントへのリンクです。
使い方の流れのイメージとしては、
1. Backtest用の過去データの取得
2. ストラテジーの作成(または既存のものを利用する)
3. バックテストを実行して動作確認
4. パラメータチューニング
5. バックテストを実行して良い感じだったらそのパラメータを採用
6. フォワードテスト(ペーパートレード)
7. 実際にbotを稼働!
という感じになると思います。ちなみに、4番はパラメータが多くなってくると人力では面倒なので、次回以降の遺伝的アルゴリズムを用いて適切なパラメータを設定していきます。このあたりはTrading Viewにはない機能なので、使ったことの無い人だと新しい世界が広がっているかもしれません。
さて、大体のイメージを掴んだ所で、早速インストールしていきましょう。
以下はMacでの手順です。Windowsの方は下記の公式の手順を読んで、適宜読み替えてみてください。
https://gekko.wizb.it/docs/installation/installing_gekko.html
(ちなみに、遺伝的アルゴリズムの実行でマシンパワーをそこそこ使うので、使っていないPCがあればそれを使うか、サーバを借りてそこにインストールするのもいいかもしれません。)
【Gekkoインストール手順】
1. node.js をインストール https://nodejs.org/ja/
2. GekkoをGitHub(https://github.com/Johannnnes/gekko )からダウンロードして適当なディレクトリに配置(Gitが使える人はgit clone)
3. ターミナルから下記のコマンドを実行
$ cd gekko
$ npm install
これでひとまずgekkoのインストールは完了です。それでは動作確認のため立ち上げてみましょう。
$ node gekko --ui
ブラウザが開き、http://localhost:3000/#/home で動作します。
次に動作確認をしていきます。今回はBinanceのUSDT/BTCペアでテストしてみます。
まず過去のデータをインポートします。ブラウザから「Local data」タブをクリックして、下の方の「Go to the importer!」ボタンをクリックします。
「Go to the importer!」をクリックすると下記のような設定項目が出てきます。
ここではExchangeはbinance, CurrencyはUSDT, AssetはBTCを選択します。今回は動作確認なので、DateRangeは7日程度にしてみます。項目を指定したら、「Import」をクリックでデータの取得が始まります。7日分のデータの取得でも少し時間がかかるので待ちましょう。
データのインポートが完了したら、バックテストをしてみます。Backtestタブをクリックし、Scan available dataをクリックします。先程インポートしたデータが出てくるので、それを選択します。Adjust Rangeボタンで日付範囲を指定することも出来ます。
次に、「Strategy」でどの売買戦略を選択するか設定します。今回はとりあえずStrategy: StochRSI, candleSize: 15minを選択します。(特に意味はないです)
Parametersは動作確認なのでそのままでOKです。
最後にBackTestをクリックすると、下記のような感じの結果が出て来るはずです。(時間範囲が変わると結果も変わります。)
本当はストラテジーのカスタマイズなどもっとやることが色々あるのですが、次回以降に回します。
また、gekko自体がbotツールなので自動取引することもできるのですが、現時点では有力なストラテジーの最強のパラメータを決めたいだけなので、bot化(Live Gekkos)は後々行います。ちなみにペーパートレードもできるので、フォワードテストをすることもできます。
なお、一応動作確認はしていますが、もし何かあればコメントしてもらえると反応するかもしれません。(今回無料noteなので限界はありそう)
今回は以上です。次回以降は実際に使えそうなストラテジーの導入と、遺伝的アルゴリズムでのパラメータのチューニングをしていきます。
----------
BTC: 3A74wWSxvwva5og6AaRFm3VCBYu5wxcfFz
ETH: 0xf1b72c33162281e8242341792afe9aecf1966ee9
MONA: ML4YeRJ8QFNADJf3SJH7w7urHbWCdnGT6s
Twitterはこちらです。 https://twitter.com/tonacoin BitMEXのアフィリンクあるので踏んでくれると喜びます。 https://www.bitmex.com/register/1zrLfZ