#5 Python×ビットコイン自動売買 | Coincheck APIを使って全取引履歴を取得しよう!

  • URLをコピーしました!

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

第5回目の本記事では、ビットコインの全取引履歴を取得したいと思います。

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

今回使うAPIもCoincheckの口座を持っている必要はありません。

このまま今回の内容に進みましょう。

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

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

目次

Coincheck APIを使って全取引履歴を取得しよう!

今回は前に書いた以下のコードを編集してプログラムを作成します。

import requests

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

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

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

STEP① : URLの変更

各APIで取得できるデータは基本的に1種類です。

前回ビットコインの最新価格を取得したときは、/api/tickerにアクセスしました。

では「取引履歴」を取得するにはどうすれば良いのかというと、/api/tradesにアクセスする必要があります。

というわけで、以前作成したコードを以下のように書き換えましょう。

import requests

BASE_URL = 'https://coincheck.com'
url = BASE_URL + '/api/trades' # 変更点

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

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

STEP② : 出力部分の変更とプログラムの実行

取引履歴のリクエスト結果はlastというKeyを持っていない可能性があります。

そこでprint()での出力は、変数rに変更しておきましょう。

import requests

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

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

print(r)

これでプログラムを実行してみます。ターミナルでpython main.pyを入力してエンターキーをおしましょう。

そうすると以下のような画面になると思います。

python-bitcoin-trade1

出力部分だけ取り出したのが以下です。

{'success': False, 'error': 'invalid pair'}

どうやらエラーになってしまったようです。

ああ、エラーになってしまったよ…」と凹む前に、まずはエラー文を読んでみましょう。

出力を読み解くと「”pair”が無効だ」と言われています。

ということは、URLを変更しただけでは取引履歴は取得できなくて、”pair”を指定する必要があるんですね。

仮想通貨で”pair”と聞けば想像できるかもしれませんが、これは通貨ペアのことを言っています。たとえば”BTC/JPY”や”XRP/JPY”のことですね。

STEP③ : 通貨ペアの指定

というわけで、通貨ペアを指定してAPIにアクセスしましょう。

「どのように通貨ペアを指定すれば良いのか」ですが、それは公式ドキュメントを確認すると”PARAMETERS”の位置だと分かります。

python-bitcoin-trade2

Pythonでパラメータを指定してURLにアクセスするには、requests.get()で引数として辞書を渡してあげます。

つまり書くべきコードは以下になります。

# 元のコード
# r = requests.get(url)

# 新しいコード
r = requests.get(url, params={'pair': 'btc_jpy'})

コードを少し見やすくしたいので、引数で渡す辞書は別で定義しておきましょう。

from pprint import pprint

import requests

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

params = {
    'pair': 'btc_jpy'
}

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

print(r)


辞書を別で定義したほうが、分かりやすいですね。

STEP④ : ファイル実行

というわけで、プログラムの作成が完了したので、main.pyを実行していきましょう。

プログラムの実行が完了すると、以下のような出力になるはずです。

python-bitcoin-trade3

非常に見辛いですね…(^_^;)

こんなときは、やはりpprint()を使ってキレイに出力してあげます。

出力結果が長くなっているので、以下では中略した状態を載せておきます。

{'data': [{'amount': '0.01',
           'created_at': '2021-02-09T23:50:24.000Z',
           'id': 170416578,
           'order_type': 'buy',
           'pair': 'btc_jpy',
           'rate': 4875003},
          {'amount': '0.0285',
           'created_at': '2021-02-09T23:50:23.000Z',
           'id': 170416577,
           'order_type': 'sell',
           'pair': 'btc_jpy',
           'rate': 4875003}],
 'pagination': {'ending_before': None,
                'limit': 10,
                'order': 'desc',
                'starting_after': None},
 'success': True}

だいぶ見やすい形になりましたね。この出力の骨子は以下のようになっています。

{'data': [],
 'pagination': {'Key': 'Value'},
 'success': True}

ここまでシンプルにすると、3つのKeyを持つ辞書であることが分かります。

この辞書で見るべきはdataの中身です。この中に全取引履歴が格納されています。

[{'amount': '0.01',
  'created_at': '2021-02-09T23:50:24.000Z',
  'id': 170416578,
  'order_type': 'buy',
  'pair': 'btc_jpy',
  'rate': 4875003},
 {'amount': '0.0285',
  'created_at': '2021-02-09T23:50:23.000Z',
  'id': 170416577,
  'order_type': 'sell',
  'pair': 'btc_jpy',
  'rate': 4875003}]

created_atを見ると分かりますが、最新のデータが0番目に格納されています。次に新しいものが1番目に入っていますね。

取得結果の解釈方法ですが、たとえば0番目の取引なら「ビットコインが4,875,003円のとき、0.01BTC購入した」という意味になります。

つまり日本円にして、48750.03円(=4,875,003円 × 0.01BTC)です。約48,750円分のビットコインを買った人がいるんですね。

まとめ : Coincheck APIを使って全取引履歴を取得しよう!

というわけで、ビットコインの全取引履歴を取得できるようになりました。

以前に使用したAPIだと、直近の1つ取引データを取得できませんでした。でも今回の記事で紹介したAPIであれば、複数の取引履歴を取得できます。

またrequests.get()の新しい使い方も分かったので、少しレベルアップできたはずです。

次の記事ではビットコインの板情報を取得したいと思います。次回の内容まで学習すると「APIの操作に慣れる」という基礎学習の範囲は十分だと思います。

もし難しく感じる部分があったら、ぜひ復習しながら取り組んでいきましょう。

あわせて読みたい
#6 Python×ビットコイン自動売買 | Coincheck APIを使って板情報を取得しよう! こんにちは、はやたす(@hayatasuuu )です。 第6回目の本記事では、ビットコインの板情報を取得していきたいと思います。 前回の記事 : #5 Python×ビットコイン自動売買 ...
よかったらシェアしてね!
  • URLをコピーしました!
目次
閉じる