- Python製の自作ビットコイン自動売買botで儲ける。国内仮想通貨取引所APIを全網羅して、メリット・デメリットを徹底比較!
- 最初に結論。仮想通貨の自動売買botを作るなら「bitFlyer」か「GMOコイン」がオススメ。
- 仮想通貨取引所APIの基本。自動売買bot作りで最低限知っておくべき仕組み。
- bitFlyer Lightning(Crypto CFD):APIも便利で使いやすく、流動性も十分。最初に自動売買に着手すべき取引所。
- GMOコイン:IP制限・WebSocket・ローソク足APIまで揃う、API機能の充実度は国内トップクラス。
- bitbank:取扱銘柄の多さが魅力。信用取引(レバレッジ2倍)もAPIで発注できる。
- Coincheck:現物のみだが、日本語ドキュメントがわかりやすく、BTCなどは取引手数料無料。
- Binance Japan:世界最大手と共通のAPI仕様。現物の取扱銘柄が多く、情報も豊富。
- 楽天ウォレット(証拠金取引所):両建て・IFDOCOをAPIで使える、意外な穴場。
- OKJ:新しいAPI v5に移行。OKX系の仕様で、APIキーにIP制限も可能。
- BitTrade:販売所の注文までAPIで可能。IP未設定のキーは90日で失効する安全設計。
- Zaif:現物の取引APIは使えるが、成行注文がなく独自実装が必要。
- 海外取引所のAPIは使うべき?日本居住者は国内の登録業者を使うのが無難。
- 自動売買bot作りにおすすめのPythonライブラリ。pybottersとccxtが定番。
- 最後に。自動売買botを運用するときの注意点。APIキー管理・法規制・税金まで。
Python製の自作ビットコイン自動売買botで儲ける。国内仮想通貨取引所APIを全網羅して、メリット・デメリットを徹底比較!

仮想通貨取引所の多くは標準でAPIを公開しており、APIを活用することで簡単にビットコインの自作自動売買プログラムが作れるというのが仮想通貨投資(投機)の利点の1つです。
PythonなどでAPIをいじくり回せば、トラリピやループイフダンによる簡単な自動売買から、複雑なパターンインデックス・データ統計を用いた自動売買まで、自分の好きなトレードルールで好きなように自動売買を始めることができます。
感情任せのトレードで大損することも避けられますし、何より会社に行ったり他の事をしていても、ロボットが24時間365日全自動システムトレードでジャンジャン稼いでくれるのは有難いです^^。
ところが・・・。
仮想通貨取引所APIを実践レベルで使って比較しているようなサイト・ブログが検索してもなかなか見つけることができず、少ないネット情報を元に、独力で色々試さないと作れなかったりするのが現状です。結構、取引所毎にクセがあって苦戦するんですよねw。
しかも、仮想通貨業界は変化が激しく、取引所のサービス内容やAPI仕様がしょっちゅう変わります。
昔の記事を参考にbotを作ったら、もうその商品自体がなくなっていた・・・なんてこともザラです。
というわけで、本記事では、私が実際にビットコイン自動売買ツールをPythonで作って運用してきた経験をふまえて、APIが使える国内の仮想通貨取引所を全網羅し、各社のAPIを徹底比較したいと思います。
各取引所の公式APIドキュメントを読み込み、認証方式・レート制限・IP制限・リアルタイムAPI・手数料など、bot作りで本当に必要になる情報をまとめています。
なお、システムトレード共通の注意事項(資金・リスク管理、フェールセーフ等)は別途記事にしようと思います。あと、Pythonで作る前提で書くので、他のプログラム言語の場合は知りませんよw
最初に結論。仮想通貨の自動売買botを作るなら「bitFlyer」か「GMOコイン」がオススメ。
最初に結論だけ書いてしまいます(詳細・細かい話は後述を読んでくださいね)。
本記事は定期的に見直して最新情報にリライトしていますけど、今、自動売買プログラムを書くならば「bitFlyer」か「GMOコイン」が一番なのではないかと私は思ってます。
| 1位:bitFlyer | BTCのレバレッジ取引(bitFlyer Crypto CFD)の流動性が国内トップクラス。APIも作りやすく、IFDOCO注文や一括キャンセルなど便利機能が揃っている。弱点はIPホワイトリストがない点と、ローソク足を取るAPIがない点。 |
|---|---|
| 2位:GMOコイン | API機能の充実度は国内トップクラス。IP制限、WebSocket、ローソク足APIまで揃っていて、レバレッジ取引できる銘柄も多い。レート制限も比較的ゆるい。多銘柄botならここ。 |
| 3位:bitbank | 取扱銘柄が多く、現物の板取引が強い取引所。信用取引(レバレッジ2倍)もAPIから発注できる。アルトコインのbotを作るなら有力候補。 |
| 4位:Coincheck | 現物のみだが、APIドキュメントが日本語でわかりやすい。BTCなどは取引手数料が無料なので、現物の積立botや回転売買botを作るならアリ。 |
| 5位以下 | Binance Japan(世界標準のAPI仕様で現物の銘柄が多い)、楽天ウォレット(証拠金取引所のAPIで両建て・IFDOCOが可能)、OKJ、BitTrade、Zaifも、それぞれ特徴があり、APIでの自動売買が可能。 |
APIで自動売買ができる国内取引所をざっと一覧にすると以下のとおりです。
| 取引所 | APIで扱える取引 | レバレッジ | IP制限 | 主なレート制限 | リアルタイムAPI |
|---|---|---|---|---|---|
| bitFlyer | 現物(Lightning現物)、bitFlyer Crypto CFD | 最大2倍 | なし | 5分間で500回 | あり |
| GMOコイン | 取引所(現物・レバレッジ) | 最大2倍 | あり | 1秒間に20〜50回 | あり |
| bitbank | 現物、信用取引 | 最大2倍 | VIPのみ | 取得系10回/秒、更新系6回/秒 | あり |
| Coincheck | 取引所(現物) | なし | あり | 新規注文4回/秒 | あり |
| Binance Japan | 取引所(現物) | なし | あり | IP単位の重み制限 | あり |
| 楽天ウォレット | 証拠金取引所 | 最大2倍 | - | 前回から200ミリ秒間隔 | あり |
| OKJ | 取引所(現物) | なし | あり(最大20個) | エンドポイントごと | あり |
| BitTrade | 取引所(現物)、販売所 | なし | あり(最大20個) | - | あり |
| Zaif | 取引所(現物) | なし | - | 公開APIは10回/秒以下 | - |
※各社の公式APIドキュメントを元に作成。「-」は公式資料で明確に確認できなかったもの。仕様は変更されることがあるので、実装前に必ず公式ドキュメントを確認してください。
目的別に選ぶなら、こんな感じです。
| やりたいこと | おすすめの取引所 |
|---|---|
| BTCのレバレッジ取引でbotを動かしたい | bitFlyer(Crypto CFD)、GMOコイン |
| アルトコインのレバレッジ取引をしたい | GMOコイン、bitbank |
| 両建てやIFDOCOを使うロジックを組みたい | GMOコイン、楽天ウォレット |
| 現物の積立・回転売買botを作りたい | Coincheck、bitbank、Binance Japan |
| マーケットメイク(指値を置く)系のbotを作りたい | GMOコイン、bitbank(Maker手数料がマイナスの銘柄あり) |
| セキュリティ重視(IP制限必須) | GMOコイン、Coincheck、OKJ、BitTrade、Binance Japan |
本記事はあくまで仮想通貨の自動売買をする前提での評価です。自動売買とかでなくて、普通に仮想通貨投資したい人はコチラの記事を参考にしてください。

