仮想通貨投資術
もう夜中まで待って手動で仮想通貨の取引操作をする必要なし!
bitbank API+RPAでドル・コスト平均法。指定時間に指定金額分自動売買するツールを作る
2019年9月27日 06:00
「老後資金」「2000万円」などのキーワードが話題になる中、今ある資金を増やすための投資先として、Bitcoin(ビットコイン)などの仮想通貨に興味を持っている人も少なくないことでしょう。しかし、価格変動幅が大きい仮想通貨は初心者には敷居が高いイメージがあるうえ、何より、忙しくて動向を細かくチェックしたり、取引したりするヒマがないという人がほとんどでしょう。そこでおすすめしたいのが、積み立て感覚で、一定金額を毎日コツコツと投資する方法です。「いくら簡単とはいえ、毎日、取引操作をするのは面倒……」と思うかもしれませんが、話題のRPAツールを使って購入操作を自動化すれば、あなたが寝ている間にロボットが自動的に仮想通貨を取引してくれます。
コツコツ購入で仮想通貨をはじめよう
「そろそろ仮想通貨を取引してみようかな……」
老後資金に限らず、資産形成のためにさまざまな金融商品を検討する中で、仮想通貨を1つの選択肢に考えている人も少なくないことでしょう。
しかし、仮想通貨の購入には不安もつきものです。
誕生から約十年。これまでにもさまざまな懸念材料を払拭し続けてきたBitcoinの将来性や技術には、もはや疑いを挟む余地はなさそうですが、「いざ取引」となると、価格変動幅が大きく、いつ、どのようなタイミングで、どれくらい買えばいいのかの判断がしづらいのも確かです。
株式やFXであれば、国際情勢や各国の金融政策、ニュースなどから、ある程度の「相場観」で取引ができるかもしれませんが、果たして、自らの経験やセオリーがそのまま仮想通貨でも通用するのか? という点に不安がないとは言えないでしょう。
そこでおすすめしたいのが、「ドル・コスト平均法」による仮想通貨の購入です。
積立投信などでも一般的な方法で、毎日、毎週など、決まったタイミングで一定額の仮想通貨を購入し続けるという方法になります。
価格が変動しやすい金融商品は、一度に大量購入すると高値づかみをしてしまう可能性がありますが、一定額ずつコツコツと購入するドル・コスト平均法では、価格が高いときには少なく、安いときには多く購入するため、毎月一定の数を買う方法と異なり、買付単価を平準化することができます。
要するに、価格変動幅が大きいことによるリスクをなるべく小さくしようという考え方です。
利用する仮想通貨交換所によって違いはありますが、例えば、国内ナンバーワンの取引量(※2019年5月15日CoinGecko調べ)の「bitbank」の場合、Bitcoinの最小購入単位は「0.0001」です。
本稿執筆時点(2019年9月10日)のbitbankで取引されているBitcoinの価格は1BTCあたり110万円前後ですから、110万円×0.0001=110円から購入できます。
ここで仮のシミュレーションをしてみましょう。
たとえば、現在、コーヒーなどの嗜好品にかけている費用を500円としたとき、この費用を節約しつつ、コツコツと、この方法で仮想通貨を購入したとしましょう。この場合、仮に価格が80万円に下がれば0.0006単位を購入し、価格が150万円になれば0.0003単位を購入することになります。価格が高いときは少なく、安い時には多く購入して、リスクを分散させることができます。
こうした投資をコツコツと続けることで仮想通貨で資産を形成すると同時に、その間に、価格の変動や動向などを経験していくことで、仮想通貨ならではの相場観を養ったり、自分ならではのセオリーのようなものを見つけ出したりすることができるわけです。
手動はムリ! ロボットに自動的に取引させよう
このように、ドル・コスト平均法によるコツコツ投資は、仮想通貨のはじめの一歩におすすめの投資方法ですが、1つ大きな問題があります。
それは、自動的に定期購入するのが困難なことです。
株式やFXなどでは、証券会社のサイトや専用の自動取引アプリを使って自動的に売買をすることもできますが、仮想通貨では、こうしたしくみはほとんどなく、ウェブページやスマートフォンのアプリを使って、購入単位や金額を指定して手動で取引する場合がほとんどです。
このため、ドル・コスト平均法で資産形成する場合は、毎日、手動で、文字通り、コツコツと購入を繰り返さなければなりません。たとえば、相場的に夜中の方が有利そうだと思ったら、深夜に起きて取引をしなければならないことになります。
もちろん、プログラミングの知識があるなら、仮想通貨交換所が公開しているAPIを使って、自動売買用のプログラムを組んでしまえばいいことになります。
しかし、誰もがプログラミングの知識を持っているわけではありません。
現状、仮想通貨を持っている人と持ってない人、APIを使える人と使えない人で、資産形成の方法に格差が生まれてしまっているのも事実です。
そこで、提案したいのがロボットを使った自動取引です。
ロボットと言っても機械的なものではなく、「RPA(Robotic Process Automation)」と呼ばれるソフトウェアによる自動処理のことです。
業務効率化や働き方改革などで企業で急速に導入が進んでいるテクノロジーの1つで、簡単な命令書(ワークフロー)を定義するだけで、パソコン上で動作するソフトウェアのロボットが命令通りに、ブラウザーやExcelなどのアプリケーション、インターネット上の各種サービスを自動的に操作してくれる技術となります。
RPAでは、画面上のアプリをクリックするなど、人間の操作をトレースすることもできますが、前述した仮想通貨交換所のAPIを制御することも簡単にできます。
要するに、RPAのロボットにAPIによる仮想通貨の取引を命令しておけば、毎日、コツコツと、あなたに変わってロボットが仮想通貨を自動的に購入してくれるわけです。
そう聞くと、敷居が高そうに思えますが、実はそうでもありません。
RPAツールはさまざまなものがありますが、ここでおすすめするのはUiPathの製品です。UiPath社が提供するRPAツールは、Community Editionと呼ばれる個人向けのライセンスが無償で利用できるうえ、「代入」や「繰り返し(各行)」などの日本語名のパーツ(アクティビティと呼ぶ)を画面上にドラッグして、つなげていくだけで、ロボットへの命令を記述できます。
・UiPath Community Editionのダウンロード
https://www.uipath.com/ja/developers/community-edition-download
仮想通貨交換所のAPIも、シンプルで誰でも利用ができるものなので、難しく考える必要はありません。イメージとしては、URLを指定してウェブページを見るようなものです。取引に必要なパラメーターを追加したURLを作るようなものと考えるといいでしょう。
ExcelのマクロやVB.NETで簡単なプログラムを組んだことがあれば、より話が早いところですが、その経験がなくても、少し自習するだけで、すぐに使いこなせるはずです。
早速、UiPathを使って、自動取引ロボットを作ってみましょう。
bitbank用の自動取引ツールをUiPath Studioで作ってみよう
まずは、今回作るロボットのワークフロー全体像を見てみましょう。
ざっくりとした流れを見ておきましょう。基本的に上から矢印の流れに沿って処理が実行されます。
まず、接続に必要な初期パラメーターをセットし、指定した購入時刻になるまで待機(ループ)。仮想通貨交換所のステータスをチェックしてサイトに問題がなければ、現在の価格情報を取得し、あらかじめ決めた予算から購入数を計算します。
その後、ユーザーの買い付け余力をチェックして、一定レベル以上であれば、成り行きでBitcoinを購入します。最後に、5秒ほど待ってから、取引が成立しているかどうかをチェックするという流れです。
各パーツを展開すると、さらに細かな処理が並んでいます。たとえば、「シーケンス-初期パラメーターセット」には、「代入」というアクティビティがいくつも配置されています。実際に、このワークフローを実行する場合は、APIを利用するためのAPIキーやシークレット、取引する金額(この金額の範囲内で購入可能な数を計算する)などを指定します。
ポイントとなる部分をいくつか紹介しておきます。
まず、「代入-現在時刻を取得」の部分ですが、ここで購入時間まで待機します。このワークフローを、パソコン上で起動後、購入時間まで時刻をチェックしながら待機します。初期パラメーターで指定した時間でなければループし、時間になればループを抜けて次の処理に移ります。
続いて、APIの使い方を見てみましょう。
UiPathからbitbankのAPIを呼び出すには、「HTTPリクエスト」というアクティビティを使います。
APIの詳しい使い方は、こちらを参照していただくとして、このアクティビティのプロパティにアクセス先のエンドポイントやヘッダーなどを指定します。たとえば、取引所のステータスを取得する場合は、次のエンドポイントにGETのリクエストを送信します
エンドポイント:"https://api.bitbank.cc/v1/spot/status"
APIの戻り値は、JSON形式になりますので、出力を一旦、変数に格納してから、その変数を「JSONをデシリアライズ」アクティビティを使って認識できるようにしています。その上で、次のように指定することで、JSONのデータの中から「status」の値を取り出します(ここではBitcoinと円の取引のステータスを取得)。値が「normal」なら取引所が正常に動作しているということになります。
(From p In statusObject("data")("statuses")
Where Convert.ToString(p("pair"))=paramPair
Select Convert.ToString(p("status"))).First.ToString
とまあ、このような感じで、直近の取引価格を取得して予算から購入数を計算したり、実際に成り行きで購入したりする処理が続いていきます。
注意点としては、「シーケンス-成り行きで購入」の部分でしょうか。ここには、購入処理が記述されていますが、購入の場合は認証処理が必要になります。
詳しくは、前述したAPIのドキュメントを参照して欲しいのですが、HTTPリクエストヘッダーに対して、次の情報を付与する必要があります。
ACCESS-KEY:APIキーページで取得したAPIキー
ACCESS-NONCE:整数値。リクエスト毎に数を増加させる
ACCESS-SIGNATURE:nonceとリクエスト情報を連結させHMAC-SHA256形式でシークレットキーで署名したもの
このため、「シーケンス-成り行きで購入」内では、タイムスタンプからnonceを生成したり、シグネチャのベースとなる情報をつなぎ合わせたり、HMAC-SHA256でハッシュ化する処理などが記述されています。
本ワークフローは、基本的に単純な「代入」と「HTTPリクエスト」の繰り返しで構成されていますが、この部分だけ、若干、ややこしい処理となっているので注意してください。
実際に動かしてみよう
実際に動かすときは、最低限、次のパラメーターを変更します。
●シーケンス-初期パラメーターセット
代入-APIキー:bitbankから取得したAPIキー
代入-APIシークレット:bitbankから取得したAPIシークレット
代入-購入予算:購入金額総額(定期購入1回分の予算)
代入-購入時間:購入時間
これで、ワークフローを実行すると、待機状態となり、指定した時間が来ると購入処理が実行されます。
なお、このように時間まで待機するしくみとなるため、たとえば夜中の時間を指定した場合は、ワークフローを実行後、パソコンを起動しっぱなしにしておく必要があります。途中でスリープにならないように注意が必要です。
パソコンを立ち上げっぱなしにするのが非効率的だと感じる場合は、クラウド上で動作する仮想マシンを使って、時間起動するようにすることもできます。その場合は、UiPathのクラウドサービス(Orchestrator)も併用し、クラウド上の管理コンソールから時間を指定してロボットを起動します。
ワークフロー内に「Orchestrator」で使う場合の処理も残してありますので、必要に応じて変更するといいでしょう。
仮想通貨を楽しもう
このように、ここではドル・コスト平均法を使って、指定した時間に自動的にBitcoinを購入するロボットを作りました。
仮想通貨の場合、株式やFXと異なり、自動売買ツールがあまり一般的ではありませんが、bitbankのようにAPIが公開されている取引所を利用すれば、RPAツールを使って簡単に取引を自動化することができます。
今回は成り行きで購入しましたが、価格を判断したり、直前の価格などから上昇・下降などの傾向を掴んで売買を判断したりと、より複雑な処理にすることも可能です。
冒頭でも触れたように、最小単位であれば100円前後から購入できるので、思ったよりも遙かに手軽に購入できます。毎日、コツコツ買っていけば、気づいたときには大きな資産になっている可能性もあるので、ぜひ試してみるといいでしょう。