私たちのファンページに参加してください
- ビュー:
- 19
- 評価:
- パブリッシュ済み:
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
概要
このエキスパートアドバイザーは、ダニエル・アレクサンドル・ブロック博士が著書『A Course on Systematic Trading with RMA』で提唱した相対移動平均(RMA) フレームワークに基づいて取引を行います。本論文で提案されている4つのクロス戦略すべてと、その「適応型クロスオーバー・エグジット」を実装しており、すべてのエントリーおよびエグジットは価格ではなく、分位空間で表現されます。
その前提は、価格のウィンドウは平均値としてよりも、分布として捉えた方がより多くの情報を提供するというものです。各バーにおいて、RMAはW本の終値からなるトレーリング・ウィンドウを取り、それらをそれぞれの平均値に対するリターンとして再表現し、最新の値がその分布内でどの位置にあるかを[0, 1]の範囲の分位数 として報告します。 したがって、本論文の目的は、分布の両極端の間でその順位が示す変動に乗ることであり、順位が最小値から最大値に向かって移動している間はロングポジションを、反転した際にはショートポジションを取る。 分位数は距離ではなく順位であるため、0.9のような閾値はあらゆる銘柄やボラティリティ環境において同じ意味を持ち、これがルールの汎用性を生み出している。
EA自体には数学的な処理は一切含まれていません。すべての処理は、EAがiCustom を通じて読み込み、各クローズバーでCopyBuffer を用いて読み取るコンパニオンインジケーター「RMA_Engine」内に実装されています。 この分離は意図的なものであり、2つの有益な特性を生み出しています。計算は1つしか行われないため、特定のバーにおける分位数が何であったかについて、EAとチャートが食い違うことはありません。また、ルールは注文に一切関与しないため、ブローカーを介さずにスクリプトによって過去のデータに対して再実行することが可能です。
取引の仕組み
4つのステップ。 この戦略は、ウィンドウ固有の分布の横断を利用します。 極値に達すると、そのサイドが確定します。 これがポジションの発生条件であり、その後、フラクタイルが横断方向に沿ってクアンタイル・ビンを横切った時点でエントリーが発動します。トリガーとなるのは極値そのものではなく、横切りであるため、エントリーは横断経路上のどこでも発動する可能性があります。名称は価格の動きを表しており、ポジションそのものを指すものではありません:
- ロング・クロス・リバース。 フラクタイルが最大値から離れ、最小値に向かって下降します。EAはショートポジション を取ることで、その下降トレンドに乗ります。
- ショート・クロス・リバース。 逆のケースです。フラクタイルが最低値から離れ、最高値に向かって上昇し、ロングポジションで 追従します。
- ロング・クロス・リバート。 最高値から始まった下降が、最低値に到達する前に反転して上昇に転じる。EAはこれを追って最高値方向へロングポジションを建てる。
- ショート・クロス・リバート。 安値から始まった上昇が、高値に達する前に反転して下落に転じ、EAはショートポジションで その下落を追う。
これら4つのパターンにより、部分的な動きが解決し得る両方向を網羅しています。すべてのオープンポジションは、名付けられた「レッグ」のいずれかに属しており、そのレッグによって、どの出口テストが適用されるか、また反転がどのような形になるかが決まります。したがって、同じフラクタイルの読み取り結果でも、あるポジションをクローズし、別のポジションをホールドすることになります。