「自動売買したいけど、検証用の過去データがないよ・・・」って人はコチラ。

「自動売買したいけど、Pythonとかプログラム書けないよ・・・」って人はAIを活用しましょう。ただし、お金を動かすプログラムを中身がわからないまま動かすのは危険です。最低限、自分でコードを読める程度には勉強しておきましょう。
余談ですが、もうプログラミングに対する苦手意識とか払拭して、ちゃんと勉強した方がいいです。
システムトレードやビットコインに限った話ではなく、これからは自動化・人工知能の時代なので、出来るのと出来ないのじゃ、見える世界が全然違ってきますよ。
仮想通貨取引所APIの基本。自動売買bot作りで最低限知っておくべき仕組み。
各取引所の比較に入る前に、どの取引所でも共通するAPIの基本をおさらいしておきます。ここを押さえておくと、各社のドキュメントがグッと読みやすくなります。
Public APIとPrivate APIの違い
| 種類 | できること | 認証 |
|---|---|---|
| Public API | ティッカー(現在値)、板情報、約定履歴、ローソク足、取引所の稼働状況などの取得 | 不要(誰でも使える) |
| Private API | 残高・建玉の照会、新規注文、注文キャンセル、取引履歴の取得、出金など | APIキーとシークレットによる署名が必要 |
価格を取ってきて分析するだけならPublic APIだけで十分です。実際に注文を出すbotを作る場合は、取引所の会員ページでAPIキーを発行して、Private APIを使います。
認証は「HMAC署名」が基本。タイムスタンプやnonceのズレに注意
国内取引所のPrivate APIは、ほぼすべてが「APIシークレットでリクエスト内容をHMAC(主にSHA256)署名して、HTTPヘッダに付けて送る」方式です。
署名する文字列の作り方(タイムスタンプ+HTTPメソッド+パス+ボディ、など)が取引所ごとに微妙に違うので、ここで一番ハマります。また、タイムスタンプやnonce(毎回増加させる数値)を使う方式では、サーバーの時計がズレているだけで認証エラーになるので、VPSなどで動かす場合はNTPで時刻同期しておきましょう。
レート制限(API呼び出し回数の上限)を必ず守る
どの取引所も、API呼び出し回数に上限を設けています。上限を超えると一定時間ブロックされたり、制限が厳しくなったりします。価格の監視はREST APIで連打せず、WebSocketなどのリアルタイムAPIで受け取るのが鉄則です。
定期メンテナンスと障害時の挙動をプログラムに組み込む
国内取引所は定期・臨時のメンテナンスがあり、その間はAPIが使えません。メンテナンス中や障害時に変な注文を出さないよう、「取引所の稼働状況を確認してから発注する」「エラーが続いたら止まる」仕組みは必須です。
bitFlyer Lightning(Crypto CFD):APIも便利で使いやすく、流動性も十分。最初に自動売買に着手すべき取引所。
| 取引所 |
引用元:bitFlyer https://bitflyer.jp/
|
|---|---|
| 総合評価 |
API自動売買に限るならbitFlyerは一番取り組みやすいです。BTCのレバレッジ取引の流動性が高く、便利なAPIも揃っています。初心者は最初にbitFlyerで自動化を目指しましょうw。唯一の弱点はIPホワイトリストが無い点。APIの権限設定には最大級注意。 |
| APIで扱える取引 | Lightning現物(BTC/JPY、ETH/JPY、XRP/JPYなど)、bitFlyer Crypto CFD(BTC-CFD/JPY) |
| レバレッジ | 最大2倍(個人) |
| APIドキュメント | 日本語 |
| Pythonライブラリ | pybotters、ccxtなど(以前はpybitflyerが定番でした) |
| IPホワイトリスト | なし(APIキーごとに使えるAPIの権限は設定可能) |
| 認証方式 | HMAC-SHA256(ACCESS-KEY / ACCESS-TIMESTAMP / ACCESS-SIGN) |
| レート制限 | 同じIPアドレスから5分間で500回、Private APIは5分間で500回。新規注文・特殊注文・一括キャンセルは合計で5分間で300回。0.1以下の数量の注文は1分間で100回まで(超えると1時間は1分間10回に制限)。 |
| リアルタイムAPI | あり(Socket.IO、JSON-RPC 2.0 over WebSocket) |
| サーバ強度 |
画面からの注文はさておき、APIからの注文は混雑時でなければほとんど通ります。また、サーバ状態を取得できるので、それを見つつ注文を出せばほぼ100%注文に成功します。混雑時はAPIからの注文でも弾かれたり遅延したりしますので、注意しましょう。
|
| 注文方式 |
通常の指値注文・成り行き注文はもちろん、IFD・OCO・IFDOCO注文もAPIから一発でできます。また、一発で注文全キャンセルのAPIもあります。唯一の弱点は基本的にネットアウトになる点です。両建てが必要なトレードロジックの場合は対応できません。
|
| 取引手数料 | Lightning現物:約定数量×0.01〜0.15%(直近30日の取引量で変動)。Crypto CFD:売買手数料は現在無料(終了時は2週間前に告知)、建玉を持ち越すとレバレッジポイント(建玉金額×0.04%/日)が発生。 |
| その他、実装上の注意点 | Crypto CFDは8時間ごとにファンディングレートの授受があるので、収支期待値に加味する必要あり。ローソク足(OHLCV)を取るAPIはないので、約定履歴から自分で作る必要がある。 |
旧「Lightning FX」は「bitFlyer Crypto CFD」に変わった。APIは互換性ありでそのまま使える。
昔からbitFlyerでbotを動かしている人は要注意です。以前の「Lightning FX(BTC-FX)」は廃止され、現在は「bitFlyer Crypto CFD」というサービスに変わっています。
ただ、APIは互換性が保たれていて、product_codeは引き続き「FX_BTC_JPY」、マーケット一覧のmarket_typeも「FX」のままなので、昔のbotもそのまま動きます。主な違いは以下のとおりです。
| 項目 | 旧Lightning FX | 現在のbitFlyer Crypto CFD |
|---|---|---|
| 現物との価格乖離対策 | SFD(乖離5%以上で約定ごとに発生) | ファンディングレート(8時間ごとに授受) |
| 建玉を持ち越すコスト | スワップポイント | レバレッジポイント(ロールオーバー時に発生) |
| その他 | - | 乖離拡大時のサーキットブレーカー、新しいロスカットルールなどを導入 |
ファンディングレートは、CFDの価格が現物(BTC/JPY)より高ければ買い建玉の保有者が支払い、低ければ売り建玉の保有者が支払う仕組みです。乖離が大きい局面でポジションを持ち続けると、じわじわコストが積み上がります。以下のように専用のAPIで次回の授受率を取得できるので、botに組み込んでおきましょう。
import requests
res = requests.get('https://api.bitflyer.com/v1/getfundingrate',
params={'product_code': 'FX_BTC_JPY'})
fr = res.json()
print(fr['current_funding_rate']) # 次回徴収・付与予定の授受率
print(fr['next_funding_rate_settledate']) # 次回授受日時(UTC)
bitFlyer Lightningのサーバは画面からはちょっと重いが、APIなら普通に使える。サーバ状態を見てトレードすれば、なお良し。
「bitFlyer Lightningは重い」「注文が遅れる」という話もありますが、API経由なら普通に使うことができます。
さらにAPIの「gethealth」でサーバ状態を簡単に取得できるので、以下のようにサーバ状態を見ながら注文を出すようにプログラムを組めば、ほぼ100%注文を通すことができます。
healthwait = 0
health = api.gethealth(product_code="FX_BTC_JPY")
while ((health['status'] == 'STOP') or (health['status'] == 'VERY BUSY')) and (healthwait < 20):
time.sleep(10)
healthwait = healthwait + 1
health = api.gethealth(product_code="FX_BTC_JPY")
if ((health['status'] == 'STOP') or (health['status'] == 'VERY BUSY')):
print('失敗')
else:
orderid = nariyuki_sell(api, size_vol)
「gethealth」でステータスに「STOP」が返ってくると注文が通りません。「VERY BUSY」だと失敗の確率が上がります。
なので、10秒ごとにチェックして「STOP」「VERY BUSY」以外になったタイミングで注文を入れるようにしています。あまりにも「STOP」状態が長い場合は一旦中断にしてますが、何回か繰り返せばほぼ100%注文が通りますね。
画面でデイトレしている人たちはストレスもありそうですけど、API自動売買ならかなり確度の高い発注ができます(失敗時のリバランスが不要というわけではないので、注意!)。
便利なAPIが揃っているのがbitFlyerのAPIのメリット。超簡単に複雑な処理が組み込めます。
bitFlyerのAPIなら、IFDOCO注文も一発で発注できます。子注文の部分だけキャンセルすることもできます。便利!
# IFDOCO買い注文
def ifdoco_buy(api, size, rikaku, songiri):
buy = api.sendparentorder(
order_method="IFDOCO",
minute_to_expire=10000,
time_in_force="GTC",
parameters=[
{"product_code": "FX_BTC_JPY",
"condition_type": "MARKET",
"side": "BUY",
"size": size},
{"product_code": "FX_BTC_JPY",
"condition_type": "LIMIT",
"side": "SELL",
"price": rikaku,
"size": size},
{"product_code": "FX_BTC_JPY",
"condition_type": "STOP",
"side": "SELL",
"trigger_price": songiri,
"size": size}
])
return buy
注文のキャンセルも便利なAPIが用意してあります。「cancel = api.cancelallchildorders(product_code=”FX_BTC_JPY”)」で、発注している全ての注文を一括キャンセルできます。便利!
ちなみに、一括キャンセル機能がない取引所の場合は、以下のように注文IDを取りながら1件づつキャンセルする必要があります。
def cancelorder(self):
result_check = self.get_api_call('/orders').json()
for row in result_check['models']:
result = self.put_api_call('/orders/' + str(row['id']) + '/cancel').json()
return result
ただし、bitFlyerはネットアウトになるので両建ては出来ません。私はトレードロジック上、両建てをしないので特に問題ないですが、両建てしたい人はGMOコインや楽天ウォレットを検討しましょう。
APIキーのIP制限がないので、権限は最小限に。出金APIには二段階認証が必要。
bitFlyerの一番の弱点は、APIキーにIPホワイトリストを設定できないことです。APIキーとシークレットが漏れたら、どこからでも注文できてしまいます。
APIキーを作るときに、キーごとに使えるAPI(権限)を選べるので、botで使うキーは「残高照会」「注文」「キャンセル」など必要な権限だけにして、入出金の権限は絶対に付けないようにしましょう。なお、出金系のAPIは二段階認証のコードが必要な仕様になっています。
取引履歴は「お取引レポート」から年間取引報告書をダウンロードできる。
確定申告や税務調査の際に必要な取引履歴は、bitFlyerの「お取引レポート」から、日次・月次の取引報告書や年間取引報告書をPDFでダウンロードできます。Crypto CFDの損益やレバレッジポイントを含む手数料も年間取引報告書に反映されます。
bot側でも、約定履歴(getexecutions)や証拠金の変動履歴をAPIで取得してデータベースに保存しておくと、損益の検証や税金計算が楽になります。
GMOコイン:IP制限・WebSocket・ローソク足APIまで揃う、API機能の充実度は国内トップクラス。
| 総合評価 |
APIの機能・セキュリティ・レート制限のゆるさのバランスが良く、本格的なbotを作るなら最有力候補。取引所形式のレバレッジ取引ができる銘柄が多く、建玉ごとの決済指定もできるので、柔軟なロジックが組めます。 |
|---|---|
| APIで扱える取引 | 取引所(現物取引)、取引所(レバレッジ取引)、口座情報 |
| レバレッジ | 最大2倍(個人) |
| APIドキュメント | 日本語 |
| Pythonライブラリ | pybotters(アクセストークンの自動管理にも対応) |
| IPホワイトリスト | あり(会員ページでIP制限を有効にできる) |
| 認証方式 | HMAC-SHA256(API-KEY / API-TIMESTAMP / API-SIGN) |
| レート制限 | Private APIは先週の取引高に応じて、GET・POSTそれぞれ1秒間に20回(Tier 1)〜50回(Tier 3)。WebSocketの購読リクエストは同一IPから1秒間1回まで。 |
| リアルタイムAPI | あり(Public WebSocket、Private WebSocket) |
| 取引手数料 | 現物:BTC・ETH・XRP・DAIはMaker -0.01%/Taker 0.05%、その他はMaker -0.03%/Taker 0.09%。レバレッジ:BTC/JPYなど主要5銘柄は無料、その他はTaker 0.03%。建玉を朝6時をまたいで持つとレバレッジ手数料0.04%/日。API手数料は無料。 |
| その他、実装上の注意点 | 現物は「BTC」、レバレッジは「BTC_JPY」のように銘柄の指定方法が違う。Private WebSocketはアクセストークン方式で、定期メンテナンス後はトークンが失効するので再取得が必要。 |
GMOコインのAPIは「全部入り」。ローソク足APIがあるのでテクニカル系botも作りやすい
GMOコインのAPIは、Public API・Private APIに加えて、Public WebSocket・Private WebSocketまで一通り揃っています。さらにローソク足(四本値)を取得できるAPI(/public/v1/klines)があるので、移動平均やMACDなどのテクニカル指標を使うbotも、外部データに頼らず作れます。
レバレッジ取引では、建玉IDを指定して決済したり、建玉を一括決済したりするAPIもあるので、両建てを含む柔軟なポジション管理ができるのも大きなメリットです。
署名の作り方は、bitFlyerとほぼ同じで「タイムスタンプ(ミリ秒)+HTTPメソッド+パス+ボディ」をHMAC-SHA256で署名します。
import hmac, hashlib, json, time, requests
api_key = 'YOUR_API_KEY'
secret = 'YOUR_API_SECRET'
timestamp = str(int(time.time() * 1000))
method = 'POST'
path = '/v1/order'
body = {
"symbol": "BTC_JPY", # レバレッジ取引。現物なら "BTC"
"side": "BUY",
"executionType": "LIMIT",
"price": "10000000",
"size": "0.01"
}
text = timestamp + method + path + json.dumps(body)
sign = hmac.new(secret.encode('ascii'), text.encode('ascii'), hashlib.sha256).hexdigest()
headers = {"API-KEY": api_key, "API-TIMESTAMP": timestamp, "API-SIGN": sign}
res = requests.post('https://api.coin.z.com/private' + path, headers=headers, data=json.dumps(body))
print(res.json())
注意点として、署名に使うパスは「/v1」から始めて「/private」は含めません。ここを間違えると署名エラーになります。
レート制限は取引高で変わる。WebSocketのトークン管理が地味に面倒
Private APIの呼び出し上限は、先週の取引高に応じて毎週更新されます。普通の個人botならTier 1(1秒間に20回)で十分です。
地味に面倒なのがPrivate WebSocketのアクセストークン管理です。トークンは定期的に延長する必要があり、定期メンテナンス後には失効してしまいます。pybottersにはトークンの取得・延長を自動でやってくれるヘルパーがあるので、それを使うと楽です。
bitbank:取扱銘柄の多さが魅力。信用取引(レバレッジ2倍)もAPIで発注できる。
| 総合評価 |
アルトコインを含む現物の板取引が充実している取引所。信用取引の口座状況を取れるAPIも拡充され、レバレッジbotも作りやすくなりました。一般ユーザーはIPホワイトリストを使えないのが惜しい。 |
|---|---|
| APIで扱える取引 | 現物取引、信用取引(BTC/JPY、ETH/JPY、XRP/JPYなど) |
| レバレッジ | 最大2倍(個人) |
| APIドキュメント | 日本語・英語(GitHub) |
| Pythonライブラリ | pybotters、ccxtなど |
| IPホワイトリスト | VIPプログラム適用者のみ(APIキー単位) |
| 認証方式 | HMAC-SHA256(ACCESS-TIME-WINDOW方式、またはACCESS-NONCE方式) |
| レート制限 | 取得系は1秒間に10回、更新系(注文・キャンセル・出金)は1秒間に6回が基本。超えるとHTTP 429。取引高などに応じて引き上げ相談可。 |
| リアルタイムAPI | あり(Public StreamはSocket.IO、Private StreamはPubNub) |
| 取引手数料 | BTC/JPYはMaker 0%/Taker 0.1%。その他の多くのペアはMaker -0.02%/Taker 0.12%。信用取引は建玉を0時またぎで持つと金利0.04%/日。 |
| その他、実装上の注意点 | 信用取引の注文は現物と同じ注文APIで、position_side(long/short)を指定する。Private StreamがWebSocketではなくPubNubなので、実装にクセがある。 |
認証はACCESS-TIME-WINDOW方式がおすすめ。nonceの管理が不要
bitbankのPrivate APIには、nonceを毎回増やす「ACCESS-NONCE方式」と、リクエスト時刻と有効時間を指定する「ACCESS-TIME-WINDOW方式」があります。複数のプロセスから同じAPIキーを使う場合、nonceの順番が前後してエラーになりがちなので、ACCESS-TIME-WINDOW方式を使うのがおすすめです。
import hmac, hashlib, json, time, requests
api_key = 'YOUR_API_KEY'
secret = 'YOUR_API_SECRET'
request_time = str(int(time.time() * 1000))
time_window = '5000'
body = json.dumps({
"pair": "btc_jpy",
"amount": "0.001",
"price": "10000000",
"side": "buy",
"type": "limit",
"position_side": "long" # 信用取引の場合に指定
})
text = request_time + time_window + body
sign = hmac.new(secret.encode(), text.encode(), hashlib.sha256).hexdigest()
headers = {
"ACCESS-KEY": api_key,
"ACCESS-REQUEST-TIME": request_time,
"ACCESS-TIME-WINDOW": time_window,
"ACCESS-SIGNATURE": sign,
"Content-Type": "application/json"
}
res = requests.post('https://api.bitbank.cc/v1/user/spot/order', headers=headers, data=body)
print(res.json())
信用取引の保証金率や追証・強制決済の状況は「/user/margin/status」、建玉一覧は「/user/margin/positions」で取得できます。保証金率を監視して、危なくなったら自動で建玉を減らすといったリスク管理もAPIだけで完結できます。
BTC/JPYのMakerリベートは終了。マーケットメイク系botは銘柄選びに注意
bitbankは以前から「Maker手数料がマイナス(指値が約定すると手数料がもらえる)」ことで、マーケットメイク系botに人気でした。ただ、BTC/JPYはMaker 0%/Taker 0.1%に改定され、リベートはなくなりました。他の多くのペアは引き続きMaker -0.02%なので、リベート狙いのbotを作るならアルトコインのペアが対象になります。
Coincheck:現物のみだが、日本語ドキュメントがわかりやすく、BTCなどは取引手数料無料。
| 総合評価 |
レバレッジ取引はできませんが、現物の取引所APIとしてはシンプルで使いやすい。ドキュメントも日本語で読みやすく、APIキーにIP制限もかけられます。現物の積立botや、手数料無料を活かした回転売買botに向いています。 |
|---|---|
| APIで扱える取引 | 取引所(現物) |
| レバレッジ | なし |
| APIドキュメント | 日本語 |
| Pythonライブラリ | pybotters、ccxtなど |
| IPホワイトリスト | あり(APIキー作成時に許可するIPアドレスを設定可能) |
| 認証方式 | HMAC-SHA256(ACCESS-KEY / ACCESS-NONCE / ACCESS-SIGNATURE) |
| レート制限 | 新規注文は通貨ペア合計で1秒間に4回まで、注文の詳細取得は1秒間に1回まで。超えると429エラー。 |
| リアルタイムAPI | あり(Public WebSocket、Private WebSocket) |
| その他、実装上の注意点 | 成行買いは数量ではなく「使う日本円の金額(market_buy_amount)」を指定する。逆指値(stop_loss_rate)とPost Onlyに対応。 |
成行買いの指定方法がクセあり。署名は「nonce+URL+ボディ」
Coincheckの注文APIは、order_typeで「buy(指値買い)」「sell(指値売り)」「market_buy(成行買い)」「market_sell(成行売り)」を指定します。
ハマりやすいのが成行買いで、成行買いだけはBTCの数量ではなく、使う日本円の金額(market_buy_amount)を指定します。売りと買いでパラメータが違うので注意しましょう。
署名は「ACCESS-NONCE+リクエスト先URL+リクエストボディ」をHMAC-SHA256で署名します。nonceはAPIキーごとに管理されるので、複数のbotで同じキーを使い回さない方が安全です。
新規注文は秒間4回まで。高頻度botには向かない
新規注文のレート制限は「1秒間に4回まで」で、しかも通貨ペアごとではなく全体での制限です。また、注文の詳細取得は1秒間に1回までなので、約定確認をREST APIで連打するのはNG。Private WebSocketで注文・約定イベントを受け取るように作りましょう。
Binance Japan:世界最大手と共通のAPI仕様。現物の取扱銘柄が多く、情報も豊富。
| 総合評価 |
金融庁に登録済みの国内取引所で、APIの仕様はグローバル版のBinanceと共通です。世界中で使われているAPIなので、ライブラリやサンプルコードが圧倒的に豊富。ただし、国内版で使えるのは現物のみで、先物などのレバレッジ取引はできません。 |
|---|---|
| APIで扱える取引 | 取引所(現物) |
| レバレッジ | なし(国内版では先物を利用できない) |
| APIドキュメント | 英語・中国語など |
| Pythonライブラリ | pybotters、ccxt、公式SDKなど |
| IPホワイトリスト | あり(信頼できるIPからのアクセスのみに制限可能) |
| 認証方式 | HMAC-SHA256(RSA、Ed25519の鍵にも対応) |
| レート制限 | IP単位の「重み(weight)」制限。429が返ったら待機が必要で、無視し続けると2分〜3日のIP BAN(418)。注文数はアカウント単位で別途制限。 |
| リアルタイムAPI | あり(WebSocket Streams、User Data Stream) |
| 取引手数料 | 取引所(板取引)はMaker 0.1%/Taker 0.1%(BNB保有で割引あり) |
世界標準のAPIなので、ライブラリ・サンプルが豊富。初めてのbot作りにも
Binanceの現物APIは、世界中のbot開発者が使っているので、困ったときに検索すれば大抵の情報が見つかるのが強みです。ccxtやpybottersでもそのまま使え、成行注文・指値注文・逆指値・OCOなど注文の種類も豊富です。
一方で、レート制限はIP単位の重み方式で、違反を繰り返すとIP BANされる厳しめの仕様です。レスポンスヘッダの使用済み重みを見ながら、余裕を持ったリクエスト間隔にしましょう。価格データはWebSocketで受け取るのが推奨されています。
なお、日本居住者が使えるのはあくまで国内版(Binance Japan)の機能だけです。グローバル版の先物やレバレッジ取引の情報を参考にしないよう注意しましょう。
楽天ウォレット(証拠金取引所):両建て・IFDOCOをAPIで使える、意外な穴場。
| 総合評価 |
楽天ウォレットの「証拠金取引所」は、板取引形式のレバレッジ取引をAPIで自動売買できます。注文パターンにIFD・OCO・IFDOCOがあり、両建てにも対応しているので、ロジックの自由度は高め。一方でAPIの呼び出し間隔の制限が厳しく、高頻度botには向きません。 |
|---|---|
| APIで扱える取引 | 証拠金取引所(レバレッジ取引) |
| レバレッジ | 最大2倍(個人) |
| APIドキュメント | 日本語 |
| 認証方式 | HMAC-SHA256(API-KEY / NONCE / SIGNATURE) |
| レート制限 | ユーザーごとに、前回のリクエストから200ミリ秒の間隔を空ける必要あり |
| リアルタイムAPI | あり(WebSocketで板・ティッカー・歩み値。接続は最長2時間、無通信10分で切断) |
| その他、実装上の注意点 | 注文パターンはNORMAL・OCO・IFD・IFD_OCO、決済方法は両建てあり(CROSS)・両建てなし(FIFO)から選べる。APIとWeb画面の同時利用はサポート対象外。 |
IFDOCOと両建てに対応。ローソク足APIもある
楽天ウォレットの証拠金取引所APIは、Public APIで銘柄一覧・ローソク足(最大500件)・板・歩み値・ティッカーを取得でき、Private APIで注文・訂正・取消・建玉一覧・約定一覧などを操作できます。
注文時にIFD・OCO・IFDOCOを指定でき、両建てあり/なしも選べるので、bitFlyerでは組めない両建てロジックを国内で動かしたい人には選択肢になります。
ただし、「前回のリクエストから200ミリ秒空ける」制限があるので、複数のAPIを連続で呼ぶ処理は待機時間を入れて作る必要があります。WebSocketも最長2時間で切断されるので、自動再接続の仕組みは必須です。
OKJ:新しいAPI v5に移行。OKX系の仕様で、APIキーにIP制限も可能。
| 総合評価 |
OKJ(旧オーケーコイン・ジャパン)は、取引システムのアップグレードに合わせてAPIを新バージョン(v5)に移行しました。世界大手OKXと同系統の仕様で、注文の種類も豊富。旧APIで作ったbotは移行作業が必要なので注意。 |
|---|---|
| APIで扱える取引 | 取引所(現物) |
| レバレッジ | なし |
| APIドキュメント | 英語(API v5) |
| Pythonライブラリ | pybotters(認証のみ対応) |
| IPホワイトリスト | あり(1つのAPIキーに最大20個のIPアドレスを紐づけ可能) |
| 認証方式 | HMAC-SHA256をBase64エンコード(OK-ACCESS-KEY / OK-ACCESS-SIGN など) |
| レート制限 | エンドポイントごとに個別設定。Public APIはIP単位、Private APIはユーザーID単位。 |
| その他、実装上の注意点 | アップグレード済みの口座はAPI v5、未移行の口座はAPI v3を使う。移行済みの口座では、旧v3のままのbotは更新するまで動かなくなる。 |
旧API(v3)で作ったbotは要注意。移行ガイドを確認しよう
OKJは口座がアップグレードされると、旧API v3のbotが動かなくなる仕様です。暫定的に旧v3を新しいエンドポイントで動かす方法も用意されていますが、公式は早めのv5移行を推奨しています。
v5は、注文の種類(指値・成行・Post Only・FOK・IOC・利確/損切り注文など)が豊富で、未約定注文の上限(全体で4,000件、1銘柄500件)も明記されています。OKX向けの知見が流用しやすいのもメリットです。
BitTrade:販売所の注文までAPIで可能。IP未設定のキーは90日で失効する安全設計。
| 総合評価 |
BitTrade(旧Huobi Japan)は、REST APIとWebSocketを提供しており、取引所に加えて販売所の注文もAPIで行えるのが珍しい点。レバレッジ取引は未対応です。 |
|---|---|
| APIで扱える取引 | 取引所(現物)、販売所、出金申請 |
| レバレッジ | なし(APIはレバレッジ取引に未対応) |
| APIドキュメント | 日本語 |
| Pythonライブラリ | pybotters(認証のみ対応) |
| IPホワイトリスト | あり(最大20個)。IP未設定のAPIキーは有効期間90日。 |
| 認証方式 | HmacSHA256(署名バージョン2。クエリパラメータに署名を付ける方式) |
| リアルタイムAPI | あり(WebSocket) |
| その他、実装上の注意点 | APIキーは最大5組まで。権限は「読取」「取引」「出金」から選択。APIキーの発行はスマホアプリからはできない。 |
Huobi系の独特な署名方式。IP制限をかけないとキーが失効する
BitTradeの署名は、AccessKeyIdやタイムスタンプなどをクエリパラメータに含めて署名する方式で、他の国内取引所とは作り方がかなり違います。旧Huobiの仕様に近いので、そちらの実装例が参考になります。
セキュリティ面では、IPアドレスを設定していないAPIキーは有効期間が90日になる仕組みです。長期運用するbotなら、IP制限をかけておくのが前提ですね。
Zaif:現物の取引APIは使えるが、成行注文がなく独自実装が必要。
| 総合評価 |
現物の取引APIは引き続き提供されています。ただ、注文は指値のみで成行注文がないなど、他の取引所に比べてbotの実装の手間が多いです。Zaifでしか扱っていないトークンを売買したいなど、明確な目的がある人向け。 |
|---|---|
| APIで扱える取引 | 取引所(現物) |
| レバレッジ | なし |
| APIドキュメント | 日本語 |
| Pythonライブラリ | ccxtなど |
| 認証方式 | HMAC-SHA512(key / sign ヘッダ、nonce必須) |
| レート制限 | 公開APIは1秒間に10回以下が目安。同じメソッドを短時間に多く呼ぶと「time wait restriction」エラー。 |
| その他、実装上の注意点 | 注文は価格指定が必須(成行注文なし)。全部約定するとorder_idが0で返ってくるので、約定確認のロジックに注意。 |
成行注文がないので「板追随」ロジックを自作する必要がある
Zaifの取引APIは、注文時に価格の指定が必須です。そのため、すぐに約定させたい場合は「最良気配の価格で指値を出し、一定時間で約定しなければキャンセルして出し直す」といった板追随ロジックを自分で作る必要があります。
また、注文がすべて約定した場合はorder_idが「0」で返ってくる仕様なので、注文IDで約定を追いかける作りにしているとハマります。署名がHMAC-SHA512なのも他社と違うので、共通ライブラリを自作する場合は注意しましょう。
海外取引所のAPIは使うべき?日本居住者は国内の登録業者を使うのが無難。
「海外取引所ならレバレッジ100倍で、APIも高機能なのに・・・」と思う人もいるかもしれません。私も以前は海外取引所でbotを動かしていました。
ただ、今は日本居住者が海外取引所でbotを動かすのは、おすすめできません。理由は以下のとおりです。
| リスク | 内容 |
|---|---|
| 無登録業者である | 日本で暗号資産交換業の登録を受けていない海外取引所は、金融庁から繰り返し警告を受けている |
| 突然使えなくなる | 大手の海外取引所でも、日本居住者の新規登録停止や、既存ユーザーの取引停止・ポジションの強制決済に踏み切る例が出ている。botが動いていても、ある日いきなり止められる |
| アプリが消える | 金融庁から警告を受けた海外取引所のアプリは、国内のアプリストアから削除されている |
| 税金で不利 | 今後導入予定の申告分離課税(20%)の対象は国内の登録業者での取引が前提で、海外取引所やDEXでの取引は総合課税のまま |
| トラブル時に守られない | ハッキングや破綻が起きても、日本の法律による利用者保護の対象外 |
特に自動売買の場合、「botが止まる=ポジション管理ができなくなる」ので、突然のサービス制限は致命的です。レバレッジは最大2倍と物足りないかもしれませんが、国内の登録業者で地道に運用するのが一番安全です。
海外取引所のリスク・危険性は以下参照。

