【移植#80】通貨強弱は何本のペアで決まるか — xMeterの構成バイアスを可視化¶

この記事の3行まとめ
- xMeter型の数値は、当日高安の中で現在Bidがどこにあるかを0〜9へ離散化し、通貨ごとに平均した値です
- 12ペアの構成は不均衡で、USDは6本、CADはUSDCADの1本だけなので、同じ「通貨強弱」でも根拠の幅が違います
- 専用MT5では12ペアを独立再計算して不一致0とし、同じグレード9が異なる値動き経路から生じることも確認しました
原典はxMeterの計算式を読み解いた記事¶
今回採用したのは、2010年4月10日の「xMeterは、何を計算している?」です。
原典は、12通貨ペアの当日高値・当日安値・現在Bidから、7通貨の数値を作る処理を読み解いています。重要なのは、この値が価格変化率やトレンドの傾きではなく、当日レンジ内の現在位置を離散化した平均だという点です。
そこで#80は数値を再表示するだけでなく、次の3点を同じ画面で監査できるようにしました。
- 各通貨の計算に何本のペアが使われているか
- そのうち1本を外したとき、スコアが最大でどれだけ変わるか
- 日付変更直後や値動き経路を、この式が区別できるか
まず各ペアを0〜9へ変換する¶
各ペアのレンジ位置は次の式です。
配布版は異常値の影響を避けるため0〜1へ収め、その100倍を原典と同じ境界でグレード化します。
| グレード | 当日レンジ内の位置 |
|---|---|
| 0 | 3%未満 |
| 1 | 3%以上、10%未満 |
| 2 | 10%以上、25%未満 |
| 3 | 25%以上、40%未満 |
| 4 | 40%以上、50%未満 |
| 5 | 50%以上、60%未満 |
| 6 | 60%以上、75%未満 |
| 7 | 75%以上、90%未満 |
| 8 | 90%以上、97%未満 |
| 9 | 97%以上 |
EURUSDなら、EUR側へグレードを、USD側へ9 − グレードを加えます。USDJPYなら、USD側がグレード、JPY側が逆順位です。最後に、通貨ごとの寄与値を単純平均します。
MT5版はCopyRates()で現在のD1バーを1本読み、SymbolInfoTick()で現在Bidを取得します。CopyRatesの開始位置0は現在バーなので、確定済み日足の指標ではありません。日中に高値・安値・Bidが変われば数値も変わります。
当日高値と安値が同値、Tickがない、銘柄がMarket Watchで未選択など、計算条件を満たさないペアは無効として数えます。監査中に母集団を変えないよう、配布版はSymbolSelect()を呼びません。
12ペアでも、各通貨の根拠は同じ本数ではない¶
初期設定は原典と同じ12ペアです。
EURUSD, GBPUSD, AUDUSD, USDJPY, USDCHF, USDCAD,
EURJPY, EURGBP, EURCHF, EURAUD, GBPJPY, GBPCHF
この集合で各通貨を含む本数を数えると、次のようになります。7通貨から自分自身を除くため、完全な組み合わせの最大値は6本です。
| 通貨 | 構成ペア数 | 最大6本に対する状態 |
|---|---|---|
| USD | 6 | FULL |
| EUR | 5 | PARTIAL |
| GBP | 4 | PARTIAL |
| JPY | 3 | THIN |
| CHF | 3 | THIN |
| CAD | 1 | SINGLE-PAIR |
| AUD | 2 | FRAGILE |
CADの8.00とUSDの3.83は、同じ平均値の尺度に見えても根拠が違います。CADはUSDCADだけで決まり、USDは6本を平均しています。CADの表示は広い通貨集合から得た「総合的な強さ」ではなく、USDCADを反転した1ペア代理値です。
銘柄の基軸通貨と決済通貨は、SymbolInfoString()のSYMBOL_CURRENCY_BASEとSYMBOL_CURRENCY_PROFITから取得します。これにより、口座の正確な銘柄名を指定すれば、末尾記号付きでも基軸側と決済側を固定位置で誤認しにくくしています。
1本除外感度で「平均の脆さ」を見る¶
ペア数だけでは、1本の値が平均をどれほど動かすか分かりません。そこで配布版は、通貨ごとに1本ずつ除外して再平均し、元のスコアとの差の最大値をLOO DELTAとして表示します。
掲載画像ではAUDが2本で2.00、USDが6本で0.77でした。値が大きいほど、現在の構成では特定の1ペアに平均が左右されやすいことを示します。
CADは1本しかないため、その1本を外すと平均を定義できません。ゼロと表示すると「安定している」と誤解されるので、N/Aにしています。これは予測指標ではなく、現在の構成に対する感度監査です。
上昇トレンドと「安値から戻っただけ」を区別できない¶
この式が使うのは、当日高値、当日安値、現在Bidの3点です。その3点が同じなら、そこへ至る順序はスコアに入りません。
専用検証では、日中レンジを1.00〜2.00、最終Bidを1.99にそろえた2つの経路を用意しました。
- 一方は直近価格が1.40 → 1.70 → 1.99と上昇
- もう一方は2.00へ達した後、1.995 → 1.99と下落
どちらもレンジ位置は99%で、結果は同じグレード9です。つまり、グレード9は「現在値が当日高値に近い」ことは示しますが、上昇が続いていることまでは示しません。
日付変更直後はレンジ自体が未成熟¶
D1バーが始まった直後は、高値と安値の観測期間が短く、少数のTickでレンジ位置が大きく変わります。配布版は最新のD1開始時刻からの経過分を表示し、初期値では60分未満をEARLY FLAG: ONにします。
これは60分を過ぎれば正しいという保証ではありません。流動性や取引時間に応じて、数値を保留する時間帯を意識するための注意表示です。また、複数ペアのD1開始時刻が一致しない場合はOPEN-TIME MISMATCHを表示します。
専用MT5で12ペアを独立照合¶
配布インジケーターと独立検証EAを、専用MetaTrader 5 Build 6182でコンパイルしました。どちらも0エラー・0警告です。
標準銘柄の履歴は変更せず、検証専用の12カスタム銘柄へ、グレード0〜9の境界をまたがない固定レンジとTickを投入しました。検証EA側で式、基軸・決済通貨への寄与、平均、カバレッジ、1本除外感度を別計算し、配布版の41バッファと照合しています。
| 検査項目 | 結果 |
|---|---|
| 構成ペア / 有効ペア / 無効ペア | 12 / 12 / 0 |
| USD / EUR / GBP | 3.833 / 6.400 / 5.250 |
| JPY / CHF / CAD / AUD | 1.000 / 4.333 / 8.000 / 4.000 |
| CADの構成ペア | 1 |
| CADの1本除外感度 | N/A |
| 独立再計算との不一致 | 0 |
| 異なる直近経路で同じグレード9 | 確認済み |
| パネルオブジェクト | 21 / 21 |
| 標準銘柄の履歴書き換え | なし |
| 注文数・ポジション数 | 開始前後で変化なし |
掲載画像は、この合否判定の直後に保存した1200×630のMT5画面です。
主なパラメーター¶
| パラメーター | 初期値 | 役割 |
|---|---|---|
InpSymbols | 原典の12ペア | 正確な銘柄名をカンマ区切りで指定 |
InpRefreshSeconds | 1 | 再計算間隔(1〜60秒) |
InpEarlyDayMinutes | 60 | D1開始直後フラグの期間(0〜1440分) |
InpShowPanel | true | 監査パネルの表示 |
80_Currency_Strength_Coverage_Auditor_v1_00.mq5 をダウンロード
使い方¶
- MQ5をMT5のデータフォルダー内にある
MQL5/Indicatorsへ置き、MetaEditorでコンパイルします。 - 12ペアすべてをMarket Watchへ追加し、通常のチャートへ適用します。
- サフィックス付き口座では、
InpSymbolsをEURUSD.aのような実際の銘柄名へ置き換えます。 LIVE/SETで、設定したペアのうち何本を現在計算できたか確認します。SET/6とRISKで構成の広さを、LOO DELTAで1本への依存度を確認します。EARLY FLAG、無効ペア、D1開始時刻の不一致があるときは、数値の比較を保留します。
設定内で同じ通貨組み合わせを正順・逆順の両方へ重複登録した場合、後の項目は無視します。異なるペア集合へ変えた結果は、原典12ペアの値と同じ母集団ではありません。
使えないこと・注意点¶
- スコアは当日レンジ内の位置であり、価格変化率、ボラティリティ、トレンドの傾きではありません。
- 高値・安値・現在Bidだけでは、そこへ至った値動きの順序を識別できません。
- ペア数が少ない通貨ほど、1本の動きやデータ欠損の影響を受けやすくなります。
- 日付変更直後はD1レンジが短時間の価格だけで作られ、数値が不安定になり得ます。
- ブローカーのD1区切り、取引時間、配信銘柄、Bidが違えば、他口座と同じ値にはなりません。
- 未選択または取得不能な銘柄は自動追加せず、無効として表示します。
- 売買、通知、ファイル出力、DLL、Web通信は行いません。
- 数値の大小だけで売買判断を行わず、収益性を示す検証結果ともみなさないでください。
まとめ¶
xMeter型の通貨強弱は、12ペアを同じ重みで平均しているように見えても、通貨ごとの構成本数は1〜6本です。CADはUSDCADだけ、AUDは2本、USDは6本なので、表示された数値の根拠の幅はそろっていません。
配布版は原典の計算を保ちながら、構成本数、取得できた本数、1本除外感度、D1開始直後を並べます。さらに、同じグレードが異なる値動き経路から生じる対照を確認しました。値そのものよりも、何を測り、何を測っていないかを一緒に見るための監査ツールです。
あわせて読みたい記事¶
- 【検証#16】「通貨の強弱」を可視化するKu-Chartの計算式」を再現する
- 【移植#103】直近25時間の安値を時刻でそろえる — 欠損バーを0と混同しない
- 【移植#30】経済指標後60分の値動きを測る — 初動・最大変動・戻りを同じ基準で記録
前後の記事¶
前: 【移植#79】TimeCurrentはどの銘柄の時刻か
次: 【移植#81】iCustomの入力を省略すると何が返る? — 6通りの呼出しと3バッファを照合