1つの分布における4つのレッグ:リバース・レッグは、一方の極値からもう一方の極値へ向かう完全な横断を辿り、リバート・レッグは、横断が反対側の極値に到達する前に引き返す際に取られます。
適応型エグジット。 ここで、レジーム検出器が真価を発揮する。本論文では、2つの基本エグジットを定義し、それらの中から選択する3つ目のエグジットを定義している:
- 完全分布クロスオーバー。 横断が完了すると仮定するため、一方の側の決済は他方の側のエントリーと一致する。最大値から取ったショートポジションは、分位数が実際に最小値に達して反転した場合にのみ決済される。そして、その反転自体が反対方向への新たな取引の起点となるため、決済は直接その取引へと逆転する。
- 極値リバート・トリガー。 遠方の極値については何も仮定しない。ポジションは、乗っていた動きが停止したという最初の確かな証拠(逆方向への分位数区間の連続したステップ、中央値ゾーンへの再通過、あるいはそれ自体が十分な証拠となる単一の大きなステップなど)が確認された時点で決済される。
- 適応型クロスオーバー・エグジット。 論文で提唱されたルールであり、EAが実装しているもの:拡張および移行局面(部分的な通過が起きやすい局面)ではリバート・トリガーを使用し、収縮が確認された時点で完全なクロスオーバーに切り替える。リバート・レッグでは、あらゆる局面において常にリバート・トリガーを使用する。
ラン長検定は、ノイズによってリバートトリガーが作動するのを防ぐ役割を果たす。分位数が同じ方向に動き続けている間は、符号付きビンのステップが蓄積され、方向が変わるとリセットされるため、「2ビン分後退」とは、単なる一時停止ではなく、トレンドが実際に反転したことを意味する。
安全退出。 いずれの戦略による退出の前段階には、逆方向への動きのチェックが設けられています。平均回帰ポジションは、その仕組み上、しばらくの間は「オフサイド」の状態にあるため、「オフサイド」であること自体は退出の判定基準にはなり得ません。真の警告サインは、「オフサイド」の状態にありながら、 フラクタイルがさらに「オフサイド」へと踏み込んでいくのを確認することです。 これはまさに、中央値の反対側で低いD_k 値が示す状況であり、これは「最小利益」設定を完全に無視する唯一の出口条件です。なぜなら、これは目標利益の確定を目指すのではなく、すでにポジションに不利な方向に転じたトレンドへの追従を止めることを目的としているからです。
損失時にこのシグナルが発動すると、フラクタイルが中央値を再び超えるまで、同じ側での再エントリーもブロックされる。これにより、戦略は市場に対して同じ損失トレードを直ちに繰り返すことを防ぐ。 その時点でレンジが拡大している場合、EAは逆に反対 側でポジションを取ります。これは、失敗し続ける平均回帰シグナルは、より良い価格を示すものではなく、トレンドの証拠であるという理屈に基づいています。これら2つのトレンドフォローの段階こそが、このシステムにおいて唯一非対称な部分です。
推奨設定
| 設定 | 推奨値 | 備考 |
|---|---|---|
| 銘柄 | EURUSD | 開発およびテスト用の銘柄です。フラクタイル・スケールは自己正規化されるため、再調整を行うことなく他の銘柄にもルールを適用できますが、以下の設定は本銘柄でのみテストされています。 |
| チャートの時間足 | H2 | テストの時間足。ウィンドウはバー単位で測定されるため、同じW値でより短い時間足を選択すると、単に市場のより短い期間を表すことになります。H2における平均保有期間はおよそ1日でした。 |
| 口座タイプ | ネッティングまたはヘッジ | このEAは一度に最大1つのポジションしか保有せず、決済と再建によってポジションを反転させるため、どちらの口座タイプでも動作します。 |
| 前提条件 | RMA_Engineをコンパイルする必要があります | EAをアタッチする前に、Indicators\RMA\RMA_Engine.mq5をコンパイルしてください。.ex5ファイルが存在しない場合、iCustomの呼び出しが失敗し、ファイル名を指定したメッセージが表示されてEAの初期化が行われません。 |
| 履歴データが必要 | W およびレジーム・ルックバック | エンジンがまだ回答できないバーではEAが停止するため、履歴が短い場合は誤ったシグナルを生成するのではなく、シグナルが得られなくなります。 |
主な特徴
論文に忠実
- 4つのクロス戦略すべて(2つのリバース・レッグと2つのリバート・レッグ)が実装されており、単純化されたペアではありません。
- 「適応型クロスオーバー終了」は、論文で規定されている通り、レジームごとに「フル分布クロスオーバー」と「極値リバートトリガー」を切り替えます。
- 分位数は、論文の付録の定義、つまりウィンドウの単純な経験的累積分布関数(CDF)です。論文の本文と付録の内容が一致しない場合は、付録を優先し、その不一致は黙って修正するのではなく、ソースコードに明記されています。
1か所での1回の計算
- ルールが読み取るすべての数値は、CopyBufferを介してRMA_Engineから取得されるため、チャートと取引がずれることはありません。同期を保つための数学的処理の二重実装は存在しません。
- ルールは、OrderSendを呼び出したり、ポジションを読み取ったり、出力を行ったりすることのないクラス内に実装されています。このクラスには10フィールドからなるバー構造体が渡され、指示を返します。これにより、ブローカーなしで戦略をテストすることが可能になります。
- 注文の発注、帳簿管理、リスク管理は別のクラスに実装されており、同じ理由からルールとは分離されています。
最終的なデータのみに基づく意思決定
- バッファは位置1から読み込まれ、位置0からは決して読み込まれません。バー0はまだ形成中であり、すべてのルールは終値が確定したバーを対象として記述されています。
- ウォームアップバー、履歴のギャップ、あるいはまだ計算が完了していないエンジンなど、いずれの場合も結果は同じです。つまり、このバーについては決定を行いません。読み取り値が欠落していることからは、何も推測されません。
- 口座が開設されていたかどうかは、何らかの処理が行われる前に確定するため、バーはエグジットバーかエントリーバーのいずれかであり、両方を兼ねることはありません。
実際のブローカーを通過した約定
- 「クローズ・アンド・リバース」は、反対の取引が実行されるべき瞬間にブローカーにポジションを解消するよう要求するものであり、ブローカーは必ずしも最初の試行でこれに応じるわけではありません。拒否されたクローズ注文は破棄されるのではなく、約定するまで毎ティック再試行され、依然として執行中のポジションの上にリバース注文が積み重なることは決してありません。
- エントリーはリクエストされた価格ではなく、実際に約定した価格に基づいて計上されるため、スリッページがエグジットルールや最適化スコアに反映されるピップ値に影響を及ぼすことはありません。
- ロットサイズは、銘柄の最小値、最大値、およびステップ値に制限されます。
- オープンレッグはグローバル変数に保存されるため、ターミナルの再起動後も存続するポジションは、孤立したポジションとしてではなく、実際の取引として再開されます。
運用上の制御
- ピップ単位での固定ストップロスおよびテイクプロフィット(オプション)、深夜にまたがる取引期間を適切に処理するセッションフィルター(オプション)、およびセッション終了時のポジション決済(オプション)。これらはフレームワークの一部ではなく、デプロイメント時の制御機能です。本論文はシグナルに焦点を当てており、リスク管理の枠組みは運用者に委ねられています。
- オプションのチャート上ステータスブロックには、現在の分位数、レジーム、レッグが表示され、エントリーおよびエグジットマーカーに加え、すべての拒否とその理由をログに記録する詳細モードが備わっています。どちらもデフォルトではオフになっているため、EAは静かに取引を行います。
- 取引回数と勝率の平方根で重み付けされたネットピップスを返すカスタム最適化基準を採用しています。これにより、同じ純利益であっても、40回の取引よりも400回の取引の方が上位にランクされ、取引回数が結果に過度に影響することを防ぎます。10回未満の取引は0点となります。
バックテスト結果
EURUSD、H2、2025年5月1日から2026年7月26日までの約14ヶ月間、100%リアルティック、10,000 USDの証拠金、レバレッジ1:500で1回のバックテストを実施しました。
| 評価指標 | 値 |
|---|---|
| 純利益合計 | 10,000の証拠金で362.51 |
| 取引総数 | 138 |
| 利益率 | 1.15 |
| シャープレシオ | 0.82 |
| 最大エクイティ・ドローダウン | 463.87 (4.52%) |
| 利益が出た取引 | 46.38% |
| 平均利益/平均損失 | 42.80 / -30.82 |
| ロング/ショートの勝率 | 46.58% / 46.15% |
勝率は50%をわずかに下回っていますが、平均利益が平均損失を上回っているため、システムは利益を維持しています。これは、反転トレンドを十分に伸ばす「平均回帰戦略」のペイオフプロファイルに合致しています。ロングとショートのパフォーマンスはほぼ同一であり、これは設計上対称的なフレームワークから予想される結果です。

