# Rithmic Bridge Client Library API

`rithmic_bridge.client.library` モジュールは、Rithmic Bridge サーバー（Publisher）と通信するための高レベル Python API を提供します。

## インストール

本リポジトリを `pip` でインストールすることで利用可能です。

```bash
pip install .
```

## 基本的な使い方

```python
from rithmic_bridge.client.library import RithmicClient
import time

# クライアントの初期化 (接続先を指定)
client = RithmicClient(host="192.168.100.31", port=5555)

# データ受信時のコールバック
def on_mbo_data(event):
    print(f"[MBO] {event.symbol} {event.price} @ {event.size} ({event.action})")

def on_trade_data(event):
    print(f"[TRADE] {event.symbol} {event.price} @ {event.size} ({event.aggressor_side})")

# コールバックの登録
client.on_mbo(on_mbo_data)
client.on_trade(on_trade_data)

# 接続開始
client.connect()

# 銘柄の動的購読 (サーバー再起動不要)
success = client.subscribe("GCJ6", "COMEX")
if success:
    print("購読成功！")

# メインループ (Ctrl+C で終了)
try:
    while True:
        time.sleep(1)
except KeyboardInterrupt:
    pass
finally:
    client.disconnect()
```

## API リファレンス

### `RithmicClient(host="localhost", port=5555, req_port=5556)`

クライアントインスタンスを生成します。

*   `host`: Bridgeサーバー（Windows）のIPアドレス。
*   `port`: データ受信用ポート (ZeroMQ SUB)。デフォルト 5555。
*   `req_port`: コマンド送信用ポート (ZeroMQ REQ)。デフォルト 5556。

### `connect()`

サーバーに接続し、データ受信を開始します。コマンドチャネルも同時に確立されます。

### `disconnect()`

接続を切断し、リソースを解放します。

### `subscribe(symbol, exchange) -> bool`

サーバーに対して動的な銘柄購読をリクエストします。

*   `symbol`: シンボル名（例: "ESM6", "GCJ6"）
*   `exchange`: 取引所コード（例: "CME", "COMEX"）
*   **戻り値**: 成功時は `True`、失敗時は `False`。

### `list_subscriptions() -> List[str]`

現在サーバーが購読している全銘柄のリストを取得します。

### `on_mbo(callback)`

MBO（板情報）イベント受信時のコールバック関数を登録します。

*   `callback`: `MBOEvent` オブジェクトを引数に取る関数。

### `on_trade(callback)`

Trade（約定）イベント受信時のコールバック関数を登録します。

*   `callback`: `TradeEvent` オブジェクトを引数に取る関数。