自動売買bot作りにおすすめのPythonライブラリ。pybottersとccxtが定番。
取引所ごとに認証方式やAPIの仕様がバラバラなので、ゼロから全部作ると大変です。今は以下のライブラリを使うのが定番です。
| ライブラリ | 特徴 | 主な対応取引所(国内) |
|---|---|---|
| pybotters | 日本の開発者が作った非同期HTTP/WebSocketクライアント。認証を自動でやってくれて、WebSocketのデータを管理するDataStore機能が便利。ドキュメントも日本語。 | bitFlyer、GMOコイン、bitbank、Coincheck、OKJ、BitTrade、Binance |
| ccxt | 世界中の取引所を共通の書き方で扱える定番ライブラリ。複数の取引所をまたぐbotに便利。ただし取引所ごとの細かい差は吸収しきれない。 | bitFlyer、bitbank、Coincheck、Zaif、Binanceなど |
| requests/aiohttp | ライブラリを使わず自分でAPIを叩く方法。仕様を理解するには一番だが、署名やエラー処理を全部自作する必要がある。 | 全取引所 |
個人的なおすすめは、国内取引所メインならpybottersです。WebSocketで板や約定、自分の注文・建玉をリアルタイムに管理できるので、本格的なbotが作りやすいです。例えば、bitFlyerの残高取得ならこれだけです。
import asyncio
import pybotters
async def main():
apis = {"bitflyer": ["BITFLYER_API_KEY", "BITFLYER_API_SECRET"]}
async with pybotters.Client(apis=apis, base_url="https://api.bitflyer.com") as client:
r = await client.fetch("GET", "/v1/me/getbalance")
print(r.data)
asyncio.run(main())
ちなみに、国内取引所には本番と別の「テスト環境」がほとんどありません。最初は最小ロットで本番に注文を出して動作確認するしかないので、1回の注文数量・1日の損失額などに上限を設けて、バグで大損しないようにしておきましょう。
最後に。自動売買botを運用するときの注意点。APIキー管理・法規制・税金まで。

