スポンサーリンク

【Python×仮想通貨】ビットコイン自動売買の始め方②|APIを使って価格を取得する実践編

Python×仮想通貨取引

1. はじめに

こんにちは!
この記事では、Pythonを使って仮想通貨ビットコインの価格や取引データを自動で取得する方法を、やさしく解説していきます。

「ビットコインの価格をリアルタイムで取得できたら面白そう!」「自動売買に興味あるけど、何から始めたらいいの?」
そんなあなたにぴったりの内容です。

今回ご紹介するのは、**Coincheck(コインチェック)という国内取引所が提供しているAPI(エーピーアイ)**を使って、次の3つのデータを取得する方法です。

  • 最新のビットコイン価格(ticker)
  • 直近の取引履歴(trades)
  • 売り・買い注文の情報(板情報:order_books)

しかもこれらは**アカウント登録不要・認証なしで使える「パブリックAPI」**なので、すぐにPythonコードで試すことができます!

プログラミング初心者の方でも、コピペで動くコードを使いながら順番に解説していきますので安心してくださいね。

このシリーズでは、最終的に「ビットコインの自動売買Botを作る」ところまで目指します。
今回はその第2ステップとして、「APIでデータを取得する練習編」です!




2. Coincheck APIとは?|初心者にもわかる概要解説

まずは、「そもそもAPIってなに?CoincheckのAPIって安全に使えるの?」と疑問に思った方のために、ざっくりと仕組みを見ていきましょう。

💡 APIってなに?

APIとは、「他のサービスとやり取りするための入り口(窓口)」のようなものです。
Coincheckの場合、「ビットコインの価格を教えて!」「取引履歴を教えて!」とPythonからリクエストを送ると、Coincheckがそれに応じたデータを返してくれる…そんなイメージです。

たとえば、レストランでウェイターさんに「ハンバーグください」と注文するような感じですね。Pythonが「注文(リクエスト)」を出して、Coincheckが「料理(データ)」を返してくれるというわけです。


🏦 Coincheck APIには2種類ある

CoincheckのAPIには、大きく分けて2種類あります。

種類内容認証の有無
パブリックAPI誰でも使える基本的な情報の取得不要
プライベートAPI注文や残高確認などのアカウント操作必要

今回使うのは、上のパブリックAPIです。
アカウント登録なしで使えるので、初心者でも気軽に試せるのがうれしいポイントです。


🚧 パブリックAPIの制限と注意点

便利なAPIですが、いくつか知っておきたい注意点もあります。

  • アクセス制限(レートリミット):1秒間に何十回も連続アクセスすると、エラーになります。基本的には1〜2秒に1回までが目安です。
  • APIの安定性:まれにメンテナンス中や混雑時に取得に失敗することもあります。プログラム側でエラー処理を入れておくと安心です。
  • 商用利用の可否:データを商用に使いたい場合は、Coincheckの利用規約を事前に確認してください。

それでは、実際にビットコインの価格を取得するコードを書いていきましょう!




3. ビットコインの最新価格を取得しよう(ticker)

まず最初は、ビットコインの最新価格をPythonで取得する方法を見ていきましょう。

Coincheckが提供している「ticker API」を使うと、リアルタイムの価格情報が簡単に手に入ります!


📡 使用するAPIエンドポイント

https://coincheck.com/api/ticker

このURLにアクセスするだけで、最新の取引価格や過去24時間の最高値・最安値、取引量などを取得できます。


🛠 使用するPythonライブラリ

ここでは、Pythonの標準的なライブラリである requests を使ってHTTPリクエストを送ります。

まずはライブラリをインストールしましょう(インストール済みなら不要です)。

pip install requests

🧑‍💻 実際のPythonコード

以下が、ビットコインの最新価格を取得するコードです。

import requests

# CoincheckのティッカーAPIのURL
url = "https://coincheck.com/api/ticker"

# GETリクエストを送信
response = requests.get(url)

# JSON形式でデータを取得
data = response.json()

# 最終取引価格(last)を取得
latest_price = data["last"]

print(f"ビットコインの最新価格: {latest_price} 円")

📝 実行結果(例)

ビットコインの最新価格: 9100000 円

