bitflyer 2種類の realtime API (1.JSON-RPC 2.0 over WebSocket, 2.Socket.IO 2.0 (WebSocket))

JSON-RPC 2.0 over WebSocket

 

PUBLIC CHANNELS

 

板情報のスナップショット

Realtime Public Channel

 

Channel Name

lightning_board_snapshot_{product_code}

{product_code} は、マーケットの一覧で取得できるものです。alias は使用できません。

  • BTC/JPY (現物): lightning_board_snapshot_BTC_JPY
  • BTC/JPY FX: lightning_board_snapshot_FX_BTC_JPY
  • ETH/BTC: lightning_board_snapshot_ETH_BTC
  • Lightning Futures: lightning_board_snapshot_BTCJPY28JUN2019
 
配信内容

板情報のスナップショットを配信します。

  • 配信効率などの合理的理由により、配信頻度が制限されています。
  • 更新のたびに情報を取得する場合、板情報の差分を利用してください。
  • asks, bids の配列の順序は保証していないため、必要に応じてソートしてください。
{
  "mid_price": 33320,
  "bids": [
    {
      "price": 30000,
      "size": 0.1
    },
    {
      "price": 25570,
      "size": 3
    }
  ],
  "asks": [
    {
      "price": 36640,
      "size": 5
    },
    {
      "price": 36700,
      "size": 1.2
    }
  ]
}

板情報の差分

Realtime Public Channel

 

Channel Name

lightning_board_{product_code}

{product_code} は、マーケットの一覧で取得できるものです。alias は使用できません。

  • BTC/JPY (現物): lightning_board_BTC_JPY
  • BTC/JPY FX: lightning_board_FX_BTC_JPY
  • ETH/BTC: lightning_board_ETH_BTC
  • Lightning Futures: lightning_board_BTCJPY28JUN2019
 
配信内容

板情報に更新があったとき、その差分を配信します。

  • size は価格に対応する注文の合計数量です。
  • 価格に対応する注文が約定や失効等で板から消えた時、size: 0 として配信されます。
  • 板寄せ時の成行注文が約定した時、price: 0 の差分として配信されます。
{
  "mid_price": 35625,
  "bids": [
    {
      "price": 33350,
      "size": 1
    }
  ],
  "asks": []
}

 

Ticker

Realtime Public Channel

 

Channel Name

lightning_ticker_{product_code}

{product_code} は、マーケットの一覧で取得できるものです。alias は使用できません。

  • BTC/JPY (現物): lightning_ticker_BTC_JPY
  • BTC/JPY FX: lightning_ticker_FX_BTC_JPY
  • ETH/BTC: lightning_ticker_ETH_BTC
  • Lightning Futures: lightning_ticker_BTCJPY28JUN2019
 
配信内容

Ticker の内容に更新があったとき、配信されます。

  • 配信効率などの合理的理由により、配信頻度が制限されています。
  • 最新の最終取引価格を正確に取得したい場合は、約定配信を利用してください。
{
  "product_code": "BTC_JPY",
  "timestamp": "2019-04-11T05:14:12.3739915Z",
  "tick_id": 25965446,
  "best_bid": 580006,
  "best_ask": 580771,
  "best_bid_size": 2.00000013,
  "best_ask_size": 0.4,
  "total_bid_depth": 1581.64414981,
  "total_ask_depth": 1415.32079982,
  "ltp": 580790,
  "volume": 6703.96837634,
  "volume_by_product": 6703.96837634
}
  •  
  • timestamp: 時刻 (ISO 形式)
  • ltp: 最終取引価格 (Last Trade Price)
  • volume: 直近 24 時間の取引量

約定

Realtime Public Channel

 

Channel Name

lightning_executions_{product_code}

{product_code} は、マーケットの一覧で取得できるものです。alias は使用できません。

  • BTC/JPY (現物): lightning_executions_BTC_JPY
  • BTC/JPY FX: lightning_executions_FX_BTC_JPY
  • ETH/BTC: lightning_executions_ETH_BTC
  • Lightning Futures: lightning_executions_BTCJPY28JUN2019
 
配信内容

約定があったとき、配信されます。

[
  {
    "id": 39361,
    "side": "SELL",
    "price": 35100,
    "size": 0.01,
    "exec_date": "2015-07-07T10:44:33.547Z",
    "buy_child_order_acceptance_id": "JRF20150707-014356-184990",
    "sell_child_order_acceptance_id": "JRF20150707-104433-186048"
  }
]
  • side: この約定を発生させた注文 (テイカー) の売買種別です。板寄せ時に約定した場合は、空文字列となります。

