Python×ビットコイン自動売買

#4 Python×ビットコイン自動売買 | Coincheck APIを使って最新価格を取得しよう!

python-bitcoin-trade

こんにちは、はやたす(@hayatasuuu )です。

今回は「Python×ビットコイン自動売買」の第4回目ということで、Pythonを使ってビットコインの最新価格を取得したいと思います。

前回の記事はこちら

python-bitcoin-trade
#3 Python×ビットコイン自動売買 | APIとは?初心者でも理解できるように解説!こんにちは、はやたす(@hayatasuuu )です。 今回は「Python×ビットコイン自動売買」の第3回目ということで、この講...

APIについては、前回の記事で解説しました。
今回はコードを書くところからスタートしていきます。

ビットコインの最新価格を取得するにあたり、仮想通貨取引所のCoincheckを使っていきます。

ただ、この記事で紹介するAPIは、取引口座を持っている必要がありません。誰でもAPIを利用できます。

もしビットコインの売買をしないなら口座開設は不要なので、このまま学習を進めて大丈夫です!

※もし今後、ビットコインの売買をおこなうなら、口座開設が必要になります。本人確認が遅れているようなので、早めに口座解説しておくと、滞りなく学習を進められますよ!

»公式ページ : 仮想通貨取引所・販売所の口座開設|Coincheck(コインチェック)

Coincheck APIを使って最新価格を取得しよう!

それでは、さっそくコードを書いていきましょう。
第2回目の記事で、Pythonの環境構築は完了しているかと思います。

念のために確認しておくと、以下のようになっていれば大丈夫です!

python-bitcoin-ticker1

STEP① : ライブラリのインポート

まずはライブラリのインポートから書いていきましょう。

APIに限らず「Pythonを使ってURLにアクセスしたい」と思ったら、requestsを使う必要がありました。

すでにインストール済みなので、インポートから書いていきます。

import requests

STEP② : URLの設定

次に、アクセスするURLを設定していきましょう。
CoincheckのAPIでは、以下のようなURL構造になっています。

  • ベースになるURL : https://coincheck.com
  • 各APIのURL : /api/〇〇

つまり/api/〇〇を変更するだけで、各種APIにアクセスできるということです。
そのことを踏まえて、後のためにも以下のようにURLを設定しておきましょう。

BASE_URL = 'https://coincheck.com'
url = BASE_URL + '/api/ticker'

 

文字列の結合になるので、変数urlは1つのURLになっています。
試しにprint()してみると、そのことを確認できるはずです。

python-bitcoin-ticker2

STEP③ : URLにアクセス

URLの設定が完了したので、あとはPythonを使ってアクセスしてみましょう。
そのためには、requestsライブラリを使って、以下のように書いてあげます。

r = requests.get(url)
print(r.json())

 

requests.get(url)でAPIにアクセスし、その結果を変数rに格納しています。
APIで取得したデータはJSON形式だったので、最後はr.json()としてあげることで、中身を確認できます。

STEP④ : ファイル実行

ここまで書いたことをまとめると、以下のようになります。

import requests

BASE_URL = 'https://coincheck.com'
url = BASE_URL + '/api/ticker'

r = requests.get(url)
print(r.json())

 

上記の7行で、ビットコインの最新価格を取得するコードが作成できました。

それでは、コードを実行してみましょう。
そのためには、VSCodeのターミナルでpython main.pyと入力します。

そうすると、以下のような画面になるはずです。

python-bitcoin-ticker3

出力結果だけ取り出すと、以下のようになっています。

{'last': 4824000.0, 'bid': 4824009.0, 'ask': 4824584.0, 'high': 4834998.0, 'low': 4012200.0, 'volume': 7492.29573235, 'timestamp': 1612826633}

※右にスクロールすると全体を確認できます!

これでも悪くないですが、少し見辛いかなって感じます。
そんなとき、print()で出力する代わりにpprint()を使ってあげると、体裁がキレイになります。

以下のように書き換えて、出力を見やすくしましょう。

from pprint import pprint

import requests

BASE_URL = 'https://coincheck.com'
url = BASE_URL + '/api/ticker'

r = requests.get(url)
pprint(r.json())

 

このように書けたら、Pythonファイルを実行しましょう。
そうすると、以下のような画面になるかと思います。

python-bitcoin-ticker4

改めて出力部分だけ取り出してみます。

{'ask': 4863343.0,
 'bid': 4860993.0,
 'high': 4924999.0,
 'last': 4863343.0,
 'low': 4012200.0,
 'timestamp': 1612826916,
 'volume': 7621.91106892}

 

これで見やすい形になりました。

JSON形式は{Key: Value}の形で記述されているので、「24時間での最高取引価格」を見たいときは「highに該当する4924999.0を確認すれば良い」ということになります。

実際にトレード画面を確認して、highが合っているか確認してみましょう。

python-bitcoin-ticker5

しっかり4924999.0と書かれていますね!

そのほかにも色々な情報が取得できていて、その意味は以下のとおりです。(※公式ページから引用)

  • last : 最後の取引の価格
  • bid : 現在の買い注文の最高価格
  • ask : 現在の売り注文の最安価格
  • high : 24時間での最高取引価格
  • low : 24時間での最安取引価格
  • volume : 24時間での取引量
  • timestamp : 現在の時刻

»参考記事 : 取引所APIドキュメント | 仮想通貨取引所のCoincheck(コインチェック)

なので「現在の最新価格を取得したい」と思ったら、lastを見れば良いということになります。

毎回すべての情報を出力する必要はないので、今回は最新価格だけ取得するコードに変更してから実行してみましょう。

import requests

BASE_URL = 'https://coincheck.com'
url = BASE_URL + '/api/ticker'

r = requests.get(url)
r = r.json()

print('最新価格:', r['last'])

 

これを実行すると、以下のような出力結果になるかと思います。

最新価格: 4880003.0

 

これで、今回目的としていた「ビットコインの最新価格」を取得できるようになりました!

まとめ : Coincheck APIを使って最新価格を取得しよう!

というわけで、今回はビットコインの最新価格を取得していきました。
いざAPIを使ってみると「思っていたより簡単だ」と感じていただけると思います。

次回は、コインチェックで行われた全取引履歴を取得していきます。

基本的なAPIの扱い方は、今回と変わりません。
でも、全取引履歴の取得には、少しだけコードを追加する必要があります。

今は簡単ですが、少しずつ内容が難しくなっていくので、ぜひ復習しながら学習を進めていきましょう!

第5回目の記事はこちら

python-bitcoin-trade5
#5 Python×ビットコイン自動売買 | Coincheck APIを使って全取引履歴を取得しよう!こんにちは、はやたす(@hayatasuuu )です。 今回は「Python×ビットコイン自動売買」の第5回目ということで、ビット...

トップページはこちら

python-bitcoin-auto-trade
Python×ビットコイン自動売買 | 初心者でも理解できる入門講義『Pythonを使ったビットコインの自動売買って、どうやって実装するんだろう...。分かりやすく書かれている入門記事はないかな〜。』このような悩みを解決する記事になっています。Pythonを使ったビットコインの自動売買を学んでみたい人は必見です。...
ABOUT ME
はやたす
たくさんPythonを紹介するYouTuberです(登録者1.94万人) | フリーランスで機械学習/分析案件も請けています(経験業界 : 金融, 情報通信, サービス) | 元プログラミングスクール講師