※価格は一例です。実行するたびにリアルタイムで変わります。


🧠 補足:取得できる情報一覧

ticker APIで取得できる主なデータは以下の通りです。

キー名説明
last最後に取引された価格
high24時間での最高取引価格
low24時間での最安取引価格
volume24時間の取引量(BTC単位)
bid現在の買い注文の最上価格
ask現在の売り注文の最安価格
timestampUNIXタイムスタンプ

👀 価格の見方と使い道

取得した last の値は、実際のCoincheckの画面に表示される「現在価格」とほぼ同じです。

このデータを使えば、

  • リアルタイム価格のグラフ描画
  • 一定の価格を下回ったときに通知
  • 自動売買の購入判断

といったこともできるようになります!




4. 取引履歴(トレード履歴)を取得する(trades)

今度は、実際に行われたビットコインの取引履歴を取得してみましょう。
「どんな価格で、どれくらいの量が、買われたり売られたりしているのか」を知ることができます。

これは、自動売買の判断材料としても、データ分析にもとっても重要な情報です!


📡 使用するAPIエンドポイント

https://coincheck.com/api/trades

ただし!このAPIには注意点があります。
そのままアクセスすると、次のようなエラーが出てしまいます:

{"success":false,"error":"Invalid pair."}

⚠️ エラー回避のポイント:「pair」を指定する

このエラーの原因は、「どの通貨ペアの履歴を見たいのか?」という情報が足りないからです。

そこで、リクエスト時に次のようなパラメータを追加します:

params = {
"pair": "btc_jpy" # ビットコインと日本円の取引履歴を取得
}

これで無事にデータを取得できます!


🧑‍💻 実際のPythonコード

import requests

url = "https://coincheck.com/api/trades"

# 通貨ペアを指定(btc_jpy)
params = {
"pair": "btc_jpy",
"limit": 10 # 最大100件まで指定可能(デフォルトは10件)
}

# APIリクエスト
response = requests.get(url, params=params)

# 結果をJSONで取得
data = response.json()

# トレードデータを表示
for i, trade in enumerate(data["data"], 1):
print(f"{i}件目: {trade['created_at']} / {trade['order_type']} / {trade['rate']}円 / {trade['amount']} BTC")

📝 実行結果(例)

1件目: 2025-06-19T03:10:45.000Z / sell / 9100000円 / 0.01 BTC  
2件目: 2025-06-19T03:09:44.000Z / buy / 9095000円 / 0.02 BTC
...(以下省略)

🔍 取得できる情報の内容

キー名内容
created_at取引日時(ISO8601形式)
order_type売買区分(buy / sell)
rate取引レート(円)
amount取引量(BTC単位)
id一意の取引ID(分析用)

🕒 時間に注意!ロンドン時間です

取得される created_at はロンドン時間(UTC)で表示されます。
日本時間に合わせたいときは、9時間を加算してください。

from datetime import datetime, timedelta

dt = datetime.strptime("2025-06-19T03:10:45.000Z", "%Y-%m-%dT%H:%M:%S.000Z")
dt_japan = dt + timedelta(hours=9)
print("日本時間:", dt_japan)

💡 こんな使い方もできる!

  • 直近の買いと売りの割合を可視化(円グラフなど)
  • 価格帯ごとの取引量を集計してヒートマップ化
  • 一定期間内の売買動向をもとに、売買シグナルの判定



5. 板情報(オーダーブック)を取得する(order_books)

最後にご紹介するのは、現在の注文状況(板情報)を取得する方法です。

これは「今この価格で売りたい人・買いたい人がどれくらいいるか?」を一覧で見ることができる、非常に重要なデータです。
自動売買では、注文を出すときのタイミング判断価格設定に使われます。


📡 使用するAPIエンドポイント

https://coincheck.com/api/order_books

このエンドポイントは、ビットコインの板情報に特化しているため、通貨ペアなどのパラメータは不要です。


🔍 板情報の構造

取得されるデータは、以下の2つに分かれています:

  • asks:売り注文(価格の安い順)
  • bids:買い注文(価格の高い順)

それぞれ、[価格, 数量]のリストとして格納されています。


🧑‍💻 実際のPythonコード

import requests

url = "https://coincheck.com/api/order_books"

