
板情報(オーダーブック)とは?ボットで見るべき数値と使い方
※本記事にはアフィリエイト広告(プロモーション)が含まれています。
取引所の画面に並ぶ「板情報」、なんとなく眺めてはいるけれど、ボットのロジックにどう組み込めばいいのか分からない――という方は多いのではないでしょうか。この記事では、板情報(オーダーブック)の基本用語から、ボット開発で実際にどう使えるのか、そして読み方を誤ると危険な点まで、一般的な知識として整理します。
板情報(オーダーブック)とは
板情報とは、ある銘柄について「いくらでいくつ買いたいか(買い注文)」「いくらでいくつ売りたいか(売り注文)」を価格順に並べた一覧のことです。英語では order book と呼ばれ、ccxtでも fetch_order_book というメソッド名になっています。
板情報は大きく2つの列に分かれます。
- bids(買い板): 買いたい人が出している指値注文。価格が高い順に並ぶ
- asks(売り板): 売りたい人が出している指値注文。価格が低い順に並ぶ
一番上に並ぶ、もっとも約定に近い価格を「最良気配値」と呼びます。買いの最良気配値を best bid、売りの最良気配値を best ask と呼ぶこともあります。
板情報に出てくる用語
気配値(価格)と数量
板の各行は「価格」と「その価格に積まれている数量」のペアです。数量が多いほど、その価格帯にたくさんの注文が控えていることになります。
スプレッド
best ask(最良売り気配)と best bid(最良買い気配)の差を「スプレッド」と呼びます。
スプレッド = best_ask - best_bid
スプレッドが狭いほど「今すぐ売買しても価格がほとんど動かない」状態、つまり流動性が高い状態だといえます。逆にスプレッドが広い銘柄・時間帯は、成行注文を出すと想定より不利な価格で約定しやすくなります。
板の厚み(デプス)
ある価格帯にどれだけの数量が積まれているかを「厚み」「デプス」と呼びます。厚い板は「多少の注文が入っても価格が動きにくい」ことを意味し、薄い板は「少量の注文でも価格が飛びやすい」ことを意味します。
なぜボットに板情報が重要なのか
板情報は、以下のような判断にそのまま使える情報です。
1. 成行注文のスリッページ対策
成行注文は「今出ている板を上から(または下から)食っていく」形で約定します。板が薄い状態で大きめの成行注文を出すと、想定していた価格から大きくずれた価格で約定してしまうことがあります。事前に板の厚みを確認し、注文サイズが板に対して大きすぎないかをチェックするロジックを入れると、この種の失敗を減らせます。
2. 指値注文の価格決め
グリッドボットのように指値を並べる戦略では、既存の板の空いている価格帯に注文を置くか、あえて厚い価格帯の内側に置くかで約定のしやすさが変わります。板の状況を見て発注価格を微調整するのは、多くのボットで使われる基本的な工夫です。グリッドボットのレンジ設計そのものについてはグリッドトレードの実運用記事も参考になります。
3. 流動性チェックによる発注の見送り
板が極端に薄い(スプレッドが異常に広い、上下の数量が少ない)ときは、そもそも発注を見送るというロジックも有効です。流動性が低い状態での取引は、想定外の損失につながりやすいためです。この考え方は資金管理・リスク管理の記事で紹介している「退場を防ぐ仕組み」の一部としても位置づけられます。
ccxtで板情報を取得する
ccxtでは fetch_order_book メソッドで板情報を取得できます。APIキーは不要です。
import ccxt
exchange = ccxt.mexc()
book = exchange.fetch_order_book('BTC/USDT', limit=20)
best_bid = book['bids'][0][0] # 最良買い気配
best_ask = book['asks'][0][0] # 最良売り気配
spread = best_ask - best_bid
print(f'best_bid={best_bid} best_ask={best_ask} spread={spread}')
bids と asks はそれぞれ [価格, 数量] の配列がリストになった形で返ってきます。
# 買い板の上位5件分の数量合計(厚みの簡易チェック)
bid_depth = sum(amount for price, amount in book['bids'][:5])
ask_depth = sum(amount for price, amount in book['asks'][:5])
print(f'買い板の厚み={bid_depth}, 売り板の厚み={ask_depth}')
このように上位数件の数量を合計するだけでも、「今この瞬間の板がどれくらい厚いか」を簡易的に数値化できます。成行注文を出す前にこの厚みをチェックし、注文サイズが厚みに対して大きすぎる場合は分割発注する、といった制御を入れるボットも珍しくありません。
板情報以外のメソッド(価格取得・残高・発注など)を一通り確認したい場合は、ccxtの主要メソッド早見表にまとめてあります。
板情報を使う際の注意点
1. 板はスナップショットにすぎない
fetch_order_book で取得した板情報は、その瞬間の状態を切り取ったものです。取得してから実際に発注するまでのわずかな時間にも、他の参加者の注文で板は動きます。特に値動きの荒い時間帯ほど、取得直後の板を過信しない設計が重要です。
2. 見せ板・キャンセルの多さ
板に大きな数量が積まれていても、約定直前にキャンセルされることがあります。これは一般に「見せ板」と呼ばれる現象で、板の厚みだけを鵜呑みにして「この価格は絶対に守られる」と判断するのは危険です。板情報はあくまで参考情報の一つとして扱いましょう。
3. 取得頻度とレートリミット
板情報を高頻度でポーリングすると、取引所のAPIレートリミットに引っかかることがあります。特にボットが複数の銘柄を監視している場合は、必要な頻度・必要な銘柄だけに絞る設計が安全です。レートリミットまわりのエラーと対処法はccxtのエラー対処法の記事で詳しく解説しています。
4. 投資判断としての限界
板の偏り(買い板と売り板のどちらが厚いか)を値動きの予測材料として使う手法もありますが、板情報だけで将来の値動きを断定することはできません。相場の予測や投資助言をする意図はなく、あくまで発注ロジックの一部品として板情報をどう扱うか、という技術的な話としてまとめています。
MEXCなど取引所側の板情報API
多くの取引所はREST APIまたはWebSocket経由で板情報を提供しており、ccxtはそれらを共通のインターフェースで抽象化しています。取引所ごとにAPIの癖(取得できる深さの上限、更新頻度など)が異なるため、実際に使う取引所のAPIドキュメントも一度確認しておくと安心です。
本記事のコード例で使っている MEXC は、ccxt対応で板情報や約定履歴などの公開APIを無料で利用できます。MEXCでのAPI自動売買の始め方も記事にしています。
まとめ
- 板情報は「買い板(bids)」「売り板(asks)」から成り、価格順に並んだ指値注文の一覧
- best bid と best ask の差が「スプレッド」、各価格帯の数量が「厚み・デプス」
- ボットでは成行のスリッページ対策、指値の価格決め、流動性チェックによる発注見送りなどに使える
- ccxtの
fetch_order_bookで板情報を取得でき、上位数件の数量合計で簡易的な厚みチェックができる - 板はスナップショットにすぎず、見せ板の可能性もあるため過信は禁物。取得頻度もレートリミットに注意する
板情報はボットの発注ロジックを一段階洗練させるための基本情報です。まずは fetch_order_book で自分の使う取引所・銘柄の板を実際に取得し、どんな数値が返ってくるかを眺めてみることから始めてみてください。