PRIVATE CHANNELS

注文イベント

Realtime Private Channel

このチャンネルは購読する前に認証が必要です

 

Channel Name

child_order_events
 
配信内容

注文の内容に更新があったとき、配信されます。

Property Type Description event_typeの値
product_code String BTC_JPY, FX_BTC_JPYなど
child_order_id String 注文 ID
child_order_acceptance_id String 注文の受付 ID
event_date String イベントの発生時間
event_type String イベントの種類: ORDER,ORDER_FAILED, CANCEL,CANCEL_FAILED,EXECUTION, EXPIRE
child_order_type String 注文の種類 ORDER
expire_date String 注文の期限 ORDER,EXECUTION
reason String 注文が拒否された理由 ORDER_FAILED
exec_id Number 約定 ID EXECUTION
side String 売買種別: SELL, BUY ORDER,EXECUTION
price Number 価格 ORDER,EXECUTION
size Number 数量 ORDER,EXECUTION
commission Number 手数料 EXECUTION
sfd Number SFD 徴収額 EXECUTION
// example
[
    {
        product_code: 'BTC_JPY',
        child_order_id: 'JOR20150101-070921-038077',
        child_order_acceptance_id: 'JRF20150101-070921-194057',
        event_date: '2015-01-01T07:09:21.9301772Z',
        event_type: 'ORDER',
        child_order_type: 'LIMIT',
        side: 'SELL',
        price: 500000,
        size: 0.12,
        expire_date: '2015-01-01T07:10:21'
    }
]

 

親注文(特殊注文)イベント

Realtime Private Channel

このチャンネルは購読する前に認証が必要です

 

Channel Name

parent_order_events
 
配信内容

親注文の内容に更新があったとき、配信されます。

Property Type Description event_typeの値
product_code String BTC_JPY,FX_BTC_JPY など
parent_order_id String 親注文 ID
parent_order_acceptance_id String 親注文の受付 ID
event_date String イベントの発生時間
event_type String イベントの種類:ORDER,ORDER_FAILED,CANCEL, TRIGGER,COMPLETE, EXPIRE
parent_order_type String STOP, IFD など ORDER
reason String 親注文が拒否された理由 ORDER_FAILED
child_order_type String 子注文の種類:LIMIT, MARKET TRIGGER
parameter_index Number 何番目の子注文か TRIGGER,COMPLETE
child_order_acceptance_id String 子注文の受付 ID TRIGGER,COMPLETE
side String 売買種別: SELL, BUY TRIGGER
price Number 価格 TRIGGER
size Number 数量 TRIGGER
expire_date String 注文の期限 ORDER,TRIGGER
// example
[
    {
        product_code: 'BTC_JPY',
        parent_order_id: 'JCP20150101-035534-486653',
        parent_order_acceptance_id: 'JRF20150101-035534-188098',
        event_date: '2015-01-01T03:55:34.9730659Z',
        event_type: 'TRIGGER',
        parameter_index: 1,
        child_order_type: 'LIMIT',
        side: 'BUY',
        price: 500000,
        size: 0.12,
        expire_date: '2015-01-02T02:35:34.8199789Z',
        child_order_acceptance_id: 'JRF20150101-035534-486668'
    }
]


Socket.IO 2.0 (WebSocket)

Realtime API

Socket.IO についての詳しい情報は Socket.IO 公式サイトをご参照ください。

 

エンドポイント

https://io.lightstream.bitflyer.com

  • websocket transport のみをサポートしています。多くのクライアントにおいて、これを明示的に指定する必要があります。
  • 接続には TLS 1.2 に対応したクライアントや、場合によっては明示的な設定が必要となります。
 

メソッド

  • auth – 認証要求をします
    • io.Socket#emit("auth", { /* (Auth Params) */ }, callbackFn)
    • (Auth Params) の内容は認証ページを参照してください
    • callbackFn 関数は必ず実装してください (第1引数でエラーを確認できます)
  • subscribe – チャンネルの購読を開始します
    • io.Socket#emit("subscribe", "(Channel Name)"[, callbackFn])
  • unsubscribe – チャンネルの購読を解除します
    • io.Socket#emit("unsubscribe", "(Channel Name)"[, callbackFn])
 
イベント
  • (Channel Name) – 購読しているチャンネルのメッセージが配信されます