# APIリクエスト
response = requests.get(url)
data = response.json()

# 売り注文(asks)と買い注文(bids)を取得
asks = data["asks"]
bids = data["bids"]

print("【売り板】上位5件(価格の安い順)")
for price, amount in asks[:5]:
print(f"価格: {price:.0f} 円 / 数量: {amount:.4f} BTC")

print("\n【買い板】上位5件(価格の高い順)")
for price, amount in bids[:5]:
print(f"価格: {price:.0f} 円 / 数量: {amount:.4f} BTC")

📝 実行結果(例)

【売り板】上位5件(価格の安い順)
価格: 9100000 円 / 数量: 0.2000 BTC
価格: 9105000 円 / 数量: 0.0500 BTC
...

【買い板】上位5件(価格の高い順)
価格: 9095000 円 / 数量: 0.1800 BTC
価格: 9090000 円 / 数量: 0.1000 BTC
...

💡 板情報からわかること

板情報を見ることで、以下のようなことが判断できます。

  • 「どこに厚い注文が入っているか?」(サポート・レジスタンスの参考に)
  • 「売りが強い?買いが強い?」(注文の偏りから市場心理を読む)
  • 「注文を出すならどの価格帯が有利か?」(自動売買の指値戦略に応用)

📊 おすすめ:グラフで可視化してみよう

板情報は、棒グラフやヒートマップで可視化すると一目で分かりやすくなります。

例えば matplotlib を使って、価格ごとの注文量を棒グラフにすれば、以下のような図が作れます:

import matplotlib.pyplot as plt

# 売り板と買い板をそれぞれ抽出
ask_prices = [x[0] for x in asks[:10]]
ask_amounts = [x[1] for x in asks[:10]]

bid_prices = [x[0] for x in bids[:10]]
bid_amounts = [x[1] for x in bids[:10]]

# グラフ描画
plt.bar(ask_prices, ask_amounts, color="red", label="Asks")
plt.bar(bid_prices, bid_amounts, color="green", label="Bids")
plt.xlabel("価格 (円)")
plt.ylabel("数量 (BTC)")
plt.title("板情報(上位10件)")
plt.legend()
plt.show()



6. まとめ|ビットコインのリアルタイムデータをPythonで活用しよう

今回は、CoincheckのパブリックAPIを使ってビットコインの情報を取得する方法をご紹介しました。

Pythonコードを少し書くだけで、次のようなリアルタイムデータを自動で取得できましたね。

  • ✅ 現在のビットコイン価格(ticker
  • ✅ 実際の売買履歴(trades
  • ✅ 板情報(買い注文/売り注文の一覧)

どれも「仮想通貨の自動売買」や「価格分析」に欠かせない基本データです。
しかも、これらはすべて認証なし・無料・誰でも使えるAPIから取得できます。

このようなAPIを活用すれば、
「一定の価格になったら通知を出す」「売買履歴から動きを予測する」「板情報から市場の傾向を探る」など、さまざまな自動化・分析が可能になります。

次回はさらに一歩進んで、Coincheckの「プライベートAPI」を使った自動売買の準備に入っていきます。
そちらでは、APIキーを使って「注文を出す」「残高を確認する」など、本格的なBot開発のスタートです!


よくある質問(Q&A)

Q
Coincheck APIの利用は無料ですか?
A

はい、パブリックAPIは無料で利用できます。
認証も不要なので、誰でも手軽に試すことができます。ただし、商用利用や大量アクセスには制限や規約があるため、必要に応じてCoincheckの利用規約を確認してください。

Q
APIにアクセスしすぎるとどうなりますか?
A

Coincheck APIには**レートリミット(アクセス制限)**があります。
例えば短時間に何十回も連続アクセスすると、一時的にブロックされたりエラーが返されたりする可能性があります。実行間隔を1秒以上あけるようにしましょう。

Q
取得した時刻が日本時間と違うのはなぜですか?
A

APIから返される時刻(created_at)はUTC(協定世界時)=ロンドン時間になっています。
日本時間に合わせたい場合は、Pythonで9時間加算する処理を行いましょう(timedelta(hours=9) を使用)。

※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。

※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。

スポンサーリンク