ビットバンク(bitbank)APIをPythonで使いこなそう【初心者向け】
#本記事はプロモーションを含みます。

あなた
「ビットバンクのAPIを使えばプログラミングで仮想通貨の取引ができるって聞いたんだけど、初めてだから何から始めたらいいのか分からないな。詳しく解説している情報はないかな。」
そんな悩みを解決します。
Pythonのプログラミング環境の作り方からビットバンクAPIの使い方まで、初心者向けにゼロから徹底解説。
ビットバンクAPIの活用をきっかけに、仮想通貨をもっと自由に扱ってみましょう。
ご注意
この記事や本サイトの情報を参考に仮想通貨のプログラムを動かす場合は、全て自己責任でお願いいたします。免責事項に記載の通り、本サイトの情報を参考にして発生したいかなる損害も責任を負いません。
この記事で分かること
- Pythonプログラミング環境の構築方法
- ビットバンクAPIの使い方
目次
ビットバンク(bitbank)APIをPythonで使うと何ができる?
ビットバンクのAPIを使えば、プログラミングでこんな情報を取得することができます。
- 仮想通貨の価格
- 今持っている仮想通貨のバランス
- 過去の取引履歴
- 売買の注文
- etc…
APIって何?
-> 口座の情報にアクセスするためのプログラミング用の窓口。Application Programming Interfaceの頭文字。
そして、このAPIを使ってできる動作を組み合わせることで、具体的にこんなプログラムが作れます。
- 仮想通貨の積立投資を自動化
- 仮想通貨の自動売買bot
ビットバンクAPIを使って具体的に何ができるのか、まずはざっくりとイメージしてみましょう。
仮想通貨の積立投資を完全自動化
積立投資は、1ヶ月に1回とか、2週間に1回とか、一定の期間で淡々と買っていく方法。
でも、いちいち自分で注文するのって面倒ですよね。自分で買おうする度に、もっと安くなるかな?って感情も入っちゃいます。
そんな時こそ、APIの活用。一定期間ごとに買っていくように、プログラムで完全自動化できるのでとても楽になります。プログラムの動きはざっくりこんな感じです。
- 一定期間毎に起動するように設定する
- 仮想通貨を注文する
シンプルに書くとたった2つのステップ。
ビットバンクのAPIを使っているのは、ステップ2の部分ですね。一定期間ごとに自動で注文を入れるためにAPIを使います。
いちいちブラウザやアプリを開いて自分で買う作業を、何度も何度も自分でやり続ける必要なし。プログラムで完全自動化できちゃいます。
仮想通貨の積立投資を完全自動化するプログラムは、ソースも含めてこの記事で詳細を解説しているので参考にしてみてください。
イーサリアム積立を完全自動化して賢く運用【コピペでチャレンジ】
イーサリアムを積立購入したいけど、すでに提供されてる仮想通貨の積立サービスを使うとスプレッドで損しちゃうな。賢く運用するには自分でいちいち現物取引して買うしかないの?その悩み、プログラムで完全自動化すれば解決。スプレッドも面倒もゼロです。この機会にプログラミングの基礎知識も身について、自己投資にもなりますね。
仮想通貨の自動売買bot
自動売買は、ボリンジャーバンドやゴールデンクロス&デッドクロスといったテクニカル指標を使って、いいタイミングで売買して差額の利益を取る方法。
この売買する動きを自動で行うのが、自動売買botです。少し難しそうに聞こえますが、実は簡単。プログラムはざっくりこんな流れで動いています。
- 一定期間毎に価格情報を取得する
- テクニカル指標に必要な計算をする
- 売買条件が成立したら注文を入れる
シンプルに書くとたった3つ。
ビットバンクのAPIを使っているのは、ステップ1と3の部分。価格の情報を取得したり、注文を入れたりするためにAPIを使うわけですね。
ずーっとチャートを見て自分で売買のタイミングを探さなくても、プログラムが全部自動でやってくれます。
自動売買botプログラムの作り方は、ソースも含めてこの記事で詳細を解説しているので参考にしてみてください。
仮想通貨を自動売買するbotの作り方【コピペOKなソースも公開】
仮想通貨の自動売買botに興味があるんだけど、どうやって作ったらいいんだろう?そんな疑問にお答えします。ビットコインやイーサリアムといった仮想通貨を自動売買できるbotを、初めての人でもコピペで作れるようにまとめました。仮想通貨の自動売買botが、Pythonプログラミングを始めてみるきっかけになるかも?
APIはアレンジ次第で何でもできる
ビットバンクのAPIに限らず、いろんなAPIを組み合わせて使えばこんなこともできたりします。
- 定期的に価格情報を取得する
- LINEに通知する
- Twitterに流す
ビットバンクのAPIで仮想通貨の価格を取得して、それをLINEのAPIで自分のLINEに通知したり、あるいはTwitterのAPIでツイートしたり。
APIは、それそのものを一つずつ使うことが目的ではなくて、動作を組み合わせて何をするのか?が大事です。
あなたのアイデア次第で、あなただけのオリジナルのプログラムを作ることができるようになりますね。
ビットバンク(bitbank)APIをPythonで使うには
それでは、早速ビットバンクAPIを使いこなしてみましょう。
ビットバンクAPIの使い方を習得する流れは、以下の通りです。
- Pythonのプログラミング環境を整える
- ビットバンクAPIのライブラリをインストールする
- ビットバンクAPIを実際に動かしてみる
一つずつ、ゆっくり試していきましょう。
Pythonのプログラミング環境を整える
今回、ビットバンクのAPIを使うためにPythonというプログラミング言語を使います。
そのため、まず最初にPythonのプログラミング環境を整えておく必要があります。
ゼロからPythonプログラミングの環境を整える具体的な手順は、この記事にまとめました。初めての方でも必ずPythonプログラミングをスタートできますよ!
MacでPython入門【驚くほど分かるチュートリアル】
Python入門したいけど、何から始めればいいんだろう?今使ってるMacでPythonプログラミングを始められるかな?そんな疑問にお答えします。Pythonプログラムの書き方から動かし方まで、具体例を交えて徹底解説。このチュートリアルの通りにやれば、必ずPython入門できます。
すでにPythonを使える人は、どんどん先に進んじゃいましょう。
ビットバンクAPIを操作するライブラリをインストールする
続いて、ビットバンクAPIを操作するライブラリをインストールしていきます。
ここから先は、直前に紹介したPython入門チュートリアルの設定が終わっている状態として話を進めますね。
やり方は簡単。Macならターミナル、Windowsならコマンドプロンプトを立ち上げて、以下のコマンドを打ち込んでエンターすれば終わりです。
sudo pip install git+https://github.com/bitbankinc/python-bitbankcc@e82d8e59a7f5fe43339deacc605a532749ef9859\#egg=python-bitbankcc
やたら長いコマンドに見えますが、ビットバンク公式のGitHubリポジトリにて説明されている通りです。
GitHubリポジトリって何?
-> ソースコード管理サービスGitHub上での、ファイルの保存や履歴を管理する場所のこと。
以下のようなやたら長い文字列がコマンドに入っていますが、これはコミットハッシュといって、特定のバージョンを示しているIDと思ってもらえればOK。
e82d8e59a7f5fe43339deacc605a532749ef9859 #2021年8月16日現在、最新のコミットハッシュ
コマンドの意味は、このIDのバージョンでビットバンクAPIのPythonライブラリをインストールする!です。
少しだけ背伸びしてみる
APIを試してみるといった実験をする場合、仮想環境を使えるようになると将来的にも管理しやすくなります。
仮想環境って何?という説明からその使い方まで、この記事にまとめてあるので参考にしてみてください。もちろん、後から読むのでもOKです!
venvでPythonの仮想環境を作ろう【初心者向けチュートリアル】
venvでPython仮想環境を作る方法が知りたいな。あと、そもそもなんで仮想環境を使う必要があるの?そんな疑問を持つあなたへ、venvを使ったPython仮想環境チュートリアルをまとめました。メリットとデメリットも一緒に理解して、仮想環境をバッチリ使いこなせるようになっちゃいましょう。
ビットバンクAPIを実際に動かしてみる
これにて、ビットバンクAPIを動かす準備が整いました。早速動かしてみましょう!
Macならターミナル、Windowsならコマンドプロンプトを起動して、以下のコマンドでPythonを起動します。
python3
すると、以下のようにコマンドを入力していく画面が出てきます。
>>> (ここにコマンドを入力していく)
まず、以下のコマンドを入力。インストールしたビットバンクAPIのライブラリを使うためにインポートします。
>>> import python_bitbankcc
すると、ここで以下のようなエラーが出たのではないでしょうか。
ModuleNotFoundError: No module named 'requests'
“requestsっていうモジュールがないよ!”と書かれています。
インポートしたビットバンクAPIのライブラリが、requestsという別のライブラリを使ってるようですね。
そのため、まずは以下のコマンドでPythonを終了します。Ctrl + D のショートカットでもOK。
>>> exit()
そして、以下のコマンドで “requests” をインストールしてあげましょう。
pip install requests
pipは、Pythonパッケージを管理するためのツール。”pip install XXX” と書いて色々なライブラリをインストールできます。
Successfully installed requests と出てきたら、インストール完了。改めてPythonを起動します。
python3
そして、もう一度ビットバンクAPIのインポートにチャレンジ。
>>> import python_bitbankcc >>>
何もエラーがなく、次のコマンド入力ができるようになっていれば、インポート成功です。
続いて、ビットバンクAPIを扱うオブジェクトを作ります。
>>> pub = python_bitbankcc.public()
これで、pubというビットバンクのAPIを扱うオブジェクトができました。
最後に、以下のコマンドを打ってみましょう。
>>> value = pub.get_ticker('btc_jpy') >>> print(value)
value という変数に btc_jpy(ビットコインと日本円の銘柄)の情報をとって、それを print(表示)します。
こんな情報が出てきたのではないでしょうか?
{'sell': '5003941', 'buy': '5003940', 'open': '5168003', 'high': '5206721', 'low': '4950101', 'last': '5003286', 'vol': '575.1096', 'timestamp': 1629184437677}
ビットコインの売買価格などの情報がちゃんと取得できていますね!
sell や buy といった情報の意味は、ビットバンク公式のAPIドキュメントに説明がありますので参考にしてみてください。
なお、ここではビットバンクAPIの使い方を理解するために一つずつ動かしてみましたが、コードをまとめるとこうなります。
import python_bitbankcc pub = python_bitbankcc.public() value = pub.get_ticker('btc_jpy') print(value)
たったの4行!Python入門チュートリアルで紹介しているように、Pythonのプログラムファイルを作ってまとめて実行しても、もちろん同じ結果になります。
例えば、main.py というファイルにまとめたら、こんなコマンドで実行です。
python3 main.py
ビットバンク公式のGitHubリポジトリでは、他にもまだ色々なAPIが紹介されています。
一つ一つ動かしてみて、もっと理解を深めていってみましょう。
ビットバンク(bitbank)APIをPythonでさらに使いこなす
ここまで来れれば、すでにビットバンクAPIの使い方が分かりました。
ここではさらにもう一歩踏み込んで、private APIも使ってみます。privateという名前の通り、あなたのプライベートな注文などができるようになります。
手順はこんな流れです。
- ビットバンクのAPIキーを発行する
- ビットバンクのprivate APIを動かしてみる
一つずつやってみましょう。
private APIの使い方に入る前に
ビットバンクのprivate APIを使うには、ビットバンクの口座開設が必要です。
private APIを使うためのAPIキーを発行する必要があるので、読み進める前に口座開設を申し込んでおくと、後からすぐ試せます。
ビットバンクのAPIキーを発行する
まずは、ビットバンクのAPIキーを発行します。
あなた専用のAPIキーを使うことによって、あなたのビットバンクの口座をプログラミングで操作できるようになるわけですね。
APIキーは、ビットバンクのサイトから発行します。まず、右上のメニューからAPIを選択。
そのメニューの中から、APIキーの発行ボタンを押します。
入力欄が出てくるので、ラベルに “プログラミング用” とか、あなたの分かりやすい名前を入力します。
下の画像にある取引と書かれた赤丸部分も選択しておいてください。もし間違えても、後から改めて作り直せます。
これにて、APIキーとシークレットキーの作成が完了です。
APIキーは超大事なので、誰かに知られないよう取扱注意です。
ビットバンクのprivate APIを使ってみる
それでは、private APIを使って買い注文を入れてみましょう。
間違って注文が成立しないように、ビットコインを1円で0.0001枚購入する注文を入れて試してみます。できるならそんな値段で買いたいですね笑
まず、Python3を起動します。
python3
そして、ビットバンクAPIのライブラリをインポートします。
>>> import python_bitbankcc
続いて、ビットバンクの private API を扱うオブジェクトを作ります。
以下のコマンドの、123 と ABC のところには、先ほど発行したAPIキーとシークレットキーをそれぞれ入れてください。
>>> prv = python_bitbankcc.private('123', 'ABC')
何もエラーが出なければ、private APIを扱うオブジェクトができました。最後に、以下のコマンドで実際に注文を入れてみます。
>>> prv.order('btc_jpy', '1', '0.0001', 'buy', 'limit')
ビットコインを、1円で、0.0001分、買う、指値で、という注文になります。無茶な注文ですね笑
では、この注文がちゃんと入っているのか確認してみましょう。
まず、ビットバンクの右上のメニューから、履歴を選択。
続いて、カテゴリに「取引所 注文履歴」、通貨ペアに「BTC/JPY」を選択。
すると、未約定のところに、1円でビットコインを買おうとする注文が入っていることが確認できますね。
実際にこの注文が成立することはほぼありえないので、念のためキャンセルボタンを押してキャンセルしておくのを忘れずに!
ちなみに、ここまでのコードをまとめるとこんな感じになります。
import python_bitbankcc prv = python_bitbankcc.private('123', 'ABC') prv.order('btc_jpy', '1', '0.0001', 'buy', 'limit')
なんと、たったの3行。思ったより簡単かも…なんて思いませんか?
他にも、例えば prv.order の戻り値を print したりすれば、わざわざビットバンクのサイトにログインしなくても簡単に注文を確認できたりします。
こうやってprivate APIを使いこなせば、仮想通貨の取引をプログラミングで自由に扱えるようになりますね。
このプログラムをカスタマイズしていけば、ビットバンクAPIを使ったあなただけのプログラムも作れるようになれます。
ビットバンク(bitbank)APIで仮想通貨を自動売買するbotを作ってみよう
ビットバンクAPIの仕組みを理解したところで、どうせなら簡単な自動売買botを作ってみましょう。
こんな2つのプログラムを作ります。
- bitbank.py:ビットバンクのAPIにアクセスするクラス
- main.py:ビットバンクのAPIを使って自動売買をするプログラム
一つずつ見ていきます。
ビットバンク(bitbank)APIにアクセスするクラスを作る
まずは、ビットバンクのAPIにアクセスするためのクラスから。
本記事で紹介したビットバンクAPIのライブラリを使っても良かったのですが、学習のためビットバンクのAPIドキュメントを参考にゼロから作りました。
クラスのメソッドもいくつか作ってありますので、中身を読んでみることできっと理解が深まるはずです。
import requests import time import hmac import hashlib import json class Bitbank(object): def __init__(self, access_key, secret_key): self.__access_key = access_key self.__secret_key = secret_key self.__rest_api = 'https://api.bitbank.cc/v1' self.__public_api = 'https://public.bitbank.cc' def _signature(self, nonce, message): signature = hmac.new(self.__secret_key.encode(), message.encode(), hashlib.sha256).hexdigest() headers = { "ACCESS-KEY": self.__access_key, "ACCESS-NONCE": nonce, "ACCESS-SIGNATURE": signature, "Content-Type": 'application/json' } return headers def _request_rest_api(self, endpoint, params=None, method='GET'): time.sleep(1) nonce = str(int(time.time())) body = json.dumps(params) if params else '' try: if method == 'GET': headers = self._signature(nonce, nonce + '/v1' + endpoint + body) r = requests.get(self.__rest_api + endpoint, headers=headers, params=params) else: headers = self._signature(nonce, nonce + body) r = requests.post(self.__rest_api + endpoint, headers=headers, data=body) except Exception as e: print(e) raise return r.json() def _request_public_api(self, endpoint): time.sleep(1) url = self.__public_api + endpoint r = requests.get(url) return r.json() # Tickerの取得 def ticker(self, pair): endpoint = '/' + pair + '/ticker' return self._request_public_api(endpoint=endpoint) # 口座情報の取得 def balance(self): endpoint = '/user/assets' return self._request_rest_api(endpoint=endpoint) # 最新価格の取得 def last(self, pair): return float(self.ticker(pair)['data']['last']) # 自分の持ってるポジション情報の取得 @property def position(self): balance = self.balance()['data']['assets'] dict = {} for index, item in enumerate(balance, 0): k = balance[index]['asset'] v = float(balance[index]['onhand_amount']) if v > 0: dict[k] = v return dict # 取引履歴 def trade_history(self): endpoint = '/user/spot/trade_history' return self._request_rest_api(endpoint=endpoint) # 最後に購入したレート def check_ex_rate(self, pair): history = self.trade_history()['data']['trades'] transaction = [d for d in history if d['side'] == 'buy'] for index, item in enumerate(transaction, 0): if transaction[index]['pair'] == pair: return float(transaction[index]['price']) # 取引所の売り板からレート取得 def book_rate(self, pair): endpoint = '/' + pair + '/depth' book = self._request_public_api(endpoint=endpoint) return book['data']['asks'][0][0] # 取引所ステータスから最小発注単位を得る(負荷に応じて変わるため) def get_min_amount(self, pair): endpoint = '/spot/status' status = self._request_rest_api(endpoint=endpoint) for index, item in enumerate(status['data']['statuses'], 0): if status['data']['statuses'][index]['pair'] == pair: return status['data']['statuses'][index]['min_amount'] # 新規オーダー def order(self, params): endpoint = '/user/spot/order' return self._request_rest_api(endpoint=endpoint, params=params, method='POST')
ビットバンク(bitbank)APIを使って自動売買するプログラムを作る
続いて、ビットバンクAPIを使って自動売買するプログラムを作ります。
ファイル名を main.py として、bitbank.pyのクラスを使って自動売買させています。
プログラムの中の ACCESS_KEY と SECRET_KEY に、APIキーとシークレットキーを入れるのを忘れずに!
import time import pandas as pd import requests import json from bitbank import Bitbank ACCESS_KEY = 'XXXXXXXXXX' # ここにAPIキーを入れる SECRET_KEY = 'XXXXXXXXXX' # ここにシークレットキーを入れる bitbank = Bitbank(access_key=ACCESS_KEY, secret_key=SECRET_KEY) ticker = 'btc' # ここに取引したい銘柄を入れる(btc, eth, xrp, など) interval = 60*5 # ここに移動平均をとる時間を入れる(60*5なら 5分足) duration = 20 pair = ticker + '_jpy' df = pd.DataFrame() while True: time.sleep(interval) position = bitbank.position if not position.get('jpy'): raise df = df.append({'price': bitbank.last(pair)}, ignore_index=True) if len(df) < duration: print('now collecting data...') continue df['SMA'] = df['price'].rolling(window=duration).mean() df['std'] = df['price'].rolling(window=duration).std() df['-2sigma'] = df['SMA'] - 2*df['std'] df['+2sigma'] = df['SMA'] + 2*df['std'] if ticker in position.keys(): if df['price'].iloc[-1] > df['+2sigma'].iloc[-1] \ and bitbank.check_ex_rate(pair) < df['price'].iloc[-1]: params = { 'pair': pair, 'amount': position[ticker], 'side': 'sell', 'type': 'market' } r = bitbank.order(params) message = 'sell @' + str(bitbank.last(pair)) print(message) else: if df['price'].iloc[-1] < df['-2sigma'].iloc[-1]: amount = 0.01 # ここに取引したい量を入れる params = { 'pair': pair, 'amount': amount, 'side': 'buy', 'type': 'market' } r = bitbank.order(params) message = 'buy @' + str(bitbank.last(pair)) print(message) df = df.iloc[1:, :]
このプログラムでは、ボリンジャーバンドというテクニカル指標を使って自動売買させています。
ボリンジャーバンドって何?
-> 「将来の価格はだいたいこの価格帯の中に収まるだろう」という統計学を応用したテクニカル指標のひとつ。統計学上、ボリンジャーバンドの+/-2σ(標準偏差)の範囲内に収まる確率は約95.4%になる。
引用:マネックス証券
統計学上見込める確率から外れた大きな価格変動があった時に売買する、という動きを狙っています。
あとは、main.py と bitbank.py を同じフォルダに置いて、以下のコマンドでmain.pyを動かしてみてくださいね。
python3 main.py
実際にビットバンクAPIを使った自動売買プログラムを動かしてみることで、ビットバンクAPIの理解をもっともっと深めていきましょう。
ビットバンク(bitbank)APIをPythonで使いこなせば一歩先の仮想通貨投資ができる
ビットバンクのAPIの使い方をゼロから解説しました。
一つ大事にしたいことは、ビットバンクのAPIを使って何がしたいのか?という目的意識。
せっかくAPIの使い方が分かっても、何も活用せずに終わってしまうとそれはそれでもったいないです。
自己責任の範囲で、APIの動作を組み合わせて色々なプログラムを作ってみてくださいね。
仮想通貨の自動売買は儲かる?【自作botを3日間運用してみた結果】
仮想通貨の自動売買って儲かるのかな?そんな興味の出てきたあなたへ、自動売買botを作って実際に運用してみた結果を公開です。実際に運用したからこそ分かるメリットとデメリットも知って、仮想通貨の自動売買があなたに向いているのかどうか一つの参考にしてみてください。これをきっかけに、プログラミングを始めてみるのもありかも?