見出し画像

仮想通貨自動積立ボット - bitbank版

ビットコインも600万円を突破し少しレンジ相場の様相を呈していますね。相変わらずボラティリティはすごいので仮想通貨を一度に購入すると寝られない日々が続くと思います。

長期的にはビットコインをはじめとする仮想通貨は値上がりを予想する声も多くなっています。この場合の戦略としては定期的に購入することで時間分散を行うドルコスト平均法を行うことでリスクを低減し安定的に収益を得ることができるといわれています。

本ノートでは仮想通貨をドルコスト平均法により運用するために必要な、仮想通貨取引所であるbitbankで仮想通貨を定期的に積立するシステムの構築方法を記載します。

システム概要

bitbankの仮想通貨 BTC,ETH,XRP,BCH, LTC, MONA, QTUM, XLM(太字のみ動作確認済み)を任意のタイミング(月始め1日の9:00など)、数量で定期的に購入できます。
購入した後はDiscordに通知され注文に成功もしくは失敗したことを確認できます。
買い注文の処理はGoogle Cloud Platformを利用して設定します。ただし専門的な知識は不要でGUIの操作、設定値の入力、ソースコードのコピーペーストのみで環境の構築可能です。また通常の運用の場合、無料の範囲で利用することができます。
有料部分には動作に必要なソースコードがあります。

画像1

仮想通貨の購入は以下の流れで行われます。

・Google Cloud PlatformのCloud Schedulerが買い注文を行うCloud Functionsを定期的に呼び出す。
・Cloud Functionsがbitbankに買い注文を行う。
・bitbankへの買い注文が成功したこともしくは失敗したことをDiscordに通知する。

また銀行からbitbank定期入金の設定をすることで銀行に日本円があれば、完全に定期購入を自動化することができます。住信SBIネット銀行を利用すると手数料無料で振込することができます。

免責事項

・本ノートの内容を利用したことにより発生した損失については責任を負いかねます。
・質問対応や明らかな不備は可能の範囲で対応しますが、個別の環境トラブルやクラウドサービスを利用することによるトラブル(課金等)は対応できません。
・各画面のスクショを載せて手順を説明しておりますが、今後、各ツールの UI(見た目) が変わる可能性もあります。
・bitbank、ccxt、Google Cloud Platformの仕様変更により上手く動作しなくなる可能性があります。
・本noteの内容を無断で誰でもアクセスできるブログなどに公開すること、また改変したものを有料noteなどの商材として販売することを禁じます。

事前準備

仮想通貨の定期積立システムを構築するために必要な事前準備を記載します。

bitbankのアカウントの作成

これがなければ始まりません。仮想通貨取引所のbitbankのアカウントを作成します。

Discordのアカウントの作成

Discordは無料で利用できるチャットサービスです。本ノートではDiscordを買い注文を行った際の通知を行うための機能として利用します。
Discordにアクセスしアカウントを作成します。

Google Cloud Platformの登録

買い注文を行うための処理はGoogle Cloud Platformというクラウドサービスを利用しています。Google Cloud PlatformにアクセスしGoogleのアカウント作成とGoogle Cloud Platformに登録します。

定期振り込みの設定(オプション)

定期積立する額を決め、bitbankに毎月振り込みを行う設定を行うと、手動で入金する必要がなくなります。住信SBIネットバンクの場合、定額自動振込サービスを無料で利用することができます。

仮想通貨積み立てシステムの構築方法

積立金額の検討

システムを構築する前にどのコインをどの頻度でいくら積み立てるかを検討してみましょう。各自の資金、コインの将来性について考慮して決めていきます。このノートでは月初めの1日の日本時間9:00にBTCとETHとXRPを10000円づつ定期購入する例を記載します。

bitbankのAPIキーを取得

APIキーの発行とAPI仕様の確認方法を参考にしてbitbankのAPIキーを発行して、APIキーとシークレットの情報を入手します。入手した情報はあとで使うのでメモ帳等に保存します。
※APIキーの発行時の権限は参照と取引を選択してください。

DiscordのウェブフックURLの取得

Discordのサーバー、チャンネルを作成し、そのチャンネルに通知するためのウェブフックURLを取得します。

以下のようにサーバーを追加を行い、ダイアログに従って任意の名前でサーバーを作成します。

画像2

以下のようにチャンネルを作成をクリックします。

画像3

テキストチャンネルのダイアログが表示されるのでチャンネル名に任意の生を入れてチャンネルを作成ボタンを押します。

画像4

以下のようにチャンネルの編集ボタンを押します。

画像5

連携サービスを選択してウェブフックを作成をクリックします。

画像6

ウェブフックURLをコピーをクリックして、メモ帳等にペーストして保存します。

画像8

Google Cloud Platformにプロジェクトを作成

Google Cloud Platformにログインし、発注処理の機能の入れ物となるプロジェクトを作成します。

ナビゲーションメニューからホーム→ダッシュボードを選択します。

画像12

プロジェクトを作成を選択します。

画像8

