# Windows環境セットアップ & 接続ガイド

Rithmic Bridgeシステムは、Windows上で動作する **Publisher**（データプロバイダ）と、WSL2やLinux上で動作する **Client**（データコンシューマ）で構成されています。
本ガイドでは、Windows環境でのセットアップ手順と、WSL2からの接続方法について解説します。

---

## 1. 前提条件 (Prerequisites)

- **OS**: Windows 10 または Windows 11
- **Python**: 3.11以上 ([Python.org](https://www.python.org/downloads/windows/) からインストール)
- **uv**: Pythonパッケージマネージャー ([インストールガイド](https://github.com/astral-sh/uv))
    ```powershell
    powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
    ```
- **Rithmic R|Trader Pro**: 最新版がインストールされ、ログイン可能であること。

---

## 2. R | API (.NET) の準備 (重要)

本ブリッジシステムは、RithmicのAPIライブラリ `rapiplus.dll` を使用して接続します。
**このDLLの再配布は禁止されているため、各自で公式サイトから入手する必要があります。**
**Windows環境の標準パスにこのDLLを配置することを強く推奨します。**

1.  **APIライブラリのリクエスト**:
    [https://www.rithmic.com/api-request](https://www.rithmic.com/api-request) にアクセスし、**R | API (.NET)** のダウンロードを申請してください。

2.  **ダウンロードと解凍**:
    送られてきたリンクからzipファイルをダウンロードし、解凍します。

3.  **DLLの配置**:
    解凍したフォルダ内にある `rapiplus.dll` を、以下のRithmic標準インストールフォルダのいずれかにコピーしてください（R|Trader Proインストール時に自動作成されているはずです）。

    *   `C:\Program Files (x86)\Rithmic\Rithmic Trader Pro\` (推奨)
    *   `C:\Program Files\Rithmic\Rithmic Trader Pro\`

    ※ これにより、ブリッジシステムが自動的にDLLを検出し、セキュリティ例外（ネットワークドライブからのロード禁止など）を回避できます。

---

## 3. R|Trader Pro の設定

PublisherがRithmicサーバーからデータを取得するために、R|Trader Proの **プラグインモード** を使用します。

1. **R|Trader Proを起動** し、ログイン画面を表示します。
2. **Orders** > **Settings** (または **File** > **Settings**) を開き、**Server** タブを確認します。
3. **"Allow Plugins"** (プラグイン許可) にチェックが入っていることを確認します。
4. **"Port"** 番号を確認します（デフォルトは `50000` または `56000` 付近）。
    - もし `0` になっている場合は、任意の空いているポート（例: `56000`）を設定してください。
5. **Market Data** 設定を確認し、MBOデータ（Order Book）の受信が有効になっているか確認します。
6. 設定を保存し、**ログイン** します。

> [!IMPORTANT]
> Publisherの `.env` ファイル内の `RITHMIC_PORT` は、ここで設定したポート番号と一致させる必要があります。

---

## 4. Windows Firewall の設定

WSL2や外部マシンからWindows上のPublisherに接続するには、Windows Firewallで以下のポートを許可する必要があります。

*   **5555** (TCP): データ配信用 (ZeroMQ PUB)
*   **5556** (TCP): コマンド受信用 (ZeroMQ REP / 動的サブスクリプション用)

**PowerShell (管理者権限)** で以下のコマンドを実行し、これら2つのポートの受信を許可します：

```powershell
New-NetFirewallRule -DisplayName "Rithmic Bridge ZeroMQ" -Direction Inbound -LocalPort 5555,5556 -Protocol TCP -Action Allow
```

※ セセキュリティを強化したい場合は `-RemoteAddress` オプションでWSL2のIP範囲などを指定してください。

---

## 5. Publisherのセットアップと起動 (Windows側)

プロジェクトのルートディレクトリ（`rithmic-bridge`）で作業します。

### ステップ 1: 環境設定 (`.env`)

初回起動時に `.env.example` が `.env` にコピーされますが、手動で作成・編集することを推奨します。

1. `.env.example` をコピーして `.env` を作成。
2. 以下の項目を編集：
   ```ini
   RITHMIC_USER=your_username
   RITHMIC_PASSWORD=your_password
   RITHMIC_Server=Rithmic Paper Trading  # または実環境サーバー名
   RITHMIC_PORT=56000                    # R|Trader Proで設定したポート
   ZMQ_PUB_PORT=5555                     # Client接続用ポート
   ```

### ステップ 2: 起動

付属のバッチファイル `run_publisher.bat` をダブルクリックするか、コマンドプロンプトで実行します。

```cmd
run_publisher.bat
```

成功すると、以下のようなログが表示されます：

```text
[INFO] rithmic_bridge.publisher.rapi - R|API+ DLL loaded successfully
[INFO] rithmic_bridge.publisher.server - ZeroMQ PUB Server started at tcp://*:5555
[INFO] rithmic_bridge.publisher.rapi - Connected to Rithmic Plugin at 127.0.0.1:56000
```

---

## 6. WSL2からの接続確認

WSL2側からWindows上のPublisherに接続するには、WindowsホストのIPアドレスを知る必要があります。

### ステップ 1: WindowsホストIPの確認 (WSL2側)

WSL2ターミナルで以下のコマンドを実行し、`nameserver` のIPアドレスを確認します。これが通常、WindowsホストのIPです。

```bash
cat /etc/resolv.conf | grep nameserver
# 出力例: nameserver 172.25.160.1
```

または：

```bash
ip route | grep default | awk '{print $3}'
```

### ステップ 2: 疎通確認

`ping` で疎通を確認します（Windows FirewallでICMPが許可されている必要があります）。

```bash
ping <Windows_IP>
```

### ステップ 3: Client起動 (WSL2側)

Clientを起動し、Windows側のIPアドレスを指定して接続します。

```bash
# 依存関係インストール
uv sync

# Client起動 (IPは実際のWindows IPに置き換え)
uv run rithmic-bridge-client --host <Windows_IP> --port 5555
```

成功すると、データの受信ログやダッシュボードが表示されます。

---

## 7. トラブルシューティング

### Q: "Connection refused" エラーが出る
- **原因**: IPアドレスが間違っているか、Windows Firewallでポート5555が許可されていません。
- **対処**: `Step 3` のFirewall設定を再確認し、IPアドレスが正しいか `ipconfig` (Windows側) 等でも確認してください。

### Q: R|API+ DLLが見つからない
- **原因**: R|Trader Proのインストール先が標準と異なる可能性があります。
- **対処**: `src/rithmic_bridge/publisher/rapi_bridge.py` 内のDLLパス探索ロジックを確認するか、環境変数でパスを指定できるようにコードを修正する必要があります（現状は探索ロジック実装済み）。

### Q: MBOデータが来ない
- **原因**: 契約プランでMBOデータ（Level 2/Market By Order）が無効になっている可能性があります。
- **対処**: Rithmicまたはブローカーにデータ権限を確認してください。

