見出し画像

デルタニュートラル複利ボット - Bybit版

最近の仮想通貨界隈はビットコインだけでなくなぜかリップルまで上がりだし、バブルを感じ始めましたね。2017年とは違い仮想通貨界隈ではデルタニュートラル戦略をはじめとしてレンディングやDeFiによるイールドファーミングなど色々な運用方法が流行り始めているように思います。

本ノートではBybitでデルタニュートラル戦略で得た金利収入を、さらにポジションに追加することで複利収入を得るためのボットの構築方法について記載します。

システム概要

Bybitのインバース無期限契約のすべての銘柄であるBTC/USD,ETH/USD,XRP/USD,EOS/USD(太字のみ動作確認済み)のペアに対して、資金調達が行われれるタイミング(1:00,9:00,17:00)に利用可能残高すべての売り注文を成行で行います。
売り注文が成功もしくは失敗したらDiscordに通知を行います。
残高確認、売り注文の処理はGoogle Cloud Platformを利用して設定します。ただし専門的な知識は不要GUIの操作、設定値の入力、ソースコードのコピーペーストのみで環境の構築可能です。また通常は無料で運用することができます。
有料部分には動作に必要なソースコードがあります。

画像1

ボットの処理は以下の流れで行われます。

・Google Cloud PlatformのCloud Schedulerがbybitが資金調達を行う1:00,9:00,17:00のタイミングで残高確認と売り注文を行うCloud Functionsを定期的に呼び出す。
・Cloud Functionsがbybitに残高確認と売り注文を行う。
・Bybitへの売り注文が成功したこともしくは失敗したことをDiscordに通知する。

免責事項、注意事項

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

事前準備

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

bybitのアカウントの作成

bybit(アフィリンク)に口座を作成します。
条件によってはボーナスのビットコインをもらえることもあります。

Discordのアカウントの作成

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

Google Cloud Platformの登録

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

bybitでデルタニュートラルなポジションを構築

Bybitのインバース型無期限契約取引BTC/USD,ETH/USD,XRP/USD,EOS/USD
(太字のみ動作確認済み)のいずれかでデルタニュートラルなポジションを構築します。ここに記載しているデルタニュートラルなポジションとは残高すべてに対して1倍ショートを行っている状態となります。
分からない場合は以下に記載した内容を参考してポジションを構築してください。


デルタニュートラル複利ボットの構築

bybitのAPIキーの取得

以下の操作でbybitのAPIキーを発行して、APIキーとシークレットの情報を入手します。入手した情報はあとで使うのでメモ帳等に保存します。

・bybitのメニューでAPIを選択
・新しいキーの作成ボタンを押す
・新しいキーの作成ダイアログで以下を入力
 名前:任意の名前
    IPに接続:空白
   キー許可:アクティブな注文とポジション
・Google認証トークンを入力して確定ボタンを押す。
・APIキーとシークレットの情報が表示される。

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

Discordのサーバー、チャンネルを作成し、そのチャンネルに通知するためのウェブフックURLを取得します。既存のサーバーやチャンネルを利用する場合はウェブフックURLの取得のみでよいです。

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

画像2

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

画像3

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

画像7

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

画像5

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

画像6

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

画像7

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

Google Cloud Platformにログインし、発注処理の機能の入れ物となるプロジェクトを作成します。作成済みのプロジェクトを利用する場合は本作業は不要です。

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

画像8

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

画像9

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

画像10

Google Cloud PlatformでCloud Functionを設定

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

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

画像11

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

画像12

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

画像13

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

画像14

次にランタイムの項目で動作時の設定をします。

画像22

タイムアウトの値を60から500に変更します。売り注文時は同時に実行することによる影響がでないように待機時間を設けているためこの設定をしています。

ランタイム環境変数の追加ボタンを押して環境変数を追加します。
上記のように環境変数を入力します。それぞれの環境変数には以下の情報を入力します。

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

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

コードのメニューで実際の処理内容について定義していきます。

画像24

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

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

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

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

画像24

Google Cloud Platformで Cloud Shcedulerを設定

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

画像15

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

画像16

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

画像17

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

画像18

名前は「fr-bot-bybit」を入力します。
頻度には定期実行するスケジュールをcron形式で記載します。
ここでは毎日1:00,9:00,17:00のタイミングで定期実行することを表す
「0 1,9,17 * * *」を指定します。
タイムゾーンは「日本標準時(JST)」を選択します。
ターゲットタイプは「Pub/Sub」を選択します。
トピックは先ほど作成した「fr-bot-bybit」を入力します。
ペイロードには「{}」を入力します。(ジョブからは何も入力がないため)

最後に作成を押します。

画像19

上図のように設定されたらbybitのデルタニュートラル複利ボットの設定は完了です!

動作確認

bybitのデルタニュートラル複利ボットの設定が完了したので早速動作確認してみます。

CloudSchedulerによるジョブの実行は資金調達のタイミングで1日3回になります。時間がかかる場合、CloudSchedulerの「今すぐ実行」ボタンを押すことでジョブの実行を手動で行うことができます。

画像22

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

画像20


さいごに

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

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

それではこれからもよい乳が出ることを祈りましょう。

ここから先は

2,984字

¥ 1,000

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