* feat(MultiTrendMA): SuperSmoother純粋出力バッファの追加および前処理パイプラインの更新 * feat(kalman): 完全因果的ローリングRice推定量版の実装と技術仕様書の追加、EA初期設定の最適化 * refactor: KalmanRegimeEstimator.mqhの新設および共通ヘッダのHybrid_DFA_EA_Common.mqhへの改名 - KalmanRegimeEstimator.mq5 専用ヘッダファイル KalmanRegimeEstimator.mqh を新設 - 旧 KalmanStrategy_Common.mqh からカルマン専用定数・判定ロジックを分離 - 旧 KalmanStrategy_Common.mqh を Hybrid_DFA_EA_Common.mqh にリネーム - 各種 EA (Hybrid_DFA_EA, KalmanTrendEnsembleEA) のインクルードパスを同期更新 - 全 MQL5 プログラム (8ファイル) の 0 errors, 0 warnings コンパイルを確認 * refactor: WinnerKalmanTrendFollow.mq5のGetNextHigherTimeframeをHybrid_DFA_EA_Common.mqhへ一本化 - Hybrid_DFA_EA_Common.mqh をインクルード - ローカル定義されていた GetNextHigherTimeframe() を削除し共通関数へ統合 - 全 MQL5 プログラム (8ファイル) の 0 errors, 0 warnings コンパイルを確認 * refactor: KalmanRegimeEA.mq5をoldディレクトリへ退避 - Experts/Hybrid_DFA_EA/KalmanRegimeEA.mq5 を Experts/Hybrid_DFA_EA/old/ 配下へ移動 - README.md のディレクトリ構成ツリーを更新 * refactor: DFA.mq5をoldディレクトリへ退避 - Indicators/Hybrid_DFA_EA/DFA.mq5 を Indicators/Hybrid_DFA_EA/old/ 配下へ移動 - README.md のディレクトリ構成ツリーを更新 * refactor: KalmanRegimeEstimator.mqh と MultiTrendMA.mqh のヘッダ記載構成を統一 * feat: MultiTrendMAおよび関連EAのMA期間設定をENUM_MA_PERIODに変更しカーブフィッティングを防止 * fix: 各EAのカルマンインジケータ連携パラメータを確定足ローリングRice推定量仕様に更新
Hybrid Kalman / DFA & Smoothed RSI / Multi Dual MA Trading System
MetaTrader 5 (MQL5) 向けに開発された、物理学・時系列解析の理論に基づく**カルマンフィルター(平滑局所線形トレンドモデル)およびDFA(トレンド除去変動解析)**による相場レジーム判別と、Super Smoother RSI および Multi Dual MA を組み合わせた高堅牢ハイブリッド自動売買システム(EA)です。
1. システム概要
相場の統計的ドリフトと局所傾き(トレンド方向および強さ)をリアルタイムに解析し、**「上昇トレンド相場」「下降トレンド相場」「レンジ相場」**を厳密に分離した上で、それぞれの環境に特化した最適戦略を自動で切り替えて執行します。
graph TD
Market[MT5 市場データ] --> Kalman[KalmanRegimeEstimator.mq5<br/>1段階上位足MTF レジーム推定]
Kalman -->|Z >= 2.0 (青: 上昇トレンド)| UpTrendMode[上昇トレンドモード]
Kalman -->|-2.0 < Z < 2.0 (グレー: レンジ)| RangeMode[レンジ相場モード]
Kalman -->|Z <= -2.0 (赤: 下降トレンド)| DownTrendMode[下降トレンドモード]
UpTrendMode --> TrendBuy[MultiDualMA.mq5<br/>ゴールデンクロス BUY のみ許可]
DownTrendMode --> TrendSell[MultiDualMA.mq5<br/>デッドクロス SELL のみ許可]
RangeMode --> SmoothedRSI[SmoothedRSI.mq5<br/>Super Smoother + RSI<br/>ゾーン脱出逆張りエントリー]
TrendBuy --> EA[Hybrid_DFA_EA.mq5<br/>ポジション管理 & ATR動的決済]
TrendSell --> EA
SmoothedRSI --> EA
2. ディレクトリ構成
├── Experts/
│ └── Hybrid_DFA_EA/
│ ├── KalmanTrendEnsembleEA.mq5 # 【新仕様書完全準拠】カルマンレジーム・マルチホライズンLWMAアンサンブル・二重防護EA
│ ├── Hybrid_DFA_EA.mq5 # ハイブリッド自動売買EA (カルマンレジーム判定・ポジション管理・発注制御)
│ ├── WinnerKalmanTrendFollow.mq5 # カルマンレジーム推定器と移動平均クロスに基づくトレンドフォローEA
│ └── old/
│ └── KalmanRegimeEA.mq5 # 旧カルマンフィルター特化型トレンドフォローEA (アーカイブ)
├── Include/
│ └── Hybrid_DFA_EA/
│ ├── Hybrid_DFA_EA_Common.mqh # 共通定義・クラスタリスク管理・資金管理・注文執行補助・レジーム状態遷移機械
│ ├── KalmanRegimeEstimator.mqh # カルマンレジーム推定器 専用ヘッダ・バッファ定義
│ └── MultiTrendMA.mqh # MultiTrendMA 専用ヘッダ・バッファ定義
├── Indicators/
│ └── Hybrid_DFA_EA/
│ ├── KalmanRegimeEstimator.mq5 # 平滑トレンドモデル自律キャリブレーション型カルマンレジーム推定
│ ├── MultiTrendMA.mq5 # マルチタイプ対応3ライン移動平均線 (SMA/EMA/SMMA/LWMA/ALMA)
│ ├── SmoothedRSI.mq5 # 2-Pole Super Smoother 平滑化RSI
│ └── old/
│ └── DFA.mq5 # 旧双方向DFAレジーム判別インディケータ (アーカイブ)
└── docs/
├── FX売買戦略仕様書(実運用完全版・カルマンフィルター統合版).md # 実運用完全版仕様書
├── kalman_regime_estimator.md # カルマンレジーム推定インジケーター技術仕様書
├── 20260822_2_DFA-Smoother ハイブリッド高堅牢化取引システム 仕様書(改訂版).md
└── 20260901_MQL5 EA Implementation Review.md
3. 主要コンポーネント詳細
3.1 カルマンレジーム推定インディケータ (KalmanRegimeEstimator.mq5)
対数価格空間における平滑局所線形トレンドモデル(Smooth Trend Model)に基づき、価格の局所的傾き($\beta$)と推定誤差共分散($P_{11}$)から統計的検定統計量(Z スコア)をリアルタイムに推定するインディケータです。
- 対数価格空間(Log-Price Space)でのモデル化:
y_t = \ln(P_t)を観測系列とすることで幾何ブラウン運動(対数正規過程)に完全適合し、価格水準に依存しないスケール不変性を獲得。
- Rice推定量 × 極配置解析解による自律客観キャリブレーション:
- 過去バーの2階差分分散推定量(Rice's Estimator)から高周波観測ノイズ分散
Rを直接計測。 - ターゲット時定数 $\tau$(推奨: 8〜15本)から極配置解析解
q_\beta = R / \tau^4により傾きプロセスノイズを代数的に逆算。カーブフィッティングを排除した客観的パラメータ設定を実現。
- 過去バーの2階差分分散推定量(Rice's Estimator)から高周波観測ノイズ分散
- 統計的無次元スコア(
Zスコア)とヒステリシス構造:- 傾き
\betaとその推定誤差分散P_{11}からz = \beta / \sqrt{P_{11}}を算出し、$|z| \ge 2.0$(トレンド突入)および $|z| \le 1.0$(トレンド離脱)のヒステリシスにより境界でのチャタリングを完全遮断。
- 傾き
- 真の
\mathcal{O}(1)マルチタイムフレーム(MTF)対応:- 上位足(例: M15チャート上でM30やH1)のカルマンフィルタ状態を増分更新し、現在足チャート上に完全同期展開。
3.2 DFA(Detrended Fluctuation Analysis)インディケータ (DFA.mq5)
時系列の対数リターン系列 \Delta \ln P_t に対して DFA-1 解析を行い、ハースト指数 H に相当するスケーリング指数 \alpha を算出します。
- ドリフト結合型ハイブリッド補正 (Drift-Coupled Hybrid DFA):
- カウフマン効率比($ER$)によるトレンド復元: 純粋なDFA-1が消去してしまう大局的ドリフト(一本調子の強いトレンド成分)を、ウィンドウ内の対数リターンから効率比
ER \in [0.0, 1.0]として高速抽出。 - ジリ高・低ボラ上昇相場($ER \ge 0.20$)の完全救済: 為替の微細構造ノイズによる平均回帰誤認(
\alpha < 0.45赤線)を排除し、真のトレンド(\alpha \ge 0.55青線)へ自動昇格。 - 天井圏・乱高下もみ合い相場の偽トレンド抑制: 方向感のない往復ビンタ相場(
ER < 0.20かつ $\alpha \ge 0.50$)を中立・不感帯(0.50 \sim 0.55グレー線)へ減衰させ、ダマシ損失を防止。
- カウフマン効率比($ER$)によるトレンド復元: 純粋なDFA-1が消去してしまう大局的ドリフト(一本調子の強いトレンド成分)を、ウィンドウ内の対数リターンから効率比
- 高速化アルゴリズム・1パス解析的SSR (v1.4.0):
- 局所回帰処理を約67%削減し、超越関数評価を100%事前キャッシュ化。初回計算バー数制限により起動遅延をミリ秒単位へ解消。
- マルチタイムフレーム (MTF) ネイティブ対応:
InpTimeframeパラメータにより上位足のDFA値を現在足チャート上に美しく同時描画。
3.3 Smoothed RSI インディケータ (SmoothedRSI.mq5)
高周波ノイズを排除した低遅延オシレーターです。
- 正しい平滑化パイプライン(RSI
\rightarrowSuper Smoother):- 生の価格から高速 RSI(7) を計算した後、2-Pole Super Smoother フィルター(周期14)を通過。
- トレンド相場でも 0 や 100 に飽和・張り付くことなく、30〜70 を中心とする滑らかなサイン波を描きます。
- レンジ戦略シグナル(ゾーン復帰・脱出クロス方式):
- BUY: 前々足が売られすぎ水準以下で、直前足が 35 を上抜け($\text{RSI}_{t-1} \le 35 \text{ かつ } \text{RSI}_t > 35$)
- SELL: 前々足が買われすぎ水準以上で、直前足が 65 を下抜け($\text{RSI}_{t-1} \ge 65 \text{ かつ } \text{RSI}_t < 65$)
3.4 Multi Dual MA インディケータ (MultiDualMA.mq5)
SMA / EMA / SMMA / LWMA / ALMA の5種類の移動平均アルゴリズムを統合し、信号処理工学(DSP)とATR連動シュミットトリガーを備えた高機能トレンドフォローフィルターです。すべてのMAタイプにおいて、Fast(短期: clrOrangeRed / オレンジ赤)とSlow(長期: clrDeepSkyBlue / 水色)の2色で統一描画されます。
flowchart LR
A["原価格 P_t"] --> B["Multi Dual MA<br/>(SMA / EMA / SMMA / LWMA / ALMA)"]
B --> C["Schmitt Trigger<br/>(ATR動的ヒステリシス: Factor 0.08)"]
D["SignalState バッファ<br/>(+1.0: Bull / -1.0: Bear)"]
C --> D
- 最適重心シフト(高Offset)による直接的低遅延化:
- Fast:
Offset=0.92, Slow:Offset=0.90,Sigma=5.5。スパイクゼロで極めて低遅延・高平滑な追従。
- Fast:
- ATR連動シュミットトリガー(最適ヒステリシス不感帯):
- 不感帯幅係数を適正化($H_t = 0.08 \times \text{ATR}_{14}$)し、もみ合い相場での微小振動によるダマシ往復(チャタリング)を完全遮断。
3.5 ハイブリッド取引 EA (Hybrid_DFA_EA.mq5 & DFA_Common.mqh)
- カルマンフィルター上位足レジーム判定 (v2.0.0):
- 1段階上位足(
HTF_MODE_AUTO_NEXT)のKalmanRegimeEstimatorからZスコアを取得し、上昇トレンド($Z \ge 2.0$)、下降トレンド($Z \le -2.0$)、**レンジ相場($-2.0 < Z < 2.0$)**の3状態へ厳密分類。
- 1段階上位足(
- レジーム方向一致型エントリー連動 (v2.0.0):
- 上昇トレンド時: トレンド戦略(MultiDualMA)の BUY のみ 許可(SELLを遮断)。
- 下降トレンド時: トレンド戦略(MultiDualMA)の SELL のみ 許可(BUYを遮断)。
- レンジ相場時: レンジ戦略(Smoothed RSI)の逆張りエントリーを許可(トレンド追従を停止)。
- カルマン中央基準線・レジーム逆行強制決済 (v2.0.0):
- レンジポジション:
Zスコアがトレンド領域($|Z| \ge 2.0$)へ突入した時点で即座に強制決済。 - トレンドBUYポジション:
Zスコアが中央基準線0.0を下回った(弱気転落)時点で強制決済。 - トレンドSELLポジション:
Zスコアが中央基準線0.0を上回った(強気転落)時点で強制決済。
- レンジポジション:
- レンジ戦略の独立エグジットロジック (Smoothed RSI 利確・損切り):
- 利確(平均回帰): RSI が中央値
50.0に到達・回帰(BUY:\ge 50.0/ SELL: $\le 50.0$)した時点で即時手仕舞い。 - 損切り(ゾーン逆行): 反転失敗による過熱圏への逆戻り(BUY:
< 35.0/ SELL: $> 65.0$)で即時損切り。
- 利確(平均回帰): RSI が中央値
- 堅牢な実弾注文執行レイヤー:
- 充填モード自動判定(
DetectFillType)、ストップレベル/スプレッドガード(AdjustStopDistance)、動的ロット正規化(NormalizeLot)、有効証拠金基準(ACCOUNT_EQUITY)の資金管理を完備。
- 充填モード自動判定(
- 動的 ATR エグジット & トレーリングストップ:
- 利確(Take Profit):
\text{ATR}(20) \times 3.0(※InpAtrTpFactor = 0指定時はTPを無効化し、SL側ATR倍率を用いたトレーリングストップへ自動切替) - 損切(Stop Loss):
\text{ATR}(20) \times 1.5 - M1 ATRトレーリングストップ: 1分足(PERIOD_M1)新バー確定毎に有利方向へリアルタイム追従更新。
- 利確(Take Profit):
3.6 実運用完全版トレンドフォローEA (KalmanTrendEnsembleEA.mq5)
docs/FX売買戦略仕様書(実運用完全版・カルマンフィルター統合版).md に定義されたすべての取引規則、資金管理モデル、リスク防護構造を100%完全実装した最上位トレンドフォローEAです。
graph TD
subgraph SignalLayer ["シグナル生成層 (日足 D1 確定足)"]
KRegime["KalmanRegimeEstimator (Buffer 3)<br/>+1.0: 上昇 / -1.0: 下降"]
Band["ATR(14) ブレイクアウトバンド<br/>LWMA(60) ± 1.2 * ATR"]
Ensemble["3組LWMAアンサンブル<br/>10/30, 20/60, 40/120 (>= 0.67)"]
RSI["RSI(14) モメンタム<br/>Buy: 50〜80 / Sell: 20〜50"]
end
subgraph ProtectionLayer ["二重防護ストップ構造"]
HardSL["第1防護壁: ブローカー側ハードSL<br/>1. 成行発注時 StopPrice_init 付与<br/>2. 約定直後 0.5*ATR フロア保証即時同期<br/>3. 日次有利方向トレイリング更新"]
SoftExit["第2防護壁: 日足確定時ソフト決済<br/>1. 急反転 / バンド割れ / Swing割れ: 成行全決済<br/>2. LWMA(20) 到達: 50%部分利確"]
end
subgraph RiskLayer ["2通貨分解クラスタ & レバレッジ管理"]
Cluster["4大通貨クラスタ (USD, 欧州, 資源国, JPY)<br/>1ポジションで2通貨枠を同時消費<br/>各方向最大 1.0% / 総リスク最大 2.0%"]
Leverage["実効レバ <= 5.0<br/>維持率 < 300% 新規停止 / < 150% 緊急オフ"]
Carry["金曜NYクローズ1時間前 週末持ち越し防護"]
end
SignalLayer --> ProtectionLayer
ProtectionLayer --> RiskLayer
- 対数正規化カルマンレジーム (
KalmanRegimeEstimator.mq5連携):- 対数パーセント価格系列
y_t = 100 \times \ln(P_t)を観測とし、通貨ペア固有の価格水準スケール(USDJPYの150 vs EURUSDの1.05)を完全排除した低遅延レジーム判定(+1.0/-1.0)。
- 対数パーセント価格系列
- 3組マルチホライズン・アンサンブル比率(Ensemble Ratio):
- 短期(10/30)、中期(20/60)、長期(40/120)の3組のLWMAクロス状態から合致度(0.0〜1.0)を算出し、
0.67以上でエントリー承認。ロット数に連続反映。
- 短期(10/30)、中期(20/60)、長期(40/120)の3組のLWMAクロス状態から合致度(0.0〜1.0)を算出し、
- 二重防護ストップ構造(Dual-Layer Stop Architecture):
- 第1防護壁(ブローカー側ハードストップ):
- ステップ1(成行発注時): 確定足ベースの $\text{StopPrice}_{\text{init}}$(
\text{LWMA}(60) \pm 1.0 \times \text{ATR}と過去20本スイングハイ・ローの安全側)をSLに付与して発注。 - ステップ2(約定後即時更新): 実約定価格
\text{OpenPrice}から0.5 \times \text{ATR}の最低フロア距離を担保し、即座にPositionModifyでハードSLを同期確定。 - 日次有利トレイリング: 日足確定毎に計算し、有利方向のみ切り上げ/切り下げ。
- ステップ1(成行発注時): 確定足ベースの $\text{StopPrice}_{\text{init}}$(
- 第2防護壁(日足終値確定時ソフト決済):
- 全決済: カルマン急反転(
-1.0/+1.0)、ATRバンド割れ、Swing High/Lowブレイクで全ロット成行決済(決済後2本クールダウン付与)。 - 部分利確:
\text{LWMA}(20)クロスで保有ロットの50%を成行決済(全決済と競合時は全決済最優先)。
- 全決済: カルマン急反転(
- 第1防護壁(ブローカー側ハードストップ):
- 2通貨分解型クラスタリスク管理(仕様書第8章):
- 通貨ペアではなく「通貨そのもの」を4大クラスタ(USD、欧州、資源国、JPY)に分解し、1ポジションで構成2通貨の枠を同時に
0.5\%消費。同方向リスク上限 $1.0%$、ポートフォリオ総リスク上限2.0\%を厳格管理。
- 通貨ペアではなく「通貨そのもの」を4大クラスタ(USD、欧州、資源国、JPY)に分解し、1ポジションで構成2通貨の枠を同時に
- レバレッジ・証拠金・週末持ち越し防護:
- 実効レバレッジ $\le 5.0$、証拠金維持率
< 300\%で新規発注停止、< 150\%で含み損の大きい順に50%強制決済(緊急リスクオフ)。 - 金曜NYクローズ1時間前(土曜05:00/06:00日本時間)、含み損かつSLまで
0.5 \times \text{ATR}未満のポジションを市場クローズ前に全決済。
- 実効レバレッジ $\le 5.0$、証拠金維持率
4. パラメータ一覧
実運用完全版 EA パラメータ (KalmanTrendEnsembleEA.mq5)
| パラメータ名 | デフォルト値 | 説明 |
|---|---|---|
InpMagicNumber |
20260927 |
EA マジックナンバー |
InpRiskPercent |
0.5 |
1トレード許容リスク (%) (口座総資産比 0.5%) |
InpMaxSpreadPips |
2.5 |
許容最大スプレッド (Pips: 早朝スプレッド待機用) |
InpKalmanTF |
PERIOD_D1 |
カルマン計算時間足 (仕様書標準: 日足 D1) |
InpIndTargetLagBars |
10.0 |
カルマンターゲット時定数 (抽出スイング幅: 8〜15本推奨) |
InpIndZEnter |
2.0 |
カルマントレンド突入閾値 ($ |
InpIndZExit |
1.0 |
カルマントレンド離脱閾値 ($ |
InpLwmaShortFast / Slow |
10 / 30 |
短期 LWMA ペア期間 |
InpLwmaMidFast / Slow |
20 / 60 |
中期 LWMA ペア期間 (部分利確基準 / ブレイク・ストップ基準) |
InpLwmaLongFast / Slow |
40 / 120 |
長期 LWMA ペア期間 |
InpEnsembleThreshold |
0.67 |
アンサンブル合致度閾値 (3組中2組以上 = 0.67) |
InpAtrBandMultiplier |
1.2 |
エントリーバンド倍率 (\text{LWMA}(60) \pm 1.2 \times \text{ATR}) |
InpAtrStopMultiplier |
1.0 |
ストップ基準線倍率 (\text{LWMA}(60) \pm 1.0 \times \text{ATR}) |
InpAtrFloorMultiplier |
0.5 |
実約定価格最低フロア距離倍率 (0.5 \times \text{ATR}) |
InpRsiLongMin / Max |
50.0 / 80.0 |
買いモメンタム許容範囲 (50 < \text{RSI} \le 80) |
InpRsiShortMin / Max |
20.0 / 50.0 |
売りモメンタム許容範囲 (20 \le \text{RSI} < 50) |
InpSwingPeriod |
20 |
スイングハイ・ロー参照期間 (過去20本・当日除外) |
InpCooldownBars |
2 |
決済後クールダウン期間 (バー数: 48時間=2本) |
InpMaxEffectiveLeverage |
5.0 |
実効レバレッジ上限 (5.0倍) |
InpMarginLevelStopNew |
300.0 |
新規発注停止 証拠金維持率 (%) |
InpMarginLevelEmergency |
150.0 |
緊急リスクオフ 証拠金維持率 (%) |
InpEnableClusterRisk |
true |
2通貨分解クラスタ管理有効化 (各方向1.0% / 総リスク2.0%) |
InpEnableWeekendCarry |
true |
週末持ち越しリスク管理有効化 (金曜NYクローズ前決済) |
ハイブリッド EA パラメータ (Hybrid_DFA_EA.mq5)
| パラメータ名 | デフォルト値 | 説明 |
|---|---|---|
InpRiskPercent |
1.0 |
1トレードあたりの許容リスク (%) (有効証拠金基準) |
InpFixedLot |
0.1 |
固定ロット数 (RiskPercent=0時に適用) |
InpUseKalman |
true |
カルマンレジーム判定フィルターの有効化 |
InpKalmanTimeframeMode |
HTF_MODE_AUTO_NEXT |
カルマン計算時間軸 (デフォルト: 自動1段階上位足) |
InpKalmanAutoTimeframeScale |
true |
時間足に応じたノイズ自動スケーリング (Δt補正) |
InpKalmanAutoCalibration |
true |
Rice推定量による解析的自動キャリブレーション |
InpKalmanTargetLagBars |
10.0 |
ターゲット時定数 (目安バー数: 8〜15推奨) |
InpKalmanCalibSamples |
1000 |
観測ノイズ計測バー数 |
InpKalmanZThreshold |
2.0 |
トレンド判定閾値 (Z \ge 2.0 上昇, Z \le -2.0 下降, 間はレンジ) |
InpKalmanZExit |
1.0 |
トレンド離脱閾値 (内部ヒステリシス用) |
InpKalmanAppliedPrice |
PRICE_CLOSE |
適用価格 |
InpUseRangeStrategy |
true |
レンジ戦略 (Smoothed RSI) の有効化 |
InpSSPeriod |
14 |
Super Smoother 遮断周期 |
InpRsiPeriod |
7 |
RSI 計算期間 |
InpRsiOverbought |
65.0 |
買われすぎ境界値 |
InpRsiOversold |
35.0 |
売られすぎ境界値 |
InpUseTrendStrategy |
true |
トレンド戦略 (Dual MA Cross) の有効化 |
InpTrendMaType |
TREND_MA_LWMA |
移動平均タイプ (SMA / EMA / SMMA / LWMA / ALMA) |
InpMaFastWindow |
20 |
短期 MA 期間 / 窓幅 (Fast Window) |
InpMaSlowWindow |
40 |
長期 MA 期間 / 窓幅 (Slow Window) |
InpMaAppliedPrice |
PRICE_CLOSE |
適用価格 |
InpAlmaFastOffset |
0.92 |
[ALMA専用] 短期 Offset (高値ほど低遅延) |
InpAlmaSlowOffset |
0.90 |
[ALMA専用] 長期 Offset (高値ほど低遅延) |
InpAlmaFastSigma |
5.5 |
[ALMA専用] 短期 Sigma (ガウス幅) |
InpAlmaSlowSigma |
5.5 |
[ALMA専用] 長期 Sigma (ガウス幅) |
InpAlmaUseSuperSmoother |
false |
[ALMA専用] SuperSmoother 前処理有効化 (OFF推奨) |
InpAlmaSSCutoff |
4 |
[ALMA専用] SuperSmoother カットオフ周期 (bars) |
InpAlmaUseZeroLagLead |
false |
[ALMA専用] 先行モメンタム補正有効化 (スパイクゼロ低遅延) |
InpLeadFactor |
0.40 |
[ALMA専用] 先行モメンタム係数 |
InpAlmaUseSchmittTrigger |
false |
[ALMA専用] シュミットトリガー (ATRヒステリシス) 有効化 |
InpAlmaHysteresisAtrPeriod |
14 |
[ALMA専用] ヒステリシス用 ATR 計算期間 |
InpAlmaHysteresisFactor |
0.08 |
[ALMA専用] ヒステリシス不感帯幅係数 (\text{ATR} \times 0.08) |
InpUseAtrExit |
true |
ATR ベース動的 TP/SL の有効化 |
InpAtrTimeframeMode |
HTF_MODE_AUTO_NEXT |
ATR 計算時間軸 (デフォルト: 自動1段階上位足) |
InpAtrPeriod |
20 |
ATR 計算期間 |
InpAtrTpFactor |
3.0 |
ATR 利確乗数 ($\text{ATR} \times 3.0$。0指定時はTPなし&SLトレーリングストップ) |
InpAtrSlFactor |
1.5 |
ATR 損切乗数 (\text{ATR} \times 1.5) |
5. セットアップ & コンパイル手順
- ファイルの配置:
Experts/Hybrid_DFA_EA/フォルダを MT5 のMQL5/Experts/Hybrid_DFA_EA/配下に配置Indicators/Hybrid_DFA_EA/フォルダを MT5 のMQL5/Indicators/Hybrid_DFA_EA/配下に配置Include/Hybrid_DFA_EA/フォルダを MT5 のMQL5/Include/Hybrid_DFA_EA/配下に配置
- コンパイル:
- MetaEditor で以下のファイルを順次開き、F7 キーでコンパイルします:
Indicators/Hybrid_DFA_EA/KalmanRegimeEstimator.mq5Indicators/Hybrid_DFA_EA/MultiDualMA.mq5Indicators/Hybrid_DFA_EA/SmoothedRSI.mq5Indicators/Hybrid_DFA_EA/DFA.mq5Experts/Hybrid_DFA_EA/KalmanTrendEnsembleEA.mq5(実運用完全版EA)Experts/Hybrid_DFA_EA/Hybrid_DFA_EA.mq5
- MetaEditor で以下のファイルを順次開き、F7 キーでコンパイルします:
- バックテスト実行:
- MT5 のストラテジーテスターを開き、
KalmanTrendEnsembleEAまたはHybrid_DFA_EAを選択してバックテストを実行します。 KalmanTrendEnsembleEA推奨設定:- 時間軸: 日足 (Daily / D1)
- 検証期間: 15年以上 (仕様書第13章準拠: 2011年〜2026年)
- 対象通貨ペア: USDJPY, EURUSD, GBPUSD, AUDUSD, EURJPY, GBPJPY, AUDJPY, USDCAD 等
- MT5 のストラテジーテスターを開き、
6. 改訂履歴 (Changelog)
[v2.1.0] - 2026-09-27
- 実運用完全版仕様書完全準拠EAの実装 (
KalmanTrendEnsembleEA.mq5):docs/FX売買戦略仕様書(実運用完全版・カルマンフィルター統合版).mdに基づく新規EAを新規作成。- 対数正規化カルマンレジーム (
KalmanRegimeEstimator.mq5): Buffer 3 (Regime+1.0/-1.0/0.0), Buffer 0 (Z-Score), Buffer 2 (Slope) をiCustomで取得。 - 3組LWMAアンサンブル: 短期(10/30), 中期(20/60), 長期(40/120) の合致度
\ge 0.67で確信度スコアリング。 - 二重防護ストップ構造(Dual-Layer Stop Architecture):
- 第1防護壁(ブローカー側ハードSL): 成行発注時
\text{StopPrice}_{\text{init}}付与\to約定直後0.5 \times \text{ATR}最低フロア保証即時同期\to日次有利方向トレイリング更新。 - 第2防護壁(日足確定時ソフト決済): 急反転・ATRバンド割れ・スイング割れ成行全決済(クールダウン2本付与) &
\text{LWMA}(20)到達時50%部分利確。
- 第1防護壁(ブローカー側ハードSL): 成行発注時
- 2通貨分解型クラスタリスク管理: 4大通貨クラスタ(USD, 欧州, 資源国, JPY)の同方向
1.0\%上限、総オープンリスク2.0\%上限。 - 実効レバレッジ・証拠金維持率・週末持ち越し防護: 実効レバ $\le 5.0$、維持率
< 300\%新規停止、< 150\%緊急リスクオフ、金曜NYクローズ前週末決済。
- 共通モジュールリネーム・大幅拡張 (
KalmanStrategy_Common.mqh):DFA_Common.mqhをKalmanStrategy_Common.mqhにリネームし、2通貨分解クラスタ管理、スイングハイ・ロー計算、厳格ロット計算、レバレッジ・維持率監視、週末リスク管理関数を完全実装。- 既存の
Hybrid_DFA_EA.mq5のインクルードパスを同期更新。
[v2.0.0] - 2026-09-27
- レジーム判定を対数空間平滑カルマンフィルター (
KalmanRegimeEstimator.mq5) に全面刷新 (Hybrid_DFA_EA.mq5,DFA_Common.mqh):- カルマンフィルター上位足連携 (
InpKalmanTimeframeMode = HTF_MODE_AUTO_NEXT):- 従来の DFA に代わり、対数価格空間における平滑局所線形トレンドモデル(Smooth Trend Model)と Rice推定量による自律客観キャリブレーションを備えた
KalmanRegimeEstimator.mq5をレジーム判定エンジンに採用。 - DFA と同様にチャート足の1段階上位足を自動解決してMTF同期展開。
- 従来の DFA に代わり、対数価格空間における平滑局所線形トレンドモデル(Smooth Trend Model)と Rice推定量による自律客観キャリブレーションを備えた
- 統計的
Zスコアによる3段階レジーム判定:- $Z \ge 2.0$(
InpKalmanZThreshold): 上昇トレンド (REGIME_UP_TREND) Z \le -2.0: 下降トレンド (REGIME_DOWN_TREND)-2.0 < Z < 2.0: レンジ相場 (REGIME_RANGE)
- $Z \ge 2.0$(
- レジーム方向一致型エントリー連動:
- 上昇トレンド時はトレンド戦略(MultiDualMA)の BUY のみ 許可。
- 下降トレンド時はトレンド戦略(MultiDualMA)の SELL のみ 許可。
- レンジ相場時はレンジ戦略(Smoothed RSI)の逆張りエントリーを許可。
- カルマン中央基準線・レジーム逆行強制決済 (
ShouldCloseKalmanPosition):- レンジポジション:
Zスコアがトレンド領域($|Z| \ge 2.0$)へ突入した時点で即座に強制決済。 - トレンドBUYポジション:
Zスコアが中央基準線0.0を下回った(弱気・中立転落)時点で強制決済。 - トレンドSELLポジション:
Zスコアが中央基準線0.0を上回った(強気・中立転落)時点で強制決済。
- レンジポジション:
- 共通モジュール拡張 (
DFA_Common.mqh):ENUM_REGIME_TYPEにREGIME_UP_TRENDとREGIME_DOWN_TRENDを追加。SSystemStateにkalman_z,kalman_slopeフィールドを追加。- カルマンレジーム判定関数
DetermineKalmanRegimeおよび逆行決済判定関数ShouldCloseKalmanPositionを配備。
- カルマンフィルター上位足連携 (
[v1.6.2] - 2026-09-13
- Dual ALMA 超低遅延・高平滑化アーキテクチャの確立 (
DualALMA.mq5,Hybrid_DFA_EA.mq5):- 遅延増大(右シフト)の根本原因解消:
- 前処理 SuperSmoother(Cutoff=8)が内包していた約1.8バーの群遅延を解消するため、
InpUseSuperSmoother = falseをデフォルトに設定。 - ALMA 本体のガウス分布重心シフト(Offset)を引き上げ、Fast Offset を 0.85
\to0.92、Slow Offset を 0.85\to0.90、Sigma を 5.5 に最適化。 - これにより、微分外挿によるスパイクを100%防止したまま、旧DualALMAよりも 1〜1.5バー早期の反転・クロス検知を実現。
- 前処理 SuperSmoother(Cutoff=8)が内包していた約1.8バーの群遅延を解消するため、
- 先行モメンタム補正(Zero-Lag Feedforward: オプション)の追加:
- 入力価格側に短期モメンタムを加える先行系列(
InpUseZeroLagLead,InpLeadFactor=0.40)を搭載。後段のガウス積分でノイズを平滑化するためスパイクゼロで低遅延化が可能。
- 入力価格側に短期モメンタムを加える先行系列(
- シュミットトリガー不感帯の適正化:
- ヒステリシス不感帯幅を
InpHysteresisFactor = 0.20\to0.08(ATRの8%) に最適化。レンジ相場でのチャタリング(ダマシ往復)を完全に抑止しつつ、ブレイクアウト初動でのシグナル確定遅延を極小化。
- ヒステリシス不感帯幅を
- 遅延増大(右シフト)の根本原因解消:
[v1.6.1] - 2026-09-13
- Dual ALMA 異常スパイク解消と高平滑・低遅延アーキテクチャの確立 (
DualALMA.mq5,Hybrid_DFA_EA.mq5):- スパイク(異常乱高下)の根本根絶:
- 急変後の反発相場等で Zero-Lag 前方外挿補正(速度の数倍〜10倍増幅)と Kaufman ER 動的適応(重心シフトのステップ変化)が相互干渉し、わずか1バーで数百pipsの巨大なトゲ(スパイク)を発生させていた不具合を解消。
- Zero-Lag 外挿補正および動的適応を廃止し、ALMA 本来の固定ガウス重み事前計算方式(
OnInitでwFast,wSlowを一括キャッシュ)へ回帰。
- 堅牢・高平滑な3段パイプライン構成:
- Layer 1 (2-Pole SuperSmoother): 周期8バーの2次バターワースIIRフィルタで高周波ノイズ・ヒゲを無遅延遮断。
- Layer 2 (Robust Dual ALMA): ノイズ除去された価格系列に対し、Offset=0.85, Sigma=6.0 の固定重み畳み込み演算を適用。オーバーシュートや歪みのない極上の滑らかさを実現。
- Layer 3 (ATR連動シュミットトリガー):
H_t = 0.20 \times \text{ATR}_{14}の不感帯による状態ラッチ(保持)により、レンジ相場でのチャタリング(往復ビンタ)を完全抑止。
- MQL5
iCustom互換性の完全確保:DualALMA.mq5からパラメータオフセットの原因となるinput groupを完全除去し、iCustom経由の引数受け渡しにおける位置ズレ(Fast=21, Slow=0 となる初期化エラー)を完全に防止。
- スパイク(異常乱高下)の根本根絶:
[v1.6.0] - 2026-09-13
- Robust Adaptive Dual ALMA の導入 (
DualALMA.mq5,Hybrid_DFA_EA.mq5,DFA_Common.mqh):- 4段多段デジタル信号処理(DSP)パイプライン:
- Layer 1a (2-Pole SuperSmoother): 遮断周期8バーの2次バターワースIIRフィルタにより、ナイキスト周波数近傍の高周波ジッター・エイリアシング雑音を急峻に遮断。
- Layer 1b (2-Pole Decycler): 遮断周期60バーのハイパス成分を原系列から減算相殺し、20〜60バーの中間周期うねりノイズを完全消去して純粋な大局トレンド成分を抽出。
- Layer 2 (Kaufman ER 動的ガウス適応): カウフマン効率比($ER$)によりトレンド時に Offset を最大
0.96/ Sigma を9.5まで引き締め追従性を極限化、レンジ時は Offset を0.60まで後退させ平滑度を最大化。 - Layer 3 & 4 (Zero-Lag 前方外挿補正): 代表遅延定数
\tau = N / 4とALMA系列の速度ベクトル(1次微分)による前方外挿項を加算し、因果的FIRフィルタの群遅延を実質ゼロに圧縮。
- ATR連動シュミットトリガー(動的ヒステリシス)の統合 (
BufferSignalState):- 直近14期間ATRの $20%$($H_t = 0.20 \times \text{ATR}_{14}$)の不感帯を設け、差分
\text{Fast} - \text{Slow}が+H_t超過で強気(+1.0)、-H_t未満で弱気(-1.0)へ確定。不感帯内は直前のシグナル状態を厳密にラッチ(保持)し、もみ合い境界値での微小振動によるチャタリング(往復ビンタ)を完全抑止。
- 直近14期間ATRの $20%$($H_t = 0.20 \times \text{ATR}_{14}$)の不感帯を設け、差分
- EAシグナル・エグジット判定の最適化:
SSystemStateにalma_signal_1,alma_signal_2を追加。- EA側のトレンドエントリー判定をシュミットトリガーのラッチ状態(非強気
\to強気でBUY、非弱気\to弱気でSELL)に連動させ、エグジットも反対側への反転確定時のみ執行するよう堅牢化。 - インジケータ内部計算を9バッファ(プロット2・内部計算7)で完全状態管理し、ティック再計算時の状態破壊やリペイントを防止。
- 4段多段デジタル信号処理(DSP)パイプライン:
- TP倍率0指定時の1分足ATRトレーリングストップ機能の実装 (
Hybrid_DFA_EA.mq5):- TP無効化とSLトレーリングへの自動切替: 出口戦略において
InpAtrTpFactor = 0を指定した場合、固定利確(Take Profit)を無効化(tpPrice = 0.0)し、SL側のATR倍率(InpAtrSlFactor)を用いた動的トレーリングストップへ自動切替。 - 1分足(M1)新バー確定追従アーキテクチャ (
IsNewM1Bar): ティック単位での追従によるPC過負荷およびバックテストの再現性低下(オープン価格モデル等との乖離)を防止するため、チャート足の時間軸(M5/M15/H1等)に関わらず1分足(PERIOD_M1)の新バー確定毎に安全に判定・追従更新を実行。 - 有利方向への厳格な追従保護 (
UpdateTrailingStop): 最新価格(BUY: Bid / SELL: Ask)からATR * InpAtrSlFactor(ストップレベル補正済)幅を算出し、既存SLより有利な水準へ切り上げ/切り下げ。損失拡大方向への不利な変更は一切行われない安全ガードを内包。 - ストップレベル・スプレッド耐性: ブローカーの最小ストップレベルおよびスプレッドを満たす十分な距離が確保されている場合のみ
PositionModifyを送信し、エラー(ERR_INVALID_STOPS)を完全抑止。
- TP無効化とSLトレーリングへの自動切替: 出口戦略において
[v1.4.0] - 2026-09-12
- Smoothed RSI 単独エグジット(利確・損切り)の実装 (
Hybrid_DFA_EA.mq5):- エグジット監視の完全独立化: レンジポジションの決済がドテン処理(反対エントリー)にのみ紐付いていた構造的不全を解消。エントリー判定ブロック(
allowRange)からエグジット監視を分離し、DFAが不感帯($0.45 \sim 0.55$)にあっても常に手仕舞い判定が作動するよう改善。 - 中央値 50.0 回帰による利確: BUYポジションは RSI が 50.0 以上に到達、SELLポジションは 50.0 以下に到達した時点で即座に利益確定。
- 過熱圏逆行による損切り: エントリー後に反転せず過熱圏へ逆戻りした場合(BUY: 35.0未満へ沈降、SELL: 65.0超へ踏み上げ)、即座に損切りクローズして損失拡大を防止。
- エグジット監視の完全独立化: レンジポジションの決済がドテン処理(反対エントリー)にのみ紐付いていた構造的不全を解消。エントリー判定ブロック(
- レジーム判定アーキテクチャの刷新と0.50基準線決済 (
DFA_Common.mqh,Hybrid_DFA_EA.mq5):- ポジション保有中の0.50基準線決済 (
ShouldCloseRegimePosition): エントリーは0.45未満 /0.55超過でのみ行い、ポジション保有中はノイズによる早期クローズを防ぐため0.50を跨ぐまで粘り強くホールド。レンジ保有中に $\alpha > 0.50$、トレンド保有中に\alpha < 0.50となった時点でEAが即時強制決済。 - 新規売買判定の完全一致化: 従来のヒステリシスによる不要な状態固着を解消し、
\alphaが $0.45 \sim 0.55$(不感帯)にある間は確実にREGIME_TRANSITION(完全静観・新規発注なし)として判定。 - 確定足同期による遅延解消: チャート足上でMTF展開されたDFAインディケータバッファの参照を直近確定バー(Bar 1)に同期し、タイムラグなく瞬時にレジーム変化を検知。
- 未計算領域・異常値ガード:
EMPTY_VALUEや NaN 検出時の安全フォールバック(0.50 / REGIME_TRANSITION)を追加。
- ポジション保有中の0.50基準線決済 (
- ドリフト結合型ハイブリッドDFA(Drift-Coupled Hybrid DFA)の導入 (
DFA.mq5,Hybrid_DFA_EA.mq5):- トレンド除去パラドックスの解消: 一定ペースで綺麗に上昇・下降する相場において、DFA-1のトレンド消去と為替の微細構造ノイズ(Bid-Askバウンス)により $\alpha < 0.45$(レンジ誤認)となる致命的欠点を解消。
- カウフマン効率比($ER$)による複合判定: 既存のリターン計算ループから
ERを追加コストゼロで同時算出し、$ER \ge \text{InpDriftThreshold}$(デフォルト: 0.20)の相場を確実に TREND(\alpha \ge 0.55青線)へ昇格。 - 乱高下・天井もみ合いの偽トレンド抑制: 方向感のない荒れ相場(
ER < 0.20かつ $\alpha \ge 0.50$)を中立・不感帯(0.50 \sim 0.55グレー線)へ減衰させ、ダマシ損失を防止。 - EA・インディケータ完全同期:
InpUseDriftFilterおよびInpDriftThresholdをパラメータ化し、EA側からも柔軟に制御可能。
- DFAインディケータの超高速化リファクタリング (
DFA.mq5,Hybrid_DFA_EA.mq5):- 初回計算バー数のクリッピング制御: 入力パラメータ
InpMaxBarsToCalc(デフォルト: 1500本)を新設。初回描画時の走査対象を過去全バー(5〜10万本)から直近実用範囲に限定し、起動時のUIフリーズ(約30秒)をミリ秒単位へ解消(約1,000倍高速化)。 - 1パス解析的残差平方和(SSR)の導入: 局所回帰処理における中間配列コピー、OLS回帰関数呼び出し、残差再計算の3重パスを完全排除し、単一ループ内で閉形式数式に基づき直接残差平方和を導出。局所回帰演算を約67%削減。
- スケール定数・対数回帰定数の事前構造体キャッシュ (
DfaScaleInfo): 全16スケールのボックスサイズ、正規方程式分母逆数、対数値等をOnInitで一括事前計算。バーごとの反復超越関数評価(MathExp,MathLog)を100%排除。 - 学術推奨最小ボックスサイズの適用: 有限長標本効果と自由度喪失による上方バイアス(Bryce & Sprague, 2012)を排除するため、
InpMinBoxSizeの下限・推奨値を 8\to10 に更新。 - 平滑化処理の堅牢化: 初回クリッピングに伴う未計算領域(
EMPTY_VALUE)への参照時における Super Smoother 平滑化ガード処理を追加。 - EA
iCustom呼び出し同期:Hybrid_DFA_EA.mq5における DFA ハンドル取得パラメータ順序・デフォルト値を新パラメータ体系に適合。
- 初回計算バー数のクリッピング制御: 入力パラメータ
[v1.3.0] - 2026-09-02
- DFA内部メモリの静的バッファ化 (
DFA.mq5):CalculateDfaAlphaAtBar内の動的ArrayResizeを全廃し、事前確保した静的ワーク配列を再利用。ヒープ断片化とキャッシュミスを解消し大幅に高速化。blockX[]静的整数列の初期化をOnInitに集約。
- 実弾運用向け注文執行レイヤーの強化 (
DFA_Common.mqh,Hybrid_DFA_EA.mq5):SYMBOL_FILLING_MODEビットマスクによる充填モード自動判定(DetectFillType)を実装。SYMBOL_TRADE_STOPS_LEVELおよび現在スプレッドを考慮した動的 SL/TP 距離ガード補正(AdjustStopDistance)を追加。SYMBOL_VOLUME_STEPの小数桁数に応じた動的ロット正規化(NormalizeLot)を実装。- 許容リスク額の算出基準を
ACCOUNT_BALANCEからACCOUNT_EQUITY(有効証拠金)に変更。
- シュミットトリガー方式レジーム状態遷移機械の導入 (
DFA_Common.mqh,Hybrid_DFA_EA.mq5):- レジーム判定にヒステリシス(粘り)を持たせ、境界値付近でのチャタリング(往復ビンタ)と不要な強制決済コストを防止。
- 上位足確定足タイムスタンプ同期の厳密化 (
Hybrid_DFA_EA.mq5):- 上位足 DFA / ATR のデータ参照時に
iTime(_Symbol, htf, 1)を指定し、未確定バー巻き込み(リペイント)を完全排除。
- 上位足 DFA / ATR のデータ参照時に
[v1.2.0] - 2026-08-30
- マルチタイムフレーム (MTF) & チャート同時描画サポート (
Hybrid_DFA_EA.mq5,DFA.mq5,DFA_Common.mqh):- DFA MTF ネイティブ描画:
DFA.mq5にInpTimeframeパラメータを追加し、上位足の計算結果を現在足チャート上にステップ状の波形として美しく同時描画するMT5ネイティブカスケード機構を実装。 - 自動上位足マッピング (
HTF_MODE_AUTO_NEXT): DFA(環境認識)および ATR(リスク管理・決済)において、取引足より1段階上の上位足(M1→M5, M5→M15, M15→M30, M30→H1, H1→H4, H4→D1, D1→W1, W1→MN)を自動適用。 - 3インジケータ完全同時表示: EAの描画ハンドルを現在足(
_Period)に統合し、バックテスト完了後のチャート上に「メイン: Dual ALMA」「サブ1: 上位足DFA」「サブ2: Smoothed RSI」の3つがすべて確実に同時描画されるよう最適化。 - 下位足の微細ノイズやダマシ損切りを排除し、大局的なレジームと十分なボラティリティバッファを確保。
- 直近確定足時刻(
bar1_time)を基準としたリペイント・ルックアヘッドフリーな安全データ取得ロジックを採用。
- DFA MTF ネイティブ描画:
[v1.1.0] - 2026-08-30
- DFA (
DFA.mq5):- 原著論文(Kantelhardt et al.)準拠の「双方向ボックス分割(Bidirectional DFA)」を実装し、端数データ切り捨てを完全解消。
- Super Smoother 2次低遅延平滑化フィルターを追加し、DFA Alpha の微細ジッターを除去。
DRAW_COLOR_LINEによる相場レジーム色分け(赤: レンジ / グレー: 中立 / 青: トレンド)を実装。- レベルライン(Low / 0.50 / High)連動の動的サブウィンドウ縮尺固定を実装。
- MQL5 公式推奨の 0=最古 インデックス設計(
ArraySetAsSeries(false))に全面刷新。
- Smoothed RSI (
SmoothedRSI.mq5):- 計算パイプラインを「生の価格からRSI算出
\rightarrowSuper Smoother平滑化」に修正し、トレンド時の 0/100 張り付き(飽和)バグを解消。 - MQL5 標準インデックス設計に刷新。
- 計算パイプラインを「生の価格からRSI算出
- Dual ALMA (
DualALMA.mq5):- 過去データ参照(
GetPrice(i - k))および最新バー最大加重の整合化により、過去価格が描画されるバグを完全解消。 - MQL5 標準インデックス設計に刷新。
- 過去データ参照(
- Hybrid DFA EA (
Hybrid_DFA_EA.mq5):- 同一戦略内での両建て(買い・売り同時保有)を禁止し、反対シグナル発生時のドテン決済を実装。
- レンジ戦略のエントリー判定を「ゾーン復帰・脱出クロス方式(明確な反転確定エントリー)」に最適化。
- シグナル検知時の詳細ログ出力(Alpha値、レジーム、オシレーター値)を追加。
- バックテスト完了後のチャート上インディケータ表示維持(
OnDeinit調整)。
[v1.0.0] - 2026-08-23
- 初回リリース
- DFA-Smoother ハイブリッド取引システムの基本アーキテクチャ実装
DFA.mq5,SmoothedRSI.mq5,DualALMA.mq5,Hybrid_DFA_EA.mq5の初期バージョン実装