- APIとはプログラム同士の「接続部分」のこと
- APIキーを取得することで、他のプログラムからbitbankの情報を取得できる
- プログラムの知識があれば、自動売買のプログラムの作成も可能
bitbank (ビットバンク) のAPIの取得方法と、APIを活用したプログラムの作成手順について解説します。
この記事を読むことで、bitbankのAPIの取得方法だけでなく、どういった情報をAPIから取得できるのかがわかります。
API (Application Programming Interface) とは
API (エーピーアイ) とは、「アプリケーション・プログラミング・インターフェイス」の略称で、「プログラムを別のプログラムから操作する」ときの接続部分を指します。
連携させたいプログラムから発行される、英数字の羅列である「APIキー」をもう一方のプログラムへ入力することで、プログラム同士がを連携させることができます。例えば、GoogleカレンダーをWebサイトに表示させたい場合、GoogleのAPIを利用して「googleカレンダー」と「Webサイト」を連携させます。
プログラムに「APIキー」を入力する部分があれば、プログラミングの知識がなくても簡単に連携が可能です。
bitbank (ビットバンク) で利用できる公式API
bitbankでは、APIを利用することで以下のことを行えるようになります。
- 気配値 (板情報) ・チャートデータ等のパブリック情報の取得
- 注文や取引履歴の取得
- 資産の引出しリクエスト等
発行されるAPIキーは「パブリックAPI」と「プライベートAPI (APIシークレット) 」の2種類があります。連携させたいプログラムによって、入力すべきAPIキーは変わります。
パブリックAPI
パブリックAPIは、次のような「一般的に公開されている情報」を取得するときに利用します。
関数 | 説明 | 引数 |
get_ticker | 市場価格を取得 | pair |
get_depth | 板情報を取得 | pair |
get_transactions | 最新の全約定履歴を取得または、指定日の全約定履歴を取得 | pair/yyyymmdd=None |
get_candlestick | 指定日のロウソク足データを取得 | pair/candle_type/yyyymmdd |
bitbankのパブリックAPIを連携することで、bitbankへアクセスしなくてもこれらの情報を他のプログラムから見ることができます。
プライベートAPI
プライベートAPIは、以下の「ユーザー認証しないと取得できない情報」を得るときに使います。
関数 | 説明 | 引数 |
get_asset | 資産の一覧を取得 | |
get_orders | オーダー情報を取得 | pair/order_id |
get_active_orders | アクティブなオーダー情報を取得 | pair/options=None |
order | オーダーを入れる | pair/price/amount/side/order_type |
cancel_order | オーダーをキャンセルする | pair/order_id |
cancel_orders | 複数のオーダーをキャンセルする | pair/order_ids |
get_orders_info | 複数のオーダー情報を取得 | pair/order_ids |
get_trade_history | 約定履歴を取得 | pair/order_count |
get_withdraw_account | 出金アカウントを取得 | asset |
request_withdraw | 出金をリクエスト | asset/uuid/amount/token |
プライベートAPIを実装することで、bitbankにログインしたりアプリを使ったりしなくても、他のプログラムを通して新規注文し出金させることが可能となります。
bitbank (ビットバンク) のAPI連携で出来ること
APIがあることで「全く別のプログラム同士が連携できるようになる」ため、ユーザーがより便利に使えるようになります。
例えば家計簿アプリ「Money Forward (マネーフォワード) 」では、銀行口座や証券口座、仮想通貨取引所の口座に入っている資産をまとめて管理できますが、これも「API」を活用しています。
従来、銀行は銀行のアプリへログインして残高を確認し、証券会社は証券会社のサイトへログインして資産状況を確認する・・・というように、自分の資産状況を把握するにはいちいち別のアプリを開く必要がありました。
これを、銀行アプリから取得した「APIキー」をMoney Forwardへ入力することで、Money Foward上で銀行残高を確認できるようになります。bitbankも連携できるようになっており、bitbankの「APIキー」を入力することでbitbankの残高がMoney Forward上で確認できます。
いちいちアプリを立ち上げないと利用できなかった機能を、「ひとつのアプリ」から利用できるようになるためユーザーの利便性が上がります。
bitbank (ビットバンク) で利用できるAPI
APIは「プログラム同士をつなぐもの」ということはご理解いただけたと思います。では、その「APIキー」を入力する「器」であるプログラムは、どのようにして作られるのでしょうか?
実は、bitbankではプログラム開発者向けに、汎用性の高いプログラムコードの「まとまり」をライブラリに公開しています。プログラミングコードを記述するための言語は様々ありますが、bitbankでは以下の4種類のプログラミング言語のライブラリを公開しています。
- node.js
- Java
- Python (パイソン)
- Ruby
「node.js」とは?
node.jpは、サーバーサイドのJavaScript言語です。JavaScript自体はブラウザ上で動きWebページに動きを加えるために使われますが、その動作環境の多くはクライアントでした。これを、サーバーサイドでも同じ言語で書けるとしたのがnode.jpです。
node.jpの用途は、Webサービスやスマホアプリ、IoT製品です。
「Java」とは?
Javaは、OS環境に依存しないことが特徴のプログラミング言語です。つまり、WindowsやMac、iOS、Linuxなどの異なる環境下でも動作します。
Webサービスやスマホアプリ、家電製品、IoT製品などに使われます。
「Python」とは?
Python (パイソン) は、人工知能 (AI) や深層学習に使われるプログラミング言語です。文法がシンプルで書きやすいことが特徴です。YouTubeやインスタグラム、EvernoteはPythonから作成されています。
「Ruby」とは?
Ruby (ルビー) とは、Webサービスに活用されているプログラミング言語です。フレームワークのRuby on Railsがあるため、アプリの作成工数を少なく開発できることが特徴です。食べログやクックパッドはRubyで開発されています。
bitbank (ビットバンク) からAPIキーとシークレットキーを取得する方法
bitbankからAPIキーを発行する手順は、次の2ステップです。
STEP1 | APIキーを発行する |
STEP2 | APIキーを確認する |
STEP1 APIキーを発行する
bitbankへログイン後、①左のメニューから「API」をクリックし、②本画面に表示された「APIキーの発行」ボタンを押しましょう。
そうすると、「ラベル名」と「権限の種類」、「二段階認証コード」を入力する画面に変わります。
「ラベル名」には、何の用途で取得するのかを記入するとよいでしょう。例えば、Money Forwardに使うのであれば、「Money Forward」と入力します。
「権限の種類」については、APIを入力するアプリでどの権限のAPIが必要か明記されているはずです。利用するアプリの説明をご確認ください。
「二段階認証コード」を入力し、「確認する」をクリックしましょう。そして「発行する」ボタンをクリックしてください。
STEP2 APIキーを確認する
発行された「APIキー」を確認するには、次の手順を踏む必要があります。
API発行の画面で、確認したいAPIの取得日時をチェックし、「確認ボタン」を押してください。
「二段階認証コード」を入力する画面が表示されますので、コードを入力し、「確認する」ボタンを押しましょう。そうすると、「APIキー」が表示されます。
シークレットキーは、「表示」ボタンを押して確認してください。
Pythonを使ったbitbank (ビットバンク) 公式APIの連携方法
Pythonを使ってAPI経由で情報を取得する手順は、次のとおりです。
STEP1 | bitbankのAPIを取得 |
STEP2 | pythonをインストール |
STEP3 | Anacondaをインストール |
STEP4 | エディターをインストール |
STEP5 | bitbankの公式ライブラリをインストール |
STEP6 | エディターでコードを入力 |
STEP1 bitbankのAPIを取得
前の章で解説した手順に従い、bitbankからAPIを取得しましょう。
STEP2 Pythonをインストール
Python公式サイトへアクセスし、Pythonをダウンロードしましょう。
ダウンロードするときは、コツが必要なのでPython3のインストール - python.jp>を見ながら行ってください。
STEP3 Anacondaをインストール
ディストリビューション「Anaconda」をインストールしますAnaconda Distributionのページからダウンロードできます。
STEP4 エディターをインストール
ソースプログラムを編集するためのエディターをインストールします。これは、お好みのものを入れていただいてOKです。
STEP5 bitbankの公式ライブラリをインストール
bitbankの公式ライブラリをインストールします。Windowsの方はコマンドプロンプト、Macの方はターミナルを立ち上げ、下記のコードを入力してください。
pip install git+https://github.com/bitbankinc/python-bitbankcc.git
STEP6 エディターを立ち上げてプログラムを入力
STEP4でインストールしたエディターを立ち上げ、プログラムコードを入力ください。公式ライブラリをインポートをするため、1行目には必ず下記をご入力下さい。
import python_bitbankcc
全体のソースコード
下記のプログラムをエディターにコピペしましょう。
'-------------ご自身が取得したAPIキー-------'にはAPIキーを、'------ご自身が取得したシークレットキー------'にはAPIシークレットキーを入力します。
「ファイル名をつけて保存」をクリックし、「 (任意の名前) .py」と入力します。そしてターミナルを立ち上げ、「python (任意の名前).py」と入力しましょう。
そうすると、リップルの価格と自分の資産状況のデータが返ってきます。通貨のペアについては、適宜変更してください。
[blockquote url='https://dot-blog.jp/news/bitbank-api-beginners-haw-to/' title='bitbank(ビットバンク)の公式APIの始め方(Python用コード)']#bitbankのライブラリをインポート
import python_bitbankcc
パブリックAPIの設定
class BitBankPubAPI:
パブリックAPI情報の取得
def init/emp:
self.pub = python_bitbankcc.public()
価格取得のコード
def get_ticker(self, pair):
try:
value = self.pub.get_ticker(pair)
return value
except Exception as e:
print(e)
return None
プライベートAPIの設定
class BitBankPrvAPI:
プライベートAPIキーの情報取得
def init/emp:
API_KEY = '-------------ご自身が取得したAPIキー-------'
API_SECRET = '------ご自身が取得したシークレットキー------'
self.prv = python_bitbankcc.private(API_KEY, API_SECRET)
個人資産情報の取得
def get_asset(self):
try:
value = self.prv.get_asset()
return value
except Exception as e:
print(e)
return None
メイン関数の設定
def main():
pub_set = BitBankPubAPI()
prv_set = BitBankPrvAPI()
ticker = pub_set.get_ticker('xrp_jpy') #取引通貨ペアの設定
print(ticker['sell']) #レスポンスの設定
asset_dict = prv_set.get_asset()#プライベート情報取得コマンド
print(asset_dict['assets'])#ウォレット情報取引コマンド
if name == 'main':
main()
[/blockquote]
パブリックAPIで取得
相場価格を取得するプログラムコードです。
[blockquote url='https://ohmycrypto.news/articles/147' title='bitbank(ビットバンク)で取得できる「API」とは? pythonを使った利用方法を解説!']#bitbankのライブラリをインポート
import python_bitbankcc
パブリックAPIの設定
class BitBankPubAPI:
パブリックAPI情報の取得
def init/emp:
self.pub = python_bitbankcc.public()
価格取得のコード
def get_ticker(self, pair):
try:
value = self.pub.get_ticker(pair)
return value
except Exception as e:
print(e)
return None
[/blockquote]
プライベートAPIで取得
自分の資産情報を取得するプログラムコードです。 '-------------ご自身が取得したAPIキー-------'にはAPIキーを、'------ご自身が取得したシークレットキー------'にはAPIシークレットキーを入力します。
[blockquote url='https://ohmycrypto.news/articles/147' title='bitbank(ビットバンク)で取得できる「API」とは? pythonを使った利用方法を解説!']#プライベートAPIの設定
class BitBankPrvAPI:
プライベートAPIキーの情報取得
def init/emp:
API_KEY = '-------------ご自身が取得したAPIキー-------'
API_SECRET = '------ご自身が取得したシークレットキー------'
self.prv = python_bitbankcc.private(API_KEY, API_SECRET)
個人資産情報の取得
def get_asset(self):
try:
value = self.prv.get_asset()
return value
except Exception as e:
print(e)
return None
[/blockquote]
bitbank (ビットバンク) のAPIでプログラムを作ってみる (Ruby)
Rubyを使用してプログラムを作る手順は、次のとおりです。
STEP1 | bitbankのAPIを取得 |
STEP2 | Herokuアカウントを取得 |
STEP3 | Rubyをインストール |
STEP4 | ターミナルで入力 |
STEP5 | Herokuへデプロイする |
STEP6 | bitbankの公式ライブラリをインストール |
STEP7 | プログラムコードを入力 |
STEP8 | Herokuへデプロイする |
STEP1 bitbankのAPIを取得
bitbankのAPIキーを取得しておきましょう。
STEP2 Herokuアカウントを取得
クラウド開発プラットフォームHerokuの準備の手順は、次のとおりです。
項目 | 項目 | 項目 | ||
項目 | 項目 | 項目 | ||
項目 | 項目 | 1 | 000円など | (カンマ) を入れたいときはダブルクオーテーションを使用します" |
[table type='row']
STEP1,Herokuへアカウント登録、メール認証
STEP2,Gitのインストール
STEP3,Heroku CLIのインストール
[/table]
STEP3 Rubyをインストール
RubyinstrallerでRubyのダウンロードしてインストールしてください。
STEP4 ターミナルで入力
Windowsではコマンドプロンプト、Macではターミナルを開いてコマンドを打ち込みます。
[blockquote url='https://sakagami3.com/entry/2018/01/20/191618#bitbankAPI-2' title='bitbank API でビットコイン(仮想通貨)の自動売買を行うシステムトレードプログラムを書いてみた | さかめも']$ heroku login
Rails をインストール。
$ gem install rails --no-ri --no-rdoc
Rails アプリケーションを作成。
$ rails new myapp --database=postgresql
アプリケーションのディレクトリに移動。
$ cd myapp
Gem をインストール。
$ bundle install[/blockquote]
STEP5 Herokuへデプロイする
空のアプリケーションをHerokuへデプロイします。
[blockquote url='https://sakagami3.com/entry/2018/01/20/191618#bitbankAPI-2' title='bitbank API でビットコイン(仮想通貨)の自動売買を行うシステムトレードプログラムを書いてみた | さかめも']git でアプリケーションを管理させる。
$ git init
$ git add .
$ git commit -m "init"
Heroku 上でアプリケーションを新しく作成。
$ heroku create
Heroku へデプロイ。
$ git push heroku master
いちおうマイグレーションも実行しておく。
$ heroku run rake db:migrate
[/blockquote]
STEP6 bitbank (ビットバンク) の公式ライブラリをインストール
bitbankのRuby用のライブラリをインストールします。以下のコードを実行しましょう。
gem install ruby_bitbankcc
その後は、次のことを実行してください。
[blockquote url='https://sakagami3.com/entry/2018/01/20/191618#bitbankAPI-2' title='bitbank API でビットコイン(仮想通貨)の自動売買を行うシステムトレードプログラムを書いてみた | さかめも']追加した gem をインストール。
bundle install
orders タスクを追加。
rails g task orders[/blockquote]
STEP7 プログラムを入力
プログラムコードを入力ください。
STEP8 Herokuへデプロイ
作成したプログラムをデプロイします。
git push heroku master
買い注文を入れるプログラム
下記のプログラムの「アクセスキー」と「シークレットアクセスキー」に、bitbankで取得したAPIキーを入力しましょう。
[blockquote url='https://sakagami3.com/entry/2018/01/20/191618#bitbankAPI-2' title='bitbank API でビットコイン(仮想通貨)の自動売買を行うシステムトレードプログラムを書いてみた | さかめも']namespace :orders do
desc "50,000円で0.01BTCの買い注文を入れる"
task :buy => :environment do
bbcc = Bitbankcc.new("アクセスキー", "シークレットアクセスキー")
response = bbcc.create_order('btc_jpy', "0.01", 50000, 'buy', 'limit')
result = JSON.parse(response)
if result['success'] == 1
puts "完了!"
end
end
end
[/blockquote]
売り注文を入れるプログラム
売り注文についても同様に、「アクセスキー」と「シークレットアクセスキー」に取得したAPIキーを入力します。
[blockquote url='https://sakagami3.com/entry/2018/01/20/191618#bitbankAPI-2' title='bitbank API でビットコイン(仮想通貨)の自動売買を行うシステムトレードプログラムを書いてみた | さかめも']namespace :orders do
desc "60,000円で0.01BTCの売り注文を入れる"
task :sell => :environment do
bbcc = Bitbankcc.new("アクセスキー", "シークレットアクセスキー")
response = bbcc.create_order('btc_jpy', "0.01", 60000, 'sell', 'limit')
result = JSON.parse(response)
if result['success'] == 1
puts "完了!"
end
end
end
[/blockquote]
注文を確認するプログラム
現在注文中の内容を確認するためのコードです。
[blockquote url='https://sakagami3.com/entry/2018/01/20/191618#bitbankAPI-2' title='bitbank API でビットコイン(仮想通貨)の自動売買を行うシステムトレードプログラムを書いてみた | さかめも']namespace :orders do
desc "現在 入っている注文を確認する"
task :check => :environment do
bbcc = Bitbankcc.new("アクセスキー", "シークレットアクセスキー")
response = bbcc.read_active_orders('btc_jpy')
result = JSON.parse(response)
result["data"]["orders"].each do |order|
puts "#{order['order_id']} - #{order['price']} / #{order['side']}"
end
end
end
[/blockquote]
bitbank (ビットバンク) の取引履歴APIの制限
2017年12月、bitbankはサーバーへの負荷が高まったとして、一時的に取引履歴のAPIを制限したと発表しました。
そのときに制限された内容は、次の2点です。
期間指定 (開始日・終了日) を伴う取引履歴の検索
取引履歴APIの呼び出し
今後も負荷が高まるとAPIが制限される可能性があります。