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();