Skip to main content

PrivateStreamClient

認証済みユーザー向けのプライベートストリームクライアントです。PubNub を使用してリアルタイムの資産・注文・取引・入出金・証拠金イベントを受信します。

RestClient のインスタンスが必要です。

インスタンス生成

import { RestClient, PrivateStreamClient } from '@pokooo/bb-api';

const restClient = new RestClient({
key: process.env.BITBANK_API_KEY!,
secret: process.env.BITBANK_API_SECRET!,
});

const stream = new PrivateStreamClient({ restClient });

接続

connect() は非同期です。内部で restClient.getPrivateStreamSubscribeInfo() を呼び出し、PubNub のチャンネルとトークンを取得してから接続します。

await stream.connect();

基本的な使い方

import { RestClient, PrivateStreamClient } from '@pokooo/bb-api';

const restClient = new RestClient({
key: process.env.BITBANK_API_KEY!,
secret: process.env.BITBANK_API_SECRET!,
});

const stream = new PrivateStreamClient({ restClient });

stream.on('connect', () => console.log('connected'));
stream.on('disconnect', (reason) => console.log('disconnected', reason));
stream.on('error', (error) => console.error('error', error));

stream.on('asset_update', (params) => console.log('asset_update', params));
stream.on('spot_order', (params) => console.log('spot_order', params));
stream.on('spot_trade', (params) => console.log('spot_trade', params));

await stream.connect();

// 切断
// stream.disconnect();

イベント

connect

PubNub 接続が確立されたときに発火します。

stream.on('connect', () => {
console.log('プライベートストリーム接続完了');
});

disconnect

接続が切断されたときに発火します。

stream.on('disconnect', (reason: string) => {
console.log('切断理由:', reason);
});

error

再接続が失敗した場合などに発火します。

stream.on('error', (error: Error) => {
console.error(error);
});

asset_update

資産残高が更新されたときに発火します。

stream.on('asset_update', (params: AssetUpdateParams[]) => {
params.forEach(asset => {
console.log(asset.asset, asset.free_amount, asset.locked_amount);
});
});

spot_order

現物注文が更新されたときに発火します(発注・約定・キャンセルなど)。

stream.on('spot_order', (params: SpotOrderParams[]) => {
params.forEach(order => {
console.log(order.order_id, order.status, order.executed_amount);
});
});

spot_order_new

新規注文が発注されたときに発火します。

stream.on('spot_order_new', (params: SpotOrderParams[]) => {
params.forEach(order => {
console.log('新規注文:', order.order_id, order.pair, order.side, order.type);
});
});

spot_order_invalidation

注文が無効化されたときに発火します。

stream.on('spot_order_invalidation', (params: SpotOrderInvalidationParams) => {
console.log('注文無効化:', params);
});

spot_trade

現物取引が成立したときに発火します。

stream.on('spot_trade', (params: SpotTradeParams[]) => {
params.forEach(trade => {
console.log(trade.pair, trade.side, trade.amount, trade.price);
});
});

dealer_order_new

ディーラー注文が発注されたときに発火します。

stream.on('dealer_order_new', (params: DealerOrderNewParams[]) => {
console.log(params);
});

withdrawal

出金ステータスが更新されたときに発火します。

stream.on('withdrawal', (params: WithdrawalParams[]) => {
params.forEach(w => {
console.log(w.uuid, w.status, w.amount, w.asset);
});
});

WITHDRAWAL_STATUS 定数:

定数説明
WITHDRAWAL_STATUS.CONFIRMING'CONFIRMING'確認中
WITHDRAWAL_STATUS.EXAMINING'EXAMINING'審査中
WITHDRAWAL_STATUS.SENDING'SENDING'送金中
WITHDRAWAL_STATUS.DONE'DONE'完了
WITHDRAWAL_STATUS.REJECTED'REJECTED'却下
WITHDRAWAL_STATUS.CANCELED'CANCELED'キャンセル
WITHDRAWAL_STATUS.CONFIRM_TIMEOUT'CONFIRM_TIMEOUT'確認タイムアウト

deposit

入金ステータスが更新されたときに発火します。

stream.on('deposit', (params: DepositParams[]) => {
params.forEach(d => {
console.log(d.uuid, d.status, d.amount, d.asset);
});
});

DEPOSIT_STATUS 定数:

定数説明
DEPOSIT_STATUS.FOUND'FOUND'検知
DEPOSIT_STATUS.CONFIRMED'CONFIRMED'ブロックチェーン確認済み
DEPOSIT_STATUS.DONE'DONE'入金完了

margin_position_update

証拠金ポジションが更新されたときに発火します。

stream.on('margin_position_update', (params: MarginPositionUpdateParams[]) => {
console.log(params);
});

margin_payable_update

証拠金支払い可能額が更新されたときに発火します。

stream.on('margin_payable_update', (params: MarginPayableUpdateParams[]) => {
console.log(params);
});

margin_notice_update

証拠金通知が更新されたときに発火します。

stream.on('margin_notice_update', (params: MarginNoticeUpdateParams[]) => {
console.log(params);
});

自動再接続

PrivateStreamClient はネットワークエラーやアクセス拒否(トークン期限切れ)時に自動で再接続します。再接続時は restClient を使って新しいトークンを取得し直します。

切断

stream.disconnect();