シヨツ鬼のブログ

初心者向けに分かりやすくIT関連の情報を発信しています。

【Python】bitbank APIを使って仮想通貨を自動売買する方法【初心者歓迎】

f:id:shiyotsuki:20210307115749p:plain
どうも、プログラミングの鬼シヨツ鬼です。

この記事では「Pythonで仮想通貨を自動売買できたらカッコいいんじゃないか」そう思った僕が、bitbank APIを使って仮想通貨自動売買装置を作ったときの経験をもとに、このAPIの使い方を書いています。

きっとこの記事にたどり着いたあなたも同じ感性の持ち主のはず。
一緒にかっこよくなりましょう

必要なもの

・bitbankアカウント(途中までは不要です)
Pythonが動くPC
・なけなしの軍資金

関連記事
【ちゃんと分かる】初心者のためのPython開発環境インストール方法(Windows) - YouTube

初めの一歩

API自体使うの初めてだぜ」って人は使い方が全く分からないと思うので、まずは簡単にAPIを体感するのがおすすめです。
プログラムではありませんが、以下のURLにアクセスしてみてください。
(bitbankのアカウント持っていないよって人でも大丈夫です)
https://public.bitbank.cc/btc_jpy/ticker

すると、下の写真のようなページなったと思います。
察しのいい人は気が付いたかもしれませんが、そう、実はこれ、あなたがURLにアクセスした瞬間のビットコインの取引値なんです!

f:id:shiyotsuki:20210306225830p:plain
ビットコインの現在の取引値が見えている

あとは、これをPythonで取得してあげれば、プログラムに落とし込んで自動売買ができるはずです。
こうやってみると、割とイメージしやすく、そんなに難しくなく感じるのではないでしょうか。

Pythonに取り込む

それでは、上で人がURLに直接アクセスしていたことをPythonでやってみましょう。
以下のようなプログラムを書いてください。

#最新取引情報をPythonで表示するサンプルプログラム

#必要なモジュールをインポート
import python_bitbankcc

# public API classのオブジェクトを取得
pub = python_bitbankcc.public()

# PUBLIC情報取得
info = pub.get_ticker('btc_jpy')

print(info)

実行すると、こんな感じにPythonで情報が取得できていることが確認できます。

f:id:shiyotsuki:20210306232643p:plain
実行した画面

自分の情報を取り込んでみる

先ほどは、現在のビットコインが取引されている情報でしたので、公開情報でした。
次は、APIキーを使って自分の資産情報を取得してみましょう。

※ここからはbitbank APIのキーを発行していることが条件です。また、自分のAPIキーを使って口座情報を扱っていくので、よく注意しながら自己責任で実施ください。最初のうちは口座に入れる資産は少なめのほうが安心です

以下のようなプログラムを書いてください。

#資産情報をPythonで表示するサンプルプログラム

#必要なモジュールをインポート
import python_bitbankcc

#プライベートキー設定==================================
# APIキー設定
API_KEY = "自分のAPIキーを入れる"
API_SECRET = "自分のAPIシークレットキーを入れる"

prv = python_bitbankcc.private(API_KEY, API_SECRET)
#=================================================

#初期状態取得========================================
# 資産情報を取ってくる(asset)
value = prv.get_asset()

# 資産情報を表示する
print(value)
#=================================================

実行すると、こんな感じにPythonで情報が取得できていることが確認できます。
一瞬文字ばっかりで抵抗感があるかもしれませんが、よく見てみれば意味は分かるはずです。例えば、下の図を見てください。jpyとなっているところは現金の情報ですが、100.0064円の資産を保有していることが分かります。

f:id:shiyotsuki:20210307001124p:plain
自分の資産情報が取れた

それぞれの意味合いは下記の通りです。

Name Type Description
asset string アセット名: jpy,btc, xrp, ltc, eth, mona, bcc, xlm, qtum
free_amount string 利用可能な量
amount_precision number 精度
onhand_amount string 保有
locked_amount string ロックされている量
withdrawal_fee string or { under: string, over: string, threshold:string } for jpy 引き出し手数料
stop_deposit boolean 入金ステータス
stop_withdrawal boolean 出金ステータス
( bitbank API 公式ドキュメントより)

プログラムで買ってみる

bitbank APIを使えば、自動で売買の注文を出すことも可能です。
2021年3月現在、クアンタム(QTUM)という仮想通貨はキャンペーンで取引手数料がかからないので、試しに1クアンタムを10円の指値買い注文したいと思います。

以下のようなプログラムを書いてください。

#Pythonで10円/クアンタムの指値買い注文を出すサンプルプログラム

#必要なモジュールをインポート
import python_bitbankcc

#プライベートキー設定==================================
# APIキー設定
API_KEY = "自分のAPIキーを入れる"
API_SECRET = "自分のAPIシークレットキーを入れる"

prv = python_bitbankcc.private(API_KEY, API_SECRET)
#=================================================

#購入==============================================
buy_amount = 1 #1クアンタム
buy_price = 10 #10円の指値注文

# 購入処理
buy_info = prv.order("qtum_jpy",buy_price,str(buy_amount),"buy","limit")

#注文状態表示
print(buy_info)
#================================================

実行結果は以下のようになります。
現在の1クアンタムの取引価格は700円ほどですので、もちろん10円の指値注文では購入することはできませんが、ちゃんと注文自体はできていることが分かります。

f:id:shiyotsuki:20210307105227p:plain
10円での指値注文を実施してみた結果
f:id:shiyotsuki:20210307105519p:plain
bitbankのサイトからも注文できていることを確認できる

プログラムで売ってみる

では、次に売り注文を出してみましょう。
売り注文を出すには仮想通貨を持っていないといけないので、「買ってみる」のサンプルプログラムを修正して買うか、bitbankのサイトから手動で買っておいてください。

下の例では、クアンタムを0.0142分を成行で売却しています。

##Pythonで手持ちのクアンタムを成行で発注するサンプルプログラム

#必要なモジュールをインポート
import python_bitbankcc

#プライベートキー設定==================================
# APIキー設定
API_KEY = "自分のAPIキーを入れる"
API_SECRET = "自分のAPIシークレットキーを入れる"

prv = python_bitbankcc.private(API_KEY, API_SECRET)
#=================================================

#売却==============================================
sell_amount = 0.0142 #売却するクアンタムの量
sell_price = 9999 #今回は成行で注文するので使われない

# 購入処理
sell_info = prv.order("qtum_jpy",sell_price,str(sell_amount),"sell","market")

#注文状態表示
print(sell_info)
#=================================================

結果は下のようになります。
ちなみに、コマンドプロンプトのほうの結果を見ると、statusがUNFILLED(未約定)となっていますが、これは注文を出した瞬間のタイミングの注文結果情報が返ってきているためです。実際には微量の成行注文ですので、この直後には約定済となります。

f:id:shiyotsuki:20210307111854p:plain
売り注文を出した
f:id:shiyotsuki:20210307111944p:plain
bitbankのサイトからも売り注文できていることが確認できる

まとめ

これで、bitbank APIを使って、現在の取引値の取得、資産の状態取得、買い注文、売り注文ができるようになりました!
あとは、これらを組み合わせれば自動売買装置の完成です。
ぜひ、かっこいい自動売買装置を作ってみてください!

最後まで読んでくれてありがとう。
参考になったら「☆」を押してね。そして僕のYouTubeTwitterもよろしくね。