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

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

python-bitcoin-trade5

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

今回は「Python×ビットコイン自動売買」の第5回目ということで、ビットコインの全取引履歴を取得してみたいと思います。

 

前回の記事はこちら

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

 

前回の記事では、APIの扱いに慣れるために、Pythonでビットコインの最新価格を取得してみました。

今回も同じ流れで、ビットコインの全取引履歴を取得していきたいと思います。

なお今回使っていく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にアクセスすることで「最新価格」を取得できました。

つまり、今回目的としている「取引履歴」を取得するには、以前とは違うAPIにアクセスする必要があります。

 

具体的には/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② : 出力部分の変更とプログラムの実行

あとは出力結果を確認する部分ですが、取引履歴のAPIではlastというKeyを持っていない可能性があります。

こちらは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を入力すればOKです!

 

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

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'})

 

つまり、引数のparamsに「Pythonの辞書を渡してあげれば良い」ということになります。

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

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とValueが格納されている辞書ということになります。

それで、この中で見るべきは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-bitcoin-trade6
#6 Python×ビットコイン自動売買 | Coincheck APIを使って板情報を取得しよう!こんにちは、はやたす(@hayatasuuu )です。 前回の記事では、ビットコインの全取引履歴を取得しました。 前...

 

トップページはこちら

python-bitcoin-auto-trade
Python×ビットコイン自動売買 | 初心者でも理解できる入門講義『Pythonを使ったビットコインの自動売買って、どうやって実装するんだろう...。分かりやすく書かれている入門記事はないかな〜。』このような悩みを解決する記事になっています。Pythonを使ったビットコインの自動売買を学んでみたい人は必見です。...