Binance(バイナンス)APIドキュメント完全ガイド
本ガイドは、Binance(バイナンス)のAPIを利用するための完全な情報を提供することを目的としています。Binance APIは、トレーディングボットの開発、ポートフォリオ管理、市場データの分析など、様々なアプリケーションを構築するための強力なツールです。本ドキュメントでは、APIの基本概念、認証方法、利用可能なエンドポイント、およびサンプルコードについて詳しく解説します。
1. APIの基本概念
Binance APIは、RESTful APIとして提供されています。RESTful APIは、HTTPメソッド(GET, POST, PUT, DELETEなど)を使用してリソースにアクセスするAPIの設計スタイルです。Binance APIでは、以下のHTTPメソッドが主に利用されます。
- GET: データの取得に使用します。
- POST: データの作成または更新に使用します。
- PUT: データの完全な更新に使用します。
- DELETE: データの削除に使用します。
APIリクエストは、JSON形式で送信および受信されます。JSONは、人間が読み書きしやすく、機械が解析しやすいデータ交換フォーマットです。
2. 認証方法
Binance APIを利用するには、APIキーとシークレットキーが必要です。APIキーは、APIリクエストを識別するために使用され、シークレットキーは、APIリクエストの署名に使用されます。APIキーとシークレットキーは、Binanceのウェブサイトでアカウントを作成し、API管理画面で生成することができます。
APIリクエストの認証には、HMAC SHA256アルゴリズムが使用されます。APIリクエストを送信する前に、シークレットキーを使用してリクエストの署名を作成し、リクエストヘッダーに署名を含める必要があります。署名の作成方法は、Binance APIドキュメントに詳しく記載されています。
2.1 APIキーの管理
APIキーとシークレットキーは、機密情報です。安全な場所に保管し、第三者に漏洩しないように注意してください。APIキーの権限を適切に設定することも重要です。例えば、取引のみを行うAPIキーを作成し、資金の引き出し権限を付与しないようにすることができます。
3. 利用可能なエンドポイント
Binance APIは、様々なエンドポイントを提供しています。以下は、主なエンドポイントの概要です。
3.1 マーケットデータ
- /api/v3/ping: サーバーの稼働状況を確認します。
- /api/v3/time: サーバーの時刻を取得します。
- /api/v3/exchangeInfo: 取引所の情報(取引ペア、手数料など)を取得します。
- /api/v3/ticker/price: 特定の取引ペアの最新価格を取得します。
- /api/v3/tickers: すべての取引ペアの最新価格を取得します。
- /api/v3/depth: 特定の取引ペアの板情報(注文板)を取得します。
- /api/v3/trades: 特定の取引ペアの取引履歴を取得します。
- /api/v3/klines: 特定の取引ペアのローソク足データ(K線)を取得します。
3.2 取引
- /api/v3/order: 注文を発注します。
- /api/v3/order/test: テスト注文を発注します。
- /api/v3/order/cancel: 注文をキャンセルします。
- /api/v3/order/cancelReplace: 注文をキャンセルし、同時に新しい注文を発注します。
- /api/v3/order/status: 注文の状態を取得します。
- /api/v3/openOrders: 開放中の注文を取得します。
- /api/v3/allOrders: すべての注文を取得します。
- /api/v3/myTrades: 自分の取引履歴を取得します。
3.3 アカウント情報
- /api/v3/account: アカウント情報を取得します。
- /api/v3/balance: アカウントの残高を取得します。
- /api/v3/depositHistory: 入金履歴を取得します。
- /api/v3/withdrawHistory: 出金履歴を取得します。
4. サンプルコード
以下は、Pythonを使用してBinance APIにアクセスするサンプルコードです。
import hmac
import hashlib
import requests
import time
# APIキーとシークレットキー
api_key = "YOUR_API_KEY"
secret_key = "YOUR_SECRET_KEY"
# APIエンドポイント
endpoint = "https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT"
# リクエストヘッダー
headers = {}
# リクエストパラメータ
params = {}
# タイムスタンプ
timestamp = int(time.time() * 1000)
# リクエストボディ
body = "symbol=BTCUSDT"
# リクエスト署名
signature = hmac.new(secret_key.encode('utf-8'), body.encode('utf-8'), hashlib.sha256).hexdigest()
# ヘッダーに署名を追加
headers['X-MBX-APIKEY'] = api_key
# APIリクエストを送信
response = requests.get(endpoint, headers=headers, params=params)
# レスポンスを解析
data = response.json()
# 最新価格を表示
print(data['price'])
このサンプルコードは、BTCUSDT取引ペアの最新価格を取得するものです。APIキーとシークレットキーを適切に設定し、必要に応じてエンドポイントとパラメータを変更することで、他のAPIエンドポイントにもアクセスすることができます。
5. エラー処理
Binance APIは、エラーが発生した場合にエラーコードとエラーメッセージを返します。エラーコードは、エラーの種類を示す数値であり、エラーメッセージは、エラーの詳細な説明です。エラーコードとエラーメッセージを適切に処理することで、アプリケーションの信頼性を向上させることができます。
主なエラーコードの例:
- -1000: 一般的なエラー。
- -1001: 不正なAPIキーまたはシークレットキー。
- -1002: 署名が無効。
- -1003: リクエストレート制限を超過。
- -1004: 注文のパラメータが無効。
6. レート制限
Binance APIには、レート制限が設けられています。レート制限は、APIリクエストの頻度を制限するものであり、APIサーバーの負荷を軽減し、サービスの安定性を維持するために導入されています。レート制限を超過すると、APIリクエストが拒否されます。
レート制限は、APIエンドポイントごとに異なります。レート制限の詳細は、Binance APIドキュメントに記載されています。レート制限を超過しないように、APIリクエストの頻度を調整するか、レート制限に対応するためのロジックを実装する必要があります。
7. 注意事項
- Binance APIを利用する前に、Binanceの利用規約をよく読んで理解してください。
- APIキーとシークレットキーは、安全な場所に保管し、第三者に漏洩しないように注意してください。
- APIリクエストの署名を正しく作成してください。
- レート制限を超過しないように、APIリクエストの頻度を調整してください。
- エラーコードとエラーメッセージを適切に処理してください。
まとめ
本ガイドでは、Binance APIの基本概念、認証方法、利用可能なエンドポイント、およびサンプルコードについて詳しく解説しました。Binance APIは、トレーディングボットの開発、ポートフォリオ管理、市場データの分析など、様々なアプリケーションを構築するための強力なツールです。本ガイドを参考に、Binance APIを活用して、独自のアプリケーションを開発してください。