Contents
前回までのあらすじ
前回は自動取引botを作るために必要なモノ、自動取引を取り巻く状況などについてまとめました↓
それでは前回の続きということで、「ビットバンク(bitbank)」で動くpythonを使った自動取引botの作成に入りたいと思います。
自動売買というと株式や為替などを思い浮かべると思いますが実際のところ株式やFXで自動取引をするのは結構手間とお金がかかります。
ですが、仮想通貨の場合だと取引所がAPIを設けてくれているため開発が簡単であるのと、最低取引額が小さい(100円からでも可能)、という点からBotによる取引が株や為替よりも簡単に行うことができます。
仮想通貨・ブロックチェーン自体も革命的なテクノロジーですが、そういった点からもビットコインを始めとした仮想通貨取引はBot取引を行うのにオススメです。
ビットコイン(Bitcoin)とは?
ビットコインは2009年に誕生した始めての仮想通貨です。ビットコインの大きな特徴としてはブロックチェーンという技術を使っているという点です。これによってデータの改ざんを困難し、低コストで高いセキュリティー性を生み出すことに成功しました。
このビットコインに使われているブロックチェーン技術は銀行やサーバーなどなど既存の様々な社会インフラに幅広く応用することができるため現在世界中で注目されています。ビットコインの大きな特徴としては管理者がおらず分散自立型のシステムであるという点です。
これは現在の中央集権型のシステムへの挑戦と移行の可能性を模索する取り組みでもあり、世界中でビットコインが注目されている大きな理由の1つです。詳しく話すととても長くなるので興味が沸いた方は下の記事を読んでください。
APIとは何か?
さて本題に入りますが、今日はPythonを使って取引所からビットコインの価格を取得してみます。これには仮想通貨取引所のAPI機能を使います。(APIとは何ぞやという方は↓の記事で説明しているのでどうぞ)
API(アプリケーションプログラミングインターフェース)は自分のソフトウェアの内部処理を一部公開して、他のソフトウェアと機能を共有できるようにしたもので、ソフトウェアの一部をWEB上にAPIとして公開することで誰でも外部からその機能を利用することができるようになります。
それによって、他のソフトウェアの機能を自分のプログラムの中に簡単に埋め込むことができるようになるので、アプリケーション同士で連携することが可能になるのです。
今回の場合であれば、取引所の内部の一部システムをAPIという形で公開してくれていることで、私たちユーザー側からすると口座残高や価格情報を調べたり、注文を送信するといったような処理が簡単に行うことができるようになります。
他にもLineやtwitterのAPIを利用することで自動で呟くbotを作ることができたり、今回のように取引所に注文を出したりなどなどAPIを利用すれば高度なプログラミングが簡単に行うことが可能になります。
関連記事:【Python】TwitterのAPIを簡単操作できる「Tweepy」の使い方
ビットコイン/仮想通貨の価格を取得する
国内の仮想通貨取引所と言えばCMでお馴染みのビットフライヤーとZaifですが、Pythonを使ってビットコインの価格を取得したり自動で売買するプログラムを作るのであれば「GMOコイン」という仮想通貨取引所がオススメです。
「GMOコイン」のメリットとしてはアルトコインを取引所形式で購入できるため、コインチェックなどの販売所で購入するより、断然安く購入できます。またGMOグループなので一定の信頼もあります。
加えてAPIを使って自動売買を行う場合にもGMOコインは、Python用にAPIのサンプルコードがあるためコピペでプログラムが作れること・鯖落ちがほとんどないことがメリットとしてあります。
一応他の日本の取引所である「Bitflyer(ビットフライヤー)」や「Liqid(リキッド)」にも同じようなAPI機能は用意されているのですが、僕はこの2つの取引所を利用していて鯖落ちで大損してえらい目にあったので、トラウマからあんまり使っていません。
GMOコインからビットコイン(仮想通貨)の価格を取得する
# GMOコインのビットコイン価格を取得する import requests import json endPoint = 'https://api.coin.z.com/public' path = '/v1/ticker?symbol=BTC' response = requests.get(endPoint + path) print(json.dumps(response.json(), indent=2)) print('現在のビットコイン価格は',response.json()['data'][0]['last'],'円です')
<実行結果>
{ "status": 0, "data": [ { "ask": "6288400", "bid": "6288399", "high": "6399189", "last": "6288400", "low": "6202105", "symbol": "BTC", "timestamp": "2021-05-01T10:11:10.857Z", "volume": "449.8616" } ], "responsetime": "2021-05-01T10:11:11.817Z" }
これで取引所のビットコインの価格情報を取得できます。また要求する通貨ペアを変更したい場合はpath = '/v1/ticker?symbol=BTC'
のsymbol=BTCの部分をETHやXRPに変えることで他のアルトコインの価格情報も取得可能です。
# イーサリアムの現在価格を取得する import requests import json endPoint = 'https://api.coin.z.com/public' path = '/v1/ticker?symbol=ETH' response = requests.get(endPoint + path) print(json.dumps(response.json(), indent=2))
ただ取引所の提供しているAPIだと直前の価格情報(ticker)しか取得できず、まとまった期間の価格データは取得することができません。なので、前の記事で書いたように、テクニカル指標の計算のためなどに。まとまった価格データが欲しい場合はSQLかなんかに継続的に保管するプログラムをレンタルサーバーかなんかにおいて常時作動させるか、価格情報サイトから取得してくる必要があります。
関連記事:【Python】CoinGeckoのAPIからビットコイン・アルトコインの価格データを取得する
まあ、ビットコインの価格データ集めに関する知見はこのような感じです。次はAPIを使って板情報を取得し取引所へと売買注文を出してみます。
ビットコインの板情報を取得する
とりあえず、価格が取得出来たら次は板情報を取得していきます。板情報とは↓の画像のようなものでこのを見れば、どの価格にどれくらいの注文が入っているのかが一目でわかります。
引用元:https://diamond.jp/articles/-/121153
# GMOコインのビットコイン板情報を取得する
import requests
import json
endPoint = 'https://api.coin.z.com/public'
path = '/v1/orderbooks?symbol=BTC'
response = requests.get(endPoint + path)
print(json.dumps(response.json(), indent=2))
※実行結果 {"asks": [["1152900", "0.0274"], ["1152997", "0.3500"], ["1152998", "0.0138"], ["1153000", "0.0235"], ["1153020", "0.0009"], ["1153035", "0.0320"], ["1153392", "0.0078"], ["1153422", "0.2408"], ["1153427", "0.0001"], ["1153476", "0.0279"], ["1153537", "0.0006"], ["1153647", "0.0033"], ["1154000", "0.2418"], ["1154072", "0.0433"], ["1154972
これで板情報が取得できました。板情報はデータが大きいためシェル画面に出力するのはあまりオススメしません。今回はテクニカル指標をシグナルとした自動売買botですが、板情報から買い圧と売り圧を比較してそれをトレードのシグナルにするという手法もあります。
次はプライベートAPIからビットコインを売買する方法と移動平均を使った自動取引Botの作り方について解説していきます。
→(続き)PythonでシストレBotを作る③~GMOコインのプライベートAPIでビットコインを売買する
コメント
[…] 参照:Pythonで自動売買Botを作る②~仮想通貨取引所からビットコインの価格を自動取得する […]
勉強させてもらってます。
gitをインストールしましたが、ライブラリーをインストールできません。
どうすれば良いでしょうかね?
コメントありがとうございます。
ライブラリはGITBASHからしかインストールできないと思います。
もし不明点などあればMENTAでご相談を承っておりますのでご連絡いただけますと幸いでございます
[…] Pythonで自動売買Botを作る②~仮想通貨取引所からビットコインの価格を取得する […]
[…] ミナピピンの研究室Pythonで自動売買Botを作る②~仮想通貨取引所からビットコイン価格を取得するhttps://tkstock.site/2018/02/27/2018-02-27-231846/ 前回までのあらすじ前回は自動取引botを作る […]