前回のあらすじ
前回はBitbank(ビットバンク)のパブリックAPIを使って取引所の価格(ticker)と板情報を取得しました。今回はプライベートAPIを使ってプログラムから取引所にビットコインの売買注文を出していきたいと思います。
APIの種類について
前回と同じですが、再確認のためにもう1回まずAPIとは、何ぞやというところから説明するとAPI(アプリケーションプログラミングインターフェース)とは自分のソフトウェアを一部公開して、他のソフトウェアと機能を共有できるようにしたものです。
APIとしてソフトウェアの一部をWEB上に公開することによって、誰でも外部からその機能を利用することができるようになります。それによって他のソフトウェアの機能を自分のプログラムの中に簡単に埋め込むことができるようになるので、アプリケーション同士で連携することが可能になります。
今回の場合であれば、取引所の内部の一部システムをAPIという形で公開してくれていることで、私たちユーザー側からすると口座残高や価格情報を調べたり、注文を送信するといったような処理が簡単に行うことができるようになります。
他にもLineやtwitterのAPIを利用することで自動で呟くbotを作ることができたり、今回のように取引所に注文を出したりなどなどAPIを利用すれば高度なプログラミングが簡単に行うことが可能になります。
そして、APIは「パブリックAPI」と「プライベートAPI」の2種類が存在します。パブリックAPIはサイトの価格情報など誰でも特別な権限なしに公に見ることのできるデータを取得するAPIなのに対して、プライベートAPIとは自分の口座残高や鍵垢の呟きなど見られる人が制限されている情報を取得する際に用いるAPIです。
パブリックAPIはURLを打ち込むだけで簡単に取得できますが。プライベートAPIは秘密鍵など認証のためにリクエストヘッダーを変えたりなど、http通信についての知識が少し求められるので、若干難易度が高いですが、ライブラリを使えばそのあたりを勝手に行ってくれるので心配する必要はありません。
プライベートAPIを使って仮想通貨を売買する
というわけで、プライベートAPIを使ってPythonから取引所に売買する処理を行ってみます。ビットコインの板情報や価格を取得するAPIは誰でも使えるパブリックAPIですが、取引注文を出すためには上述したプライベートAPIが必要になってきます。
パブリックAPIはURLを指定された書式で入力するだけですが、プライベートAPIの場合は個人を識別するためのプライベート鍵を取得する必要があります。
そして、プライベートAPIを使うとアカウント内の自分の口座の資産を売買したり他の取引所やウォレットに送金できてしまうので、逆に言えばこれが漏れてしまうと自分の資産を勝手に注文されたり、他の取引所やウォレットに送金される危険性があります。
プライベート鍵は言うなれば家の裏口の鍵みたいなものですので、プライベートAPIのカギは絶対に第3者に漏らさないように厳重に管理してください。
そして、「bitbank(ビットバンク)」のプライベートAPI鍵の取得は以下のような感じで取得できます。「出金」のところは万が一悪用された場合の時のことを考えて有効にしないほうがいいと思います。
また取引所へログインする際には二段階認証を有効にしておきましょう。
関連記事:【必読】仮想通貨取引所を使うに当たって絶対やっておくべき3つのこと
仮想通貨はハッカーにとってもホットな分野なので、個人でできる範囲でのセキュリティーについての対策は怠らないように注意した方がいいです。また仮想通貨を年単位でガチホするならば複数の取引所とハードウェアに分散して管理するのがオススメです。
関連記事:【徹底比較】初心者にオススメな国内の仮想通貨取引所ランキングまとめ
PythonでプライベートAPIを設定する
まずは自分のAPI鍵をPython内のオブジェクトに格納します。もしAPI鍵が〇〇〇だとすると、API_KEY= ’〇〇〇’みたいな感じで入力してください。
# API鍵を設定する
API_KEY = 'BITBANK_API_KEY'
API_SECRET = 'BITBANK_API_SECRET'
# ヘッダーの乗せるAPI鍵を設定する
prv = python_bitbankcc.private(API_KEY, API_SECRET)
プライベートAPIの設定が終わったらさっそく動かしていきましょう。まずはアカウント内の資産を確認します。
# アカウント内の資産を確認する value = prv.get_asset() print(json.dumps(value)) # APIを使って注文を出す value = prv.order( 'btc_jpy',#通貨ペア '1000000',#価格 '0.0001',#数量 'buy', # 注文サイド 'market'# 注文タイプ ) print(json.dumps(value)) # 注文をキャンセルする value = prv.cancel_order('btc_jpy', '111111111') print(json.dumps(value))
これで資産確認と売買の注文/取り消しができます。‘buy’,を’sell’にすると売り注文になります。注文のキャンセルの際の注文IDは注文を送信したときの返り値にあるので、それを引っ張るといいと思います
②と③でやる価格の取得や資産の確認・売買の注文/取り消しみたいなことは単体だと意味があまりありませんが、シストレBotを作る際においてパズルのピースみたいに必要不可欠になるので、ちゃんと動くか確認しておきましょう。
というわけで次はいよいよ今までやってきたAPIでのプログラム処理を合体させて、実際に取引所で動くBotを作ってみます。
→(続き)PythonでシストレBotを作る④~簡易的な自動取引botで実際に取引してみる
コメント