見出し画像

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

今やCoinbaseがNASDAQに上場し、仮想通貨は742万円(BTCFX価格)をついに突破しもはやバブルが止まらないといったところでしょうか。寝て起きたらお金が増えている人も多いかもしれません。

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

また定期的に購入するサービスは仮想通貨の取引所のサービスとして用意されていることも多いです。ただこの場合、仮想通貨の販売所から購入する形となり手数料により割高で購入することになるケースが多いです。

bitFlyerだとかんたん積立設定というサービスがありますが積立時のレートは販売所の価格を参照すると記載があります。

画像2

2021/04/14時点の販売所の購入価格は「7,108,288円」、板取引による取引所の価格は「6898251円」となっており20万円以上(!)の価格差、パーセンテージでいうと3%程度、価格差がありました。
このように販売所ではなく板取引のある取引所で安い価格で定期購入することで最終的により高いリターンを得ることができるといえるでしょう。要はbitFlyerの手数料ビジネスのカモにならないで済みます。

本ノートではbitFlyerで仮想通貨を取引所の価格で定期的に積立するボットの構築方法を記載します。

システム概要

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

画像1

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

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

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

免責事項/注意事項

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

事前準備

bitFlyerのアカウントの作成

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

Discordのアカウントの作成

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

Google Cloud Platformの登録

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

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

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

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

積立金額の検討

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

bitFlyerのAPIキーを取得

BitflyerのAPIキーとシークレットを取得しようを参考にしてbitFlyerのAPIキーを発行して、APIキーとシークレットの情報を入手します。入手した情報はあとで使うのでメモ帳等に保存します。

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

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

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

画像3

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

画像4

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

画像5

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

画像6

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

画像7

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

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

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

画像8

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

画像9

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

画像10

Google Cloud PlatformでCloud Functionを設定

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

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

画像11

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

画像12

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

画像13

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

画像14

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

画像15

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

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

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

BTC = 10000
ETH = 10000
XRP = 10000

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

・BTC,ETH,XRP,XLM,MONA

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

コードのメニューで、ランタイムでは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-bitflyer」を入力します。
頻度には定期実行するスケジュールをcron形式で記載します。
上の図では毎月1日に9:00にジョブを呼び出します。
cron形式の書き方は以下を参考にしてください。

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

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

最後に作成を押します。

画像22

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

動作確認

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

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

画像23

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

画像24

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

bitFlyerの資産状況も実際に発注されていることが確認できます。ただそれぞれのコインの価格や端数の処理の影響により発注した日本円から誤差が発生することに注意してください。

さいごに

設定作業お疲れさまでした。少し大変だったかもしれませんが、販売所で支払う手数料を考えるとやるべき努力ともいえると思います。

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

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

ここから先は

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

この記事が気に入ったらサポートをしてみませんか?