最後に、APIで自動売買をするときに必ず押さえておきたい注意点をまとめます。
APIで自動売買できない国内取引所もある。SBI VCトレード・BITPOINTは要注意。
国内の大手取引所でも、APIでの自動売買に対応していないところがあります。口座を開いてから「APIがない!」とならないよう注意しましょう。
| 取引所 | APIの状況 |
|---|---|
| SBI VCトレード | 取引所(VCTRADE Pro)はあるが、売買APIは公開されていない(公式FAQでは「今後、公開を予定」) |
| BITPOINT | APIキーは家計簿アプリ(Money Forward ME)との連携専用で、売買には使えない |
どちらも普通に取引する分には良い取引所ですが、bot目的ならAPIを公開している取引所を選びましょう。今後APIが公開される可能性はあるので、その際はまた追記します。
APIキーの権限は最小限に。出金権限は絶対に付けない
APIキーとシークレットが漏れると、第三者に勝手に注文されたり、最悪の場合は資産を抜かれたりします。botには「照会」「注文」「キャンセル」だけの権限を付け、出金権限は付けないのが鉄則です。IP制限が使える取引所では必ず設定しましょう。また、キーをソースコードに直書きしてGitHubに上げてしまう事故も多いので、環境変数や設定ファイルで管理してください。
VPSで24時間稼働させるなら、監視と自動停止の仕組みを
自宅のPCより、VPS(仮想専用サーバー)で動かす方が安定します。その際は、「エラーや異常な損失が出たらLINEやメールに通知」「一定以上の損失で自動停止」といった仕組みを入れておきましょう。botは寝ている間も動き続けるので、暴走したときに止める仕組みがないと危険です。
相場操縦にあたる注文はbotでもNG。法改正にも注意
約定させるつもりのない大量の注文を出して相場を動かす「見せ玉」や、自分同士で売買する「仮装売買」などは、暗号資産でも金融商品取引法で禁止されています。botのロジックが結果的にこうした注文パターンになっていないか、注意しましょう。
また、暗号資産の規制を資金決済法から金融商品取引法へ移す法改正が成立しており、今後はインサイダー取引規制なども導入されます(施行日は政令で決定)。ルールが変わっていくので、取引所からのお知らせは必ずチェックしておきましょう。
税金は今のところ総合課税(雑所得)。取引履歴は必ず保存
現時点では、暗号資産の売買による利益は原則として雑所得で、給与などと合算する総合課税です。国内の登録業者での取引を対象に、20%の申告分離課税を導入することが決まっていますが、適用は改正法の施行日によって決まります。
botは取引回数が膨大になりがちなので、各取引所の年間取引報告書に加えて、APIで約定履歴を取得して自分でも保存しておくと、損益計算や税務調査のときに安心です。
以上!
仮想通貨取引所のAPIは、サービスの改廃や仕様変更がとにかく多いです。本記事も定期的に見直していきますが、実装する前には必ず各取引所の公式APIドキュメントとお知らせを確認してくださいね。
システムトレード関連記事
自動売買関連記事もいくつか書いておりますので読んでいただけると嬉しいです。今は取引所にAPIが用意してあり、Pythonなどで簡単に自動化できる環境が整っていますので、自動化のハードルでトレードする金融商品を選ぶのもアリかと思います。
投資・トレードも「手動でやってます」なんて、もう時代遅れです。プログラミングやIT知識を拡充して新しい時代に備えよう!