任意のプロジェクト名を入力して作成ボタンを押します。

画像9

Google Cloud PlatformでCloud Functionを設定

買い注文を行う処理を定義するCloud Functionを作成していきます

作成したプロジェクト上で、ナビゲーションメニューからCloud Functionを選択します。

画像12


関数を作成をクリックします。

画像14

関数の作成の構成のメニューで関数名に「buy-order-bitbank」とつけます。リージョンは「asia-northeast1」を指定します。

画像13

次のトリガーでトリガーのタイプで「Cloud Pub/Sub」を選択します。
「Cloud Pub/Subトピックを選択してください」の項目で「トピックを作成する」を選択してトピックを作成します。
トピックの作成ダイアログがトピックIDでは「buy-order-bitbank」を入力してトピックを作成をクリックします。
「Cloud Pub/Subトピックを選択してください」の項目で作成したトピックが入力された状態になるので保存ボタンを押します。

画像17

次にランタイムの項目でランタイム環境変数の追加ボタンを押して環境変数を追加します。

画像19

上記のように環境変数を入力します。それぞれの環境変数には以下の情報を入力します。

API_KEY:BitbankのAPIのAPIキー
API_SECRET:BitbankのAPIのシークレット
WEBHOOK_DISCORD:DiscordのウェブフックURL

注文情報は環境変数にキーにコインのシンボル名、値に日本円の発注量を定義します。上記の図では以下のように定義しており、これはBTC,ETH,XRPをそれぞれ10000円づつ購入することを表しています。

BTC = 10000
ETH = 10000
XRP = 10000

Bitbankで以下のコインのシンボルを定義することが可能です。(2021年4月現在)

・BTC,ETH,XRP,BCH, LTC, MONA, QTUM, XLM(太字のみ動作確認済み)

最後に次へボタンを押します。

コードのメニューで、ランタイムではPython 3.7、エントリーポイントにmainを入力します。
Cloud Build APIでは、選択されているランタイムを使用する必要があります。という表示がされる場合はAPIを有効にするボタンを押してCloudBuild APIを有効にしてください。

画像16

ソースコードのインラインエディタでmain.pyを選択し、有料部分のmain.pyをコピーペーストします。

ソースコードのインラインエディタでrequirements.txtを選択し、有料部分のrequirements.txtをコピーペーストします。

最後にデプロイボタンを押します。

緑色のチェックマークが表示されたらCloud Functionsの設定は完了です。

画像17

Google Cloud Platformで Cloud Shcedulerを設定

ナビゲーションメニューで Cloud Schedulerを選択します。

画像18

ジョブを作成をクリックします。

画像19

ロケーションを選択のメニューが表示されたらリージョンを選択の項目で「aisa-northeast1」を選択して次へをクリックします。

画像20

設定したCloud Functionを定期呼び出しするジョブを作成します。

画像21

名前は「buy-order-bitbank」を入力します。
頻度には定期実行するスケジュールをcron形式で記載します。
上の図では毎月1日に9:00にジョブを呼び出します。
cron形式の書き方は以下を参考にしてください。

以下のサイトでは指定した時間帯からcronの設定を作成することができます。

タイムゾーンは「日本標準時(JST)」を選択します。
ターゲットタイプは「Pub/Sub」を選択します。
トピックは先ほど作成した「buy-order-bitbank」を入力します。
ペイロードには「{}」を入力します。(ジョブからは何も入力がないため)

最後に作成を押します。

画像22

上図のように設定されたらbitbankで仮想通貨を定期購入するための設定は完了です!

動作確認

bitbankで仮想通貨を定期購入するための設定が完了したので早速動作確認してみます。

CloudSchedulerによるジョブの実行に時間がかかる場合、CloudSchedulerの「今すぐ実行」ボタンを押すことでジョブの実行を手動で行うことができます。

画像23


買い注文が成功した場合、以下のようにDiscordのチャンネルで通知されます。

画像26

※Discordに通知される情報は発注時の情報です。実際に約定した情報ではないことに注意ください。

bitbankの資産状況も実際に発注されていることが確認できます。

画像25

上記の例ではBTC,XRP,ETHをそれぞれ10000円ずつ購入しました。ただそれぞれのコインの最低発注量(ビットコインの場合は0.0001BTC)の影響により発注した日本円から誤差が発生することに注意してください。

さいごに

設定作業お疲れさまでした。少し大変だったと思いますが、サーバー代は基本無料でで安定稼働する基盤としてCloud Function、Cloud Schedulerはメンテナンスなども考慮するとよい選択肢だと考えています。他にも応用を考えていきたいですね。

問題や質問がある場合や要望、その他については以下のDiscordで受け付けます。なおDiscordは公開チャンネルのため本ノートの転載は不可になります。
Twitterアカウント @amdapsi でも受け付けます。

それでは10年間動かしてお金持ちになっていることを祈りましょう。

ここから先は

3,537字
この記事のみ ¥ 500

この記事が気に入ったらチップで応援してみませんか?