テスト期間中のエクイティ曲線:単発の幸運な上昇ではなく、緩やかなドローダウンを伴う着実な上昇が見られます。

この実行に関するストラテジーテスターの完全なレポート。設定、取引統計、残高およびエクイティ曲線が表示されています。
インストールとファイル構成
1つのエキスパートアドバイザー、1つの必須インジケーター、1つのオプションパネル、および7つのヘッダーファイルで構成されています。配置順序が重要です。EAは相対パス「RMA\RMA_Engine」でエンジンを読み込み、ヘッダーファイルは「<RMA\...>」 としてインクルードされるため、各ファイルはそれぞれのRMAサブフォルダ 内に配置する必要があります。EAよりも先にインジケーターをコンパイルしてください。
| ファイル | 役割 | 説明 |
|---|---|---|
| Experts\RMA\RMA.mq5 | オーケストレーター | すべての入力、iCustom呼び出し、バーごとのエンジン状態の読み取り、およびシグナルエンジン、トレードマネージャー、表示の動作順序。独自の戦略ロジックは含まれていません。 |
| Indicators\RMA\RMA_Engine.mq5 | 必須のインジケーター | すべてのRMAシリーズを計算し、19個のバッファをパブリッシュします。これがないと、EAは初期化されません。 |
| Indicators\RMA\RMA_Panel.mq5 | オプションのパネル | エンジンの0~1軸では読み取れないシリーズについて、一連のエンジンバッファを独自のスケールを持つサブウィンドウにミラーリングします。表示専用です。 |
| Include\RMA\RmaTypes.mqh | 共通用語集 | レジームおよびクロスステートの列挙型とバッファマップ。EA、エンジン、およびパネルが共通して使用する唯一の場所。 |
| Include\RMA\RmaCore.mqh | 数値コア | SMA、RMAファミリー、正規化リターン分布、および分位数関数。 |
| Include\RMA\RegimeDetector.mqh | レジーム分類 | 拡大、収縮、および2つの遷移状態。これらは、傾き、zスコア、および変動係数によって裏付けられた相対極値比から導出される。これがエグジットルールの選択を行うものである。 |
| Include\RMA\AdverseMonitor.mqh | 方向性の一貫性 | d_med_w(中央値を中心とした分位数)および D_k(直近のステップにおける上昇割合)。安全退出の判断材料となります。 |
| Include\RMA\SignalEngine.mqh | ルール | アーム、4つのエントリーレッグ、3つのエグジットおよびそれら間の適応的な切り替え、セーフティ・エグジット、再エントリー・ブロック、および反転。1バーを受け取り、指示を返し、それ以外は一切操作しない。 |
| Include\RMA\TradeManager.mqh | 実行 | 注文の発注、ロットのクランプ、ストップおよびターゲット、ポジションの同期、再試行による決済、セッション制御、レッグの保持、ピップの集計、および最適化スコア。 |
| Include\RMA\RmaDisplay.mqh | チャート上のステータス | ステータスブロック、およびエントリー・エグジットマーカー。ラベルは一度作成され、その場で更新されるため、オブジェクトの重複や再描画によるちらつきはありません。 |
入力パラメータ
9つの入力グループ。最初の2つはエンジンに転送され、エンジンの計算内容を変更します。残りのグループは、ルール、注文、および表示を制御します。
| グループ | 主要なパラメータ | デフォルト値 |
|---|---|---|
| ウィンドウ | InpWindowSize、InpSmoothingPeriod | 106 バー、10 |
| レジーム検出 | InpEpsilonLow、InpEpsilonHigh、InpSlopeThreshold、InpRegimeLookback、InpVariationRatioLow、InpZScoreExpansion、InpRangeHistoryLookback | 0.15、3.0、0.0001、20、0.1、1.0、100 |
| 不利な変動 | InpUseAdverseExit、InpAdverseLookback、InpAdverseThresholdDown、InpAdverseThresholdUp | true, 10 バー, 0.3, 0.7 |
| エントリー | InpEntryUpperThreshold、InpEntryLowerThreshold、InpEntryMinDiff、InpCloseThreshold | 0.9、0.1、0.0(どのターンでも可)、0.1 |
| 決済 | InpExitTargetUpper、InpExitTargetLower、InpExitProfitMinPips | 0.0、0.0(両方ともゼロの場合、極値ロジックが選択されます)、0.0(オフ) |
| 取引 | InpLotSize、InpMagicNumber、InpTradeComment | 0.1 ロット、20251230、「RMA」 |
| リスク | InpStopLossPips、InpTakeProfitPips、InpUseTimeFilter、InpStartHour、InpEndHour、InpEODClosePositions | 0 (なし)、0 (なし)、false、8、20、false |
| チャート上 | InpShowDisplay、InpAttachEngine、InpShowPanels、InpPanelAdverse、InpPanelRmaValues、InpShowRegimeBand、InpVerbose | デフォルトではすべてオフになっているため、EAはバックグラウンドで取引を行います |
研究の根拠
実装の根拠は以下の通りです:
- Daniel Alexandre Bloch, 『A Course on Systematic Trading with RMA』(SSRNで 公開中)。
本論文は、フレームワークとその仕組み、すなわちフラクタイル表現、4つのクロス戦略、およびレジームに応じてそれらを選択する「適応型クロスオーバー・エグジット」について論じています。ただし、手元のバージョンでは「結果」のセクションが今後の課題として残されているため、実績データは提供されていません。 本実装の価値は、あらゆる金融商品において同一の意味を持つ尺度で表現された戦略であり、論文の意図通り、他の銘柄や時間枠、あるいは資産ごとに調整されたウィンドウを用いた独自のテストを行うための基盤を提供することにあります。
関連記事では、数学的導出を行い、各モジュールの実装手順を解説し、4つの構成要素とエグジットロジックについて詳細に説明しています:『MQL5におけるブロッホの相対移動平均(RMA)フレームワークの実装』。
MetaQuotes Ltdによって英語から翻訳されました。
元のコード: https://www.mql5.com/en/code/75473
Session Scalping Zones
MetaTrader 5用のセッションベースのスキャルピングインジケーターです。アジアセッションの高値と安値を自動的にマークし、ロンドン市場の寄り付き時に価格がそれらの水準をブレイクするか、再テストした際にスキャルピングシグナルを生成します。 このインジケーターは、動的なセッションレンジを描画し、アラートやプッシュ通知を送信するほか、オプションでトレンド、出来高、時間のフィルターも利用可能です。あらゆる銘柄のM1、M5、M15チャートで動作します。
Trading Panel EA
「Pro Manager」は、プロップファームやプロのトレーダー向けに開発されたオールインワンのMT5取引アシスタントです。ブレークイーブン、平均TP、マジックナンバー管理、オートグリッドといった強力なツールを活用することで、取引の執行を迅速化し、ポジション管理をよりスマートに行い、リスクを効率的にコントロールし、日々の取引業務を自動化できます。
Adaptive Moving Average (AMA)
適応移動平均線は、ノイズの影響を受けにくい移動平均線を作るときに使われ、トレンドを検知する際にラグが最小に抑えられるという特徴を持ちます。
Accelerator Oscillator (AC)
アクセルレーション/デセレレーションインジケーター(AC)は現在の市場を動かす力の加速と減速を測ります。