【仮想通貨bot】 JavaScriptで作る仮想通貨自動取引bot 第2回 事前準備編+おまけ

【概要】

・bitFlyerの設定

・仮想通貨の自動取引botの開発環境整備

・おまけ:実際儲かるのか?


前回は仮想通貨自動取引bot開発の連載のロードマップを提示しました。今回からは仮想通貨自動取引botを作っていきたいのですが、まずは開発環境の整備をしましょう。目標としては、次回記事でアップするソースコードをコピペすれば実際にbotが動く状態にすることです。ちなみに前回記事はこれです。


ではさっそく環境整備に入りましょう。準備するものは、ざっくり分けると

1. bitFlyerのアカウント(トレードクラス)

2. 少量の日本円

3. node.js

4. Git(できれば)

5. JavaScriptの基本的な知識とリファレンス

の5つです。もう全部あるよという方はおまけの段落まで読み飛ばしてよいです。


# 1. bitflyerのアカウント

既に開設してある人はスキップして大丈夫です。別取引所などで開設しているか、もしくは仮想通貨bot作りたいがまだアカウントないよ、という方はbitflyerのアカウントを作りましょう。

トレードクラス(実際に自動取引ができる状態)になるまでに、本人認証書類とか書留の受けとりとか諸々必要なので、だいたい5営業日程度かかるようです。実際他の準備物はあとでどうにでもなりますが、これは早めに作っておいたほうがいいかと思います。一応リンク貼っておきます。


# 2. 少量の日本円

動作検証のため最小で2000円程度入れておいてください。検証用には0.001枚単位で回せば2000円程度いれておけば強制ロスカットされることはそうそう起こらないはずなので、そこは安心してください。


# 3. node.js

下記の手順に従って入れましょう。すぐ終わるはずです。


# 4. Gitなどのバージョン管理ツール

必須とまでは言わないものの、なければ入れて置くとベターです。多分今後のnoteでも言及されます。

使ったことの無い方向けに説明しておくと、ソースコードの差分が簡単に見れたり、切り戻しのできるツールだと考えてください。

本当に利益のでるbotを作ろうとした場合、戦略の改善検証を行うことが必須なので、適当に上書きするか、別ファイルにリネームしてひたすらコピペするという方針は結構きついものがあります。覚えるコストもそんなに高くないので、今後の開発が楽になるように準備しておきましょう。

また、習得の方法ですが、ドットインストールが速習にはおすすめです。


あとターミナルだと視認性がイマイチだと私は考えているので、SourceTreeも入れると良いと思います。Gitに慣れていれば簡単なので直感的に使えると思います。

GitHubについては、アカウントはあっても無くてもよいですが、あったほうが便利ではあります。注意点としては、シークレットなデータは絶対に公開リポジトリには置かないことです。これについてはそのうち説明する予定です。また、もし作ったbotを公開したくないときはこれも公開リポジトリに置かないようにしましょう。


# 5. JavaScriptの基本的な知識とリファレンス

初級〜中級レベルのコードが出て来るので、「この部分何してるんだっけ?」とならないために、JavaScriptの開発歴が浅い人は用意しておいたほうがいいです。わからなかったらQiitaとか見ればいいじゃんという方はそれでもいいですが、網羅的な説明がある本かWebサイト1個あったほうが圧倒的にやりやすいと思っています。これもドットインストールなり体系的なWebサイトなりを見るか、本を買うなりしましょう。

ちなみに、今後このnoteで出てくるコード全部本当に覚えようとすると、node.js、REST API、同期・非同期とか結構多いので、書いて動作確認してから徐々に理解していくスタイルがいいと思います。

以上で準備は一通り完了です。次回以降は実際のbot作成に取り掛かりましょう。


※おまけ

botを作ろうとして結局儲かるのか?というのは重要な問題だと思います。いまのところ、良い戦略を立ててかつバグがなければだいたい儲かるか、儲からないとしても大損はこかないという状況です。

事例としてとりあえずとある戦略のバックテストの結果を1つ書いておきます。4/1からの1日分のデータで、とりあえず0.1枚単位で回しています。

...
timestamp: 2018-04-02T10:30:00.000Z
closed_size: 0.1
profit: 15.100000000000001
timestamp: 2018-04-02T12:15:00.000Z
closed_size: 0.1
profit: 301.40000000000003
timestamp: 2018-04-02T12:30:00.000Z
closed_size: 0.1
profit: 242
timestamp: 2018-04-02T12:45:00.000Z
closed_size: 0.2
profit: 2537.7000000000003
timestamp: 2018-04-02T14:30:00.000Z
total_profit: 11193.300000000001
win rate: 0.6923076923076923

重要なのは最後の2行です。total_profitが最終的な利益の推測値で、win rateが、ポジションを持ってからクローズするまでの勝率です。この実行結果だと1日で(BTCの平均価格の14%)×(1回のトレードの単位)くらいが勝手に増える計算です。ただ遅延など考慮すると増減します。

ちなみに、この戦略は他の日付で見たら、勝率が80%超えているのにトータルで損している日もあったので、改良の余地はあります。この戦略のソースコードについて言えば、単にロスカットのロジックを洗練させれば良いだけでした。

Twitterはこちらです。 https://twitter.com/tonacoin BitMEXのアフィリンクあるので踏んでくれると喜びます。 https://www.bitmex.com/register/1zrLfZ