# 取扱説明書 — Honest Confluence (JP) v0.20

> **MT4 用 hype 解毒剤インジケーターの実用ガイド**
> 「見かけの一致」 と 「実効独立数 (N_eff)」 を 1 画面で見て、 自分のコンフルエンス判断が本当に独立な情報の積み重ねなのかを確認するためのツールです。

---

## 目次

1. [このツールが「する/しない」 こと](#1-このツールがするしない-こと)
2. [インストール手順](#2-インストール手順)
3. [チャートへの設定](#3-チャートへの設定)
4. [パネルの読み方](#4-パネルの読み方)
5. [10 個の built-in 指標](#5-10-個の-built-in-指標)
6. [★ v0.20 — カスタムインジを差し込む](#6--v020--カスタムインジを差し込む)
7. [BO (バイナリーオプション) 検証パネル](#7-bo-バイナリーオプション-検証パネル)
8. [活用シナリオ集](#8-活用シナリオ集)
9. [トラブルシューティング](#9-トラブルシューティング)
10. [FAQ](#10-faq)

---

## 1. このツールが「する/しない」 こと

### ★ する

- 有効な指標 (built-in + カスタム) **K 個**の現在の方向 (Buy / Sell / 中立) をカウント → **見かけ一致** を表示
- 過去 `Lookback` バー (デフォルト 200) の全 K 個の信号系列で Pearson 相関を計算
- 相関行列から **実効独立数 N_eff = K² / Σρ²** を計算 (Cheverud 系)
- 情報比 = N_eff / K (40% 未満 = 高冗長 / 70% 以上 = 比較的独立)
- (BO ON 時) 過去 N バー (デフォルト 500) で **多数派方向に BO エントリーした場合の勝率** を計算
- 勝率 + Wilson 95% 信頼区間下限 + payout 別ブレイクイーブン勝率 + EV を表示
- N_eff が一定値以下になった時にアラート (任意)

### ★ しない

- 売買シグナルの自動発信 (チャートに矢印 / 線などを描画しません)
- 注文の発注 (このインジは indicator であり、 EA ではありません)
- 「勝率○%」 の単独強調 (必ず信頼区間 + ブレイクイーブン + EV をセット表示)
- IB / アフィリエイトの誘導
- 性能の約束・断定的表現
- 8 値論理の表示

---

## 2. インストール手順

### 必要なもの

- MetaTrader 4 (MT4) クライアント
- 取引可能なブローカー口座 (取引せず観察のみでもよい — デモ口座推奨)

### ステップ

1. **`HonestConfluence_JP.mq4`** を GitHub からダウンロード
   - https://github.com/fc0web/honest-confluence-mt4/raw/main/HonestConfluence_JP.mq4
2. MT4 で **ファイル** → **データフォルダを開く** をクリック
3. 開いたフォルダの **`MQL4/Indicators/`** に `.mq4` ファイルをコピー
4. MetaEditor を再起動 (または MT4 で **更新** → **インジケータ**)
5. MT4 のナビゲータの「インジケータ → カスタム」 に `HonestConfluence_JP` が表示されます

---

## 3. チャートへの設定

### 手順

1. **任意のチャート** (例: USDJPY M15) を開く
2. ナビゲータの `HonestConfluence_JP` を **チャートにドラッグ**
3. パラメーターダイアログが開く → **設定を確認**
4. 「OK」 をクリック → 画面左上にパネル表示

### 推奨初期設定 (v0.20)

| 項目 | 推奨値 | 理由 |
|---|---|---|
| `InpLookback` | 200 | 安定した Pearson 相関の確保に十分 |
| `InpBO_Enabled` | true | BO 検証パネルを表示 |
| `InpBO_Backtest` | 500 | サンプル数の目安 (これ未満は Wilson 下限が広い) |
| 全ての built-in 指標 | デフォルト ON | まずは標準セットを観察 |
| カスタム slots 1〜5 | 空 | 慣れてから差し込み (後述) |

---

## 4. パネルの読み方

チャート左上 (パネル位置は `InpPanelX/Y` で変更可) に縦に並ぶ情報:

```
═══ Honest Confluence v0.20 (MIT) ═══
使用中の指標: 10 個 (Lookback 200 バー)
見かけ一致: 8 / 10   [ 買 8 / 売 2 / 中立 0 ]
平均 |相関|: 0.71
★ 実効独立数 N_eff = 2.49   (情報比 25% = N_eff/K)
→ 高冗長 (一致は『1 つの意見の K-1 回エコー』に近い)

★ これは統計的事実であり勝敗予測ではありません。

─── BO 過去検証 (期限 5 バー / N=487) ───
過去勝率 (全): 53.4%   Wilson 95% 下限 49.0%
過去勝率 (買): 54.1%   下限 49.2%   (N=302)
過去勝率 (売): 52.3%   下限 45.5%   (N=185)

─ ブレイクイーブン勝率 (payout別 / 利益率) ─
 payout 78%: BE 56.2%   点 EV -8.5円/100円   下限 EV -12.4円/100円
 payout 85%: BE 54.1%   点 EV -1.4円/100円   下限 EV -5.4円/100円
 payout 90%: BE 52.6%   点 EV +3.1円/100円   下限 EV -1.0円/100円

⚠ 過去成績であり将来の予測ではありません。
⚠ ペイアウト次第で「勝率○%以下は期待値マイナス」。
⚠ N<100 は信頼区間が広く参考程度。 N>=500 で目安が安定します。
```

### 色分け

- **N_eff の情報比** (= N_eff/K):
  - 🔴 **赤**: 40% 未満 → 高冗長 (使う意味が薄い指標が多い)
  - 🟡 **黄**: 40-70% → 中冗長
  - 🟢 **緑**: 70% 以上 → 比較的独立

- **BO 期待値 (EV) の色**:
  - 🟢 **緑**: 信頼区間下限ですらブレイクイーブン勝率以上
  - 🟡 **黄**: 点推定はブレイクイーブン以上だが下限は下回る
  - 🔴 **赤**: 点推定すらブレイクイーブン未満 (≒ 期待値マイナス)

- **サンプル数の色**:
  - 🟢 緑: N ≥ 500
  - 🟡 黄: 100 ≤ N < 500
  - 🔴 赤: N < 100 (信頼区間が広い)

---

## 5. 10 個の built-in 指標

| # | 指標 | パラメーター | 解釈 |
|---|---|---|---|
| 1 | MA(Fast-Slow) 乖離 | `InpMA_Fast=5`, `InpMA_Slow=20` | Fast > Slow → 買い |
| 2 | RSI - 50 | `InpRSI_Period=14` | > 50 → 買い |
| 3 | MACD ヒストグラム | `InpMACD_Fast/Slow/Signal=12/26/9` | > 0 → 買い |
| 4 | Stoch %K - %D | `InpStoch_K/D/Slow=5/3/3` | %K > %D → 買い |
| 5 | Bollinger 中央線乖離 | `InpBB_Period=20`, `InpBB_Dev=2.0` | 終値 > 中央線 → 買い |
| 6 | ADX +DI − -DI | `InpADX_Period=14` | +DI > -DI → 買い |
| 7 | CCI | `InpCCI_Period=14` | > 0 → 買い |
| 8 | Williams %R + 50 | `InpWPR_Period=14` | > -50 → 買い |
| 9 | Momentum - 100 | `InpMom_Period=14` | > 100 → 買い |
| 10 | OsMA | (MACD と同期) | > 0 → 買い |

★ それぞれの `InpUse_*` を `false` にすると除外できます。

---

## 6. ★ v0.20 — カスタムインジを差し込む

v0.20 で追加された機能です。 #EDGE# 系の矢印インジや自作インジを slot 11〜15 に差し込めます。

### 概念

各 slot は **1 つのバッファ値** を読み、 閾値で買い/売り方向を判定します:

- `value - Threshold > 0` → 買い方向
- `value - Threshold < 0` → 売り方向
- 相関計算では `value - Threshold` の系列をそのまま使用

### パラメーター (slot 1 を例に)

| パラメーター | 既定 | 説明 |
|---|---|---|
| `InpCust1_Name` | `""` | インジ名 (空でスキップ) — 例: `"MyCustomRSI"` (MT4 の MQL4/Indicators/ 内の .ex4 のファイル名から拡張子を除いたもの) |
| `InpCust1_Buffer` | 0 | 読み込むバッファ番号 (多くは 0 = メイン) |
| `InpCust1_Threshold` | 0 | 閾値 (Buy if value > thresh) |
| `InpCust1_Shift` | 1 | バー シフト (1 = 前確定足、 0 = 現在足) |

★ スロット 2-5 も同じパラメーター名 (`InpCust2_*`, `InpCust3_*`, ...) で並びます。

### 注意事項 (重要)

- **インジ本体のパラメーターは default 値が使われます**。 `iCustom` の MQL4 仕様上、 パラメーターを slot から渡せません (variadic argument の制約)。
- カスタムパラメーターを使いたい場合は、 そのパラメーターを内蔵した **wrapper インジを作成**して下さい。
- 矢印系インジで「Buy 矢印は buffer 1、 Sell 矢印は buffer 2」 のように分離している場合、 1 slot で 1 方向しか読めない仕組みです。 そのままでは confluence に組み込めないので、 **両方向を 1 つの数値にまとめる wrapper** が必要です。

### 設定例 1: RSI 14 (オーバーレイ確認)

(本当は built-in の RSI を使えば十分ですが、 例として)

- `InpCust1_Name` = `"Examples\\RSI"` (MT4 標準の RSI 例; パスにバックスラッシュ使用)
- `InpCust1_Buffer` = 0 (RSI 値)
- `InpCust1_Threshold` = 50 (RSI > 50 → 買い)
- `InpCust1_Shift` = 1

### 設定例 2: CCI 50 (built-in CCI と相関 1.0 を観察)

- `InpCust1_Name` = `"Examples\\CCI"` (もしくは自前 CCI のパス)
- `InpCust1_Buffer` = 0
- `InpCust1_Threshold` = 0
- → built-in CCI とほぼ完全相関を確認 (相関行列で 0.99+ になるはず)

### 設定例 3: 自作の MA cross インジ

- `InpCust1_Name` = `"MyMACross"` (`MQL4/Indicators/MyMACross.ex4` を配置済)
- `InpCust1_Buffer` = 0 (Fast - Slow 差を出すバッファ)
- `InpCust1_Threshold` = 0
- → built-in `MA(5-20)` と高相関なら冗長と判明 (= 新指標として意味なし)

---

## 7. BO (バイナリーオプション) 検証パネル

### 重要 — 最初に読んでください

本パネルは **過去の bar の上で「コンフルエンス多数派 = エントリー方向」 として何回勝ったか** を集計し、 ペイアウト想定と一緒に honest に表示するものです。

理解しておくべき事:

1. **過去成績であり将来の予測ではありません。**
2. **ペイアウト次第で勝率の高さ = 利益ではありません。**
   - 例: payout 78% (100 円ベットで利益 +78 円 / 負けで -100 円) なら、 ブレイクイーブン勝率は **約 56.2%**。 「勝率 65% !」 が実は実質トントン以下ということが普通に起こります。
3. **Wilson 95% 信頼区間の下限** を併記しています。
   サンプル数が少ない (N < 100) と区間が広く、 点推定を信じてはいけません。
4. **ブローカーのスプレッド/コミッション/スリッページは含まれません。**
5. **生存バイアス**: チャートに今乗っている履歴で良かったから良い結果が出るだけかもしれません。

### パラメーター

| パラメーター | 既定 | 説明 |
|---|---|---|
| `InpBO_Enabled` | true | BO 過去検証パネル表示 |
| `InpBO_Expiry` | 5 | 期限 (バー数) — 例: 5 バー後の close と比較 |
| `InpBO_Backtest` | 500 | 検証バー数 |
| `InpBO_Payout1/2/3` | 78/85/90 | 想定ペイアウト 3 通り (%, 利益率) |

### ブレイクイーブン勝率 (BE) の意味

「ペイアウト p% (= 100 円ベットで利益 +p 円、 負けで -100 円) で長期 BE 達成に必要な勝率」 を表示します:

| Payout | BE 勝率 | 意味 |
|---|---|---|
| 70% | 58.8% | 国内バイナリーで多い水準。 58.8% 未満なら EV マイナス |
| 78% | 56.2% | 一部高ペイアウト海外業者の水準 |
| 85% | 54.1% | 米系一部業者 |
| 90% | 52.6% | 極めて高ペイアウト水準 |
| 100% | 50.0% | 理論的に手数料ゼロのフェアコイン |

★ 「過去勝率 53%」 と聞いて高そうに見えますが、 ペイアウト 78% 業者なら BE 56.2% に届かず期待値マイナス、 という典型例を可視化します。

---

## 8. 活用シナリオ集

### シナリオ A: 「自分の 7 つのコンフルエンス、 本当に独立?」

**症状**: トレード前に「7 つの根拠が揃った! エントリー!」 と決断するが結果がコイントス並み。

**使い方**:
1. 自分が普段使う指標群 (例: MA20, MA50, MA100, RSI, MACD, Stochastic, Bollinger) を ON
2. パネルの **N_eff** を観察
3. もし **N_eff = 2.5 (7 個中)** なら、 7 票一致は実質「2.5 個の独立な意見」 でしかない
4. 「強根拠」 だと思っていたコンフルエンスが、 実は **MA 系の同質エコー** だと判明

### シナリオ B: 「新指標を組み込むべきか?」

**症状**: 新しいインジを買ったが、 既存セットに追加する価値があるか判断したい。

**使い方**:
1. 既存セットを ON にして N_eff_old を記録
2. 新インジを `InpCust1_Name` に差し込む
3. N_eff_new を観察
4. **N_eff_new - N_eff_old が 0.7 以上なら本物の独立情報源**
5. **0.3 未満なら既存セットと冗長** → 追加する価値が乏しい

### シナリオ C: 「BO で本当に勝てる組み合わせか?」

**症状**: 「勝率 60% の BO 戦略」 と謳う商材を見たが信用できる?

**使い方**:
1. 商材の指標群を slot 1〜5 に差し込み (または built-in で類似構成)
2. `InpBO_Expiry` を商材の期限に合わせる (例: 5 バー = 5 分足で 5 分後)
3. **過去 500 バーの実測勝率** を観察
4. **使うブローカーの payout** に該当する BE 勝率と比較
5. **Wilson 95% 下限 < BE** なら統計的に有意な勝ち越しは確認できない

### シナリオ D: 「N_eff の高い (=独立な) セットを探索」

**症状**: 効率的な指標セットを構築したい。

**使い方**:
1. 全 built-in を ON にして相関行列を観察
2. 高相関ペア (例: MA-OsMA 0.92) のどちらか一方を OFF
3. N_eff を最大化しつつ K も維持できる組み合わせを探索
4. 結果として **少ない指標数で同じ判定力** を実現

---

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

### Q. 「⚠ 有効な指標が一つもありません」 と表示される

**原因**: 全ての `InpUse_*` を false にしたか、 カスタム slot も全て空。

**対応**: 1 つ以上の指標を ON にして下さい。

### Q. 「⚠ バー不足: 必要 X / 現在 Y」 と表示される

**原因**: チャートに過去データが不足しています。

**対応**:
- チャートをスクロールして過去にロード
- もしくは `InpLookback` と `InpBO_Backtest` を下げる
- 必要バー数 = `InpLookback + InpBO_Expiry + InpBO_Backtest + 10`

### Q. カスタム slot を有効にしてもパネルに出てこない

**確認**:
1. `InpCust1_Name` の **拡張子なし** インジ名は正しいですか? (例: `MyInd` であって `MyInd.ex4` でない)
2. インジ本体が `MQL4/Indicators/` に配置されていますか?
3. インジ本体が **コンパイル成功** (`.ex4` 生成) していますか?
4. MT4 メニュー → ツール → オプション → エキスパートアドバイザー で「**DLL の使用を許可**」 が必要なインジを使っている場合、 チェックして下さい
5. MT4 を再起動

### Q. 数値が変動しない / 古いまま

**原因**: `InpRecalcOnNewBar = true` の場合、 新バー成立時のみ再計算します。

**対応**:
- 即時更新したい場合は `InpRecalcOnNewBar = false` (ティック毎再計算)
- ただし軽さのために default は true

### Q. ストラテジーテスターで使えますか?

**回答**: MT4 標準のストラテジーテスターは EA 用です。 本ツールは indicator なので、 EA 内で `iCustom("HonestConfluence_JP", ...)` で呼び出すことで対応可能ですが、 panel 表示は機能しないので、 N_eff / 勝率の **数値を EA でログ出力**する形になります (発展用途)。

### Q. 異なる時間足で同時実行したい

**対応**: 各時間足のチャートに別個に attach して下さい。 軽量なので複数同時実行可能です (CPU 負荷小)。

---

## 10. FAQ

### Q. このツールで勝てますか?

**A. 本ツールは「勝つためのもの」 ではありません。** 自分のコンフルエンス判断が実は冗長で、 統計的根拠が薄いことを **honest に可視化**するツールです。

### Q. 推奨通貨ペア・時間足は?

**A. 推奨しません。** 通貨ペア・時間足は投資助言領域に近づくため、 honest に何も推奨しません。 ご自身の判断と検証で。

### Q. 過去のバックテスト結果や勝率を見せてほしい

**A. 公開しません。** バックテスト結果は将来の成果を保証しないことに加え、 過去成績の提示は投資助言業の規制対象に近づくため、 honest に何も提示しません。

### Q. iCustom で渡すパラメーターを増やすには?

**A. v0.20 の制約**: 仕組み上、 slot からインジパラメーターを渡せません。 解決策は **wrapper インジ作成**:

```mql4
// MyRSI80_wrapper.mq4 — RSI(80) を wrapper する例
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 White
double Buf[];

int OnInit() {
   SetIndexBuffer(0, Buf);
   return INIT_SUCCEEDED;
}

int OnCalculate(const int rates_total, const int prev_calculated,
                const datetime &time[], const double &open[], const double &high[],
                const double &low[], const double &close[], const long &tick_volume[],
                const long &volume[], const int &spread[]) {
   int start = (prev_calculated == 0) ? 0 : prev_calculated - 1;
   for(int i = start; i < rates_total; i++) {
      Buf[i] = iRSI(NULL, 0, 80, PRICE_CLOSE, rates_total - 1 - i);
   }
   return rates_total;
}
```

これを `MQL4/Indicators/MyRSI80_wrapper.mq4` として保存・コンパイル後、 `InpCust1_Name = "MyRSI80_wrapper"` で呼び出せます。

### Q. 矢印系インジ (Buy 矢印 / Sell 矢印が別バッファ) を使いたい

**A. wrapper 作成が必要**: 矢印系は「矢印が出た時のみ値を持ち、 他は EMPTY_VALUE」 形式が多く、 そのままだと相関計算で扱いにくいです。 wrapper で「Buy 矢印 - Sell 矢印」 の差を計算するバッファを作って下さい:

```mql4
double buyArrow = iCustom(NULL, 0, "MyArrows", 1, shift);  // buffer 1 = buy
double sellArrow = iCustom(NULL, 0, "MyArrows", 2, shift); // buffer 2 = sell
Buf[i] = (buyArrow != EMPTY_VALUE ? 1 : 0) - (sellArrow != EMPTY_VALUE ? 1 : 0);
```

→ 結果として +1 (Buy 矢印), -1 (Sell 矢印), 0 (なし) の系列。 これを `InpCust1_Threshold = 0` で使えます。

### Q. 商用利用してもいいですか?

**A. MIT なので可。** ただし「○○式 EA で稼げます」 等の **断定的性能表現** で配布する場合、 配布者ご自身が景表法・金商法等の規制を負います。 本リポジトリの著者・公開者はその責任を負いません。

### Q. 損失が出ました、 補償してもらえますか?

**A. 補償しません。** 本ツールは MIT ライセンス「AS IS」 (現状のまま) で配布されており、 商品性や特定目的への適合性を一切保証しません。 LICENSE をお読み下さい。

---

## 関連

- **README.md** — 仕様一覧 + パラメーター表
- **LICENSE** — MIT
- 関連プロジェクト:
  - [fx-mt4-auto-trading-tool](https://github.com/fc0web/fx-mt4-auto-trading-tool) — 同 author の自動売買 EA (Object/Buffer 系)
  - [fx-mt4-reverse-and-recycle-eas](https://github.com/fc0web/fx-mt4-reverse-and-recycle-eas) — 反転コピー & ドテンサイクル EA

## 著者

**Nobuki Fujimoto** (藤本 伸樹) — 独立研究者 (FX 出身)

## 免責

本ソフトウェアは投資助言ではなく、 統計的事実の可視化ツールです。 利用に伴う一切の損益について作者は責任を負いません。
