無料でロボットをダウンロードする方法を見る
Twitter上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
スクリプトを気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
インディケータ

Relative Moving Average Indicator - MetaTrader 5のためのインディケータ

ビュー:
19
評価:
(2)
パブリッシュ済み:
MQL5フリーランス このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

概要

これは、ダニエル・アレクサンドル・ブロック博士が著書『A Course on Systematic Trading with RMA』で紹介した相対移動平均(RMA) フレームワークを、MetaTrader 5に忠実に移植したものです。 従来の移動平均は、価格のウィンドウを1つの平滑化された数値に集約します。これにより水準はわかりますが、その希少性はわかりません。つまり、高値での引けは周囲の価格から大きく乖離している可能性もあれば、高値であってもウィンドウ内ではごく平凡な値である可能性もあるのです。 RMAは、この2つ目の疑問に答えます。RMAは、トレーリング・ウィンドウを小さな分布として扱い、その中の現在の価格をランク付けし、そのランクを[0, 1] のスケールで報告します。このスケールは、あらゆる銘柄およびあらゆるボラティリティ環境において同じ意味を持ちます。

注: これは、一部のチャート作成プラットフォームが提供する「RMA」(ワイルダーの平滑化、EMAの変種)とは異なります。頭文字は同じですが、まったく別の概念です。ここでいうRMAとは、ブロッホの構築法、すなわち、移動平均を基準として測定された価格統計量を、正規化されたリターンの分布に投影したものを指します。

このフレームワークは3つの層から構成されており、コードもそれを正確に反映しています:

  • W 個の終値からなるトレーリング・ウィンドウのSMA を、局所的な平衡点として扱い、ゼロに固定する。
  • RMAファミリー:各ウィンドウのランドマークが、その均衡点からどれだけ逸脱しているかを、純粋な比率sma / x - 1 として表したもので、最終終値、最初の終値、中央の終値、およびウィンドウの最小値と最大値で評価される。これらは比率であるため、スケールに依存せず、銘柄間で比較可能である。
  • フラクタイルは、ウィンドウを正規化リターン(終値 / SMA - 1)として再表現し、その分布内における現在値、最小値、最大値の順位を決定する。これは論文の付録の定義からそのまま引用した単純な経験的累積分布関数(CDF)であり、f_wは 下流のすべての処理が実際に基づいて取引を行う時系列である。

RMAの構築:価格ウィンドウ→SMA→正規分布→分位点

構築方法:終値のスライディングウィンドウがSMAとなり、終値はそのSMAを中心とした正規化リターンの分布として再表現され、その分布内における現在の価格の順位が、[0, 1]スケール上のフラクタイルとなる。

これらに加え、エンジンには2つの派生指標が組み込まれている。レジーム検出器 は、論文の「相対極値比率(Relative Extremum Ratios)」を用い、最小二乗法による傾き、zスコア、および変動係数によって裏付けを行い、正規化リターンの広がりを「拡大」「縮小」「移行中」の3つに分類する。逆行モニタは、中央値を中心に再調整された分位数であるd_med_wと、直近のバー間の変動のうち上昇した割合を示すD_k を出力します。D_kは 方向性の一貫性を示す指標であり、「この動きは逆方向に向かっている」という判断を、単なる主観ではなく正確なものにします。

2つのプログラムが含まれています。RMA_Engineは すべての系列を計算し、19個すべてをバッファとして出力します。これにより、エキスパートアドバイザーや他のインジケーターは、数学的な処理を再実装して同期がずれることなく、チャート上で正確な数値を読み取ることができます。RMA_Panelは 一切計算を行いません: チャートにすでにアタッチされているエンジンを検出し、そのバッファ群を専用のサブウィンドウにミラーリングするだけです。これは、RMAファミリーがパーセントの分数単位で測定され、d_med_wがゼロを中心にしていることから、どちらもエンジンの0~1軸上では読み取れないためです。


エンジンが描画するもの

エンジンは、縦軸が [0, 1] に固定された別のウィンドウを開き、6つのプロットを描画します:

プロット
外観
説明
領域
すべての要素の背後に、全高にわたる色付き帯が表示される
拡大は緑、収縮は赤、拡大が反転しつつある場合は琥珀色、収縮が突破しつつある場合は青。レジームが未定の間は何も描かれないため、ウォームアップの冒頭で「まだ答えが出ていない」ことを示すような色の広がりが生じることはない。
f_w
太い青線
直近の終値の分位数:最新の正規化リターンが、そのウィンドウ内でどの位置にあるかを示す。これが主要な系列である。
f_min / f_max
赤と緑の点線
ウィンドウの最小値および最大値の分位数。f_wが通過するエンベロープの下限および上限。
alpha_lo_mean / alpha_hi_mean
紫色とオレンジ色の線
平滑化された分位水準:f_w およびその補数に対する EMA(指数移動平均)であり、f_w のスパイクがスパイクとして認識されるための、より緩やかな背景を提供します。

2つのエントリー閾値と中央値の位置に、3本の水平ガイド線が引かれている。これらはハードコーディングされたものではなく、関連するエキスパートアドバイザーに与えられるのと同じ入力データから生成されるため、閾値を再調整するとガイド線もそれに合わせて移動し、チャートがルールと静かに矛盾した状態になることを防ぐ。

読み方。 f_wが上側のガイドラインに接している場合、現在の終値はそのウィンドウ内で観測されたすべての値の最高値にあり、これが下降トレンドの開始点となります。f_wが下側のガイドラインにある場合は、その逆のケースとなります。 中央値は、トレンドが依然として右側にある必要がある水準であり、これを越えた時点で自然な決済となります。色付きの帯はこの読み取りに文脈を与えます。なぜなら、本手法のリズムは、拡大フェーズの開始時にポジションを建て、収縮フェーズの間に決済するというものだからです。


推奨設定

設定
推奨値
備考
銘柄
任意
分位数スケールは自己正規化されるため、読み取り値を意味のあるものにするために、シンボルごとのキャリブレーションは必要ありません。開発および以下のスクリーンショットでは、EURUSDを使用しています。
時間足
M30~H4
どの時間足でも動作します。ウィンドウはバー単位で測定されるため、同じW値の場合、時間足が短ければ短いほど、より短い期間の相場を表すことになります。
ウィンドウサイズ(W)
106バー
デフォルト値です。本論文では、ウィンドウは資産ごとに調整されることを想定しているため、これは推奨値というよりは出発点となります。
必要な履歴期間
W + レジームのルックバックバー数
デフォルト設定では126バー。各プロットは、セット内で最も長いウォームアップ期間の時点ではなく、そのモジュールが最初に回答できる時点から開始されるため、レジームバンドよりも先にフラクタイルが表示されます。


主な特徴

論文に忠実

  • 分位数は論文の付録における定義、f_i = (1 / |W_i|) * sum_j I( W_ij <= v_i ) であり、記述通りに実装されている。 論文の本文と付録の内容が一致しない場合は、付録の定義を優先し、その不一致は黙って修正するのではなく、ソースコード内に記録されています。
  • レジームの分類は相対極値比(Relative Extremum Ratios)に従っており、収縮は最も厳格な解釈であり裏付けが必要であるため、最初にテストされます。一方、拡張は意図的に到達しやすく設定されています。
  • ソースコードで要求されていない平滑化、閾値、フィルタは一切追加されていない。

他のプログラムによる読み取りに対応

  • 19 シリーズすべてがインジケータバッファとして公開されており、6 つはプロット用、13 つは計算専用であるため、EA はチャートに表示されているのと同じ数値を読み取ることができ、両者に不一致が生じることは決してありません。
  • バッファマップは単一の共有ヘッダー内に存在するため、エンジン、パネル、およびあらゆる利用者は、コンパイルエラーによる警告もなく互いに乖離することなく、共通の語彙で通信できます。
  • 数学的な処理はすべてヘッダーのみのクラス内にあり、チャートや注文への依存がないため、同じコードでスクリプトやテストハーネスを駆動することができ、スタブ化する必要は一切ありません。

正確な増分再計算

  • 各パスでは、prev_calculated ではなく、prev_calculated-1 から再計算が行われます。 そのインデックスのバーは前回の呼び出し時にはまだ形成中で、その終値が確定したのは今になってからです。これをそのままにしておくと、それに依存するすべてのシリーズに半完成の値が固定されてしまい、バー間の分位数の差は、2つの未完成の数値間の差となってしまいます。
  • ウォームアップ中のバーはゼロではなくEMPTY_VALUE を 保持するため、ウォームアップの途中でデータを取得する消費者は、妥当な数値ではなく「欠落」と認識することになります。
  • レジームの分類は遷移帯内ではパス依存であるため、1つの連続したフィールドではなくバーごとの履歴が保持されます。これにより、増分処理では前のバーからチェーンを再開することが可能になります。

2番目の軸を借用するパネル

  • エンジンは要求されたパネルを自動的に開き、まずチャートをチェックするため、それらをすでに含むテンプレートや、入力変更後の再初期化によって、最初のコピーの後ろに2つ目のコピーが積み重なることはありません。パネルはエンジンとともに削除されますが、実際に削除された場合のみであるため、時間枠を切り替えても、離脱したときのレイアウトに戻ります。
  • パネルは独自のハンドルを構築するのではなく、チャート上の短縮名と照合することでエンジンを特定するため、実際の計算結果の横に、パラメータ設定が異なる2つ目の計算結果が並んで表示されるような分岐は決して発生しません。


スクリーンショット

EURUSDの30分足チャートにおける、フラクタイル、アルファバンド、レジーム・バックドロップを表示したRMA_Engineオシレーターウィンドウ

EURUSD、M30のエンジンウィンドウ:色分けされたレジームの背景の上に、エンベロープと平滑化された分位数平均を表示したf_w。

EURUSDのM30チャートにおけるD_kおよびd_med_wを用いたアドバース・パネル

逆張りパネル:ゼロを中心に配置された d_med_w と、その上に方向性一貫性を示す D_k が表示されています。

EURUSDのM30チャートにおけるrma_w、min、maxを表示するRMAファミリー・パススルー・パネル

RMAファミリーのパネル:rma_wには独自のスケールでウィンドウの最小値と最大値が表示され、エンベロープは現在の価格が通過する経路を示しています。


インストールとファイル構成

2つのインジケーターと4つのヘッダーファイル。配置が重要です。エンジンは相対パス「RMA\RMA_Panel」でパネルを読み込み、ヘッダーファイルは「<RMA\...>」 としてインクルードされるため、両者はRMAサブフォルダ内に 配置する必要があります。

ファイル
役割
説明
Indicators\RMA\RMA_Engine.mq5
メインインジケーター
ライブバー上で3つのモジュールを実行し、19個すべてのバッファをバインドし、6つのプロットとレジームバンドを描画し、パネルを開きます。独自の計算処理は一切行いません。
Indicators\RMA\RMA_Panel.mq5
パススルーパネル
チャート上にエンジンを配置し、そのバッファの1グループを、独自のスケールを持つサブウィンドウにミラー表示します。2つのモードがあります:逆行相場(D_k、d_med_w)とRMAファミリー(rma_w、rma_min、rma_max)。
Include\RMA\RmaTypes.mqh
共有語彙
レジームおよびクロスステートの列挙型、バッファマップ、プロット数およびパレット数。エンジン、パネル、およびすべてのコンシューマーが共通して使用する部分です。
Include\RMA\RmaCore.mqh
数値コア
SMA、5つのRMAファミリー、正規化リターン分布、分位数関数、ウィンドウ範囲、および平滑化されたアルファ境界。
Include\RMA\RegimeDetector.mqh
レジーム分類
拡大、収縮、および2つの遷移状態。これらは、傾き、zスコア、および変動係数によって裏付けられた極値比エンベロープから導出される。
Include\RMA\AdverseMonitor.mqh
方向の一貫性
d_med_w(中央値を基準とした分位数)および D_k(直近のバー間ステップにおける上昇分の割合)。


自身のコードからバッファを読み込む

RMA\RMA_Engine に対してiCustom を使用してハンドルを取得し、CopyBuffer を使用して以下の任意のインデックスを読み取ります。インデックス 0 から 6 はプロットされる系列、7 から 18 は計算専用ですが、19 個すべてを読み取ることができます。

インデックス
シリーズ
意味
0, 1
レジームバンド、色インデックス
背景の高さとそのパレットスロット。数値は含まれず、色のみを表す。
2
f_w
ウィンドウ内の直近の正規化リターンの分位数([0, 1]の範囲)。主要な系列。
3, 4
f_min, f_max
ウィンドウの最小値および最大値の分位数。
5, 6
alpha_lo_mean, alpha_hi_mean
アルファの下限および上限のEMA。
7
sma
価格単位でのウィンドウの単純移動平均。
8~12
rma_w、rma_1、rma_mid、rma_min、rma_max
RMAファミリー:smaを、直近、最初、中間、最小、最大の終値で割り、1を引いた値。
13
range
ウィンドウの正規化リターンのばらつき。レジーム検出器が読み取る値。
14、15
alpha_lo, alpha_hi
f_w が占める生分位点レベルとその補数。
16
レジーム
レジームの番号をdouble型で表したもの:0=拡大、1=収縮、2=ロールオーバー、3=ブレイクアウト、4=不明。
17, 18
D_k, d_med_w
方向一貫性と中央値中心の分位数。
注意: インジケータ内の各入力グループは、たとえ値が設定されていなくても、iCustom呼び出し においてパラメータスロットを占有します。1つを省略すると、残りのパラメータが1つずつ上にずれてしまい、誤った数値で構成されたインジケータが読み込まれ、何の警告もなく失敗します。グループを含め、宣言された順序とまったく同じ順序で入力を渡してください。


入力パラメータ

グループ
パラメータ
デフォルト値
ウィンドウ
InpWindowSize、InpSmoothingPeriod
106 バー、10
レジーム検出
InpEpsilonLow、InpEpsilonHigh、InpSlopeThreshold、InpRegimeLookback、InpVariationRatioLow、InpZScoreExpansion、InpRangeHistoryLookback
0.15、3.0、0.0001、20、0.1、1.0、100
逆方向の動き
InpAdverseLookback
10 バー
基準線
InpEntryUpperThreshold、InpEntryLowerThreshold
0.9, 0.1
パネル
InpAutoAttachPanels、InpPanelAdverse、InpPanelRmaValues、InpAdverseThresholdDown、InpAdverseThresholdUp
true、true、false、0.3、0.7
レジームの背景
InpShowRegimeBand およびレジームごとに 1 色
true、濃い緑 / 赤 / 琥珀色 / 青
注: 非視覚的なストラテジーテスターの実行では、パネルは自動的にスキップされるため、描画するチャートがない場所には何も描画されません。


研究の根拠

実装は以下の文献に基づいている:

  • Daniel Alexandre Bloch著『A Course on Systematic Trading with RMA』(SSRN で公開中)。

出典元そのものから指摘されている点として、明確に述べておくべき注意点があります。すなわち、この論文の「結果」のセクションは「今後の課題」として残されているのです。この論文は、実証的な実績ではなく、フレームワークとその仕組みを提供するものです。 このインジケーターが提供するのは、あらゆる場所で同じ意味を持つ尺度で記述された市場の状態であり、これは出典から受け継いだ検証済みの優位性というよりは、独自のテストを行うための基礎となります。

関連論文では、数学的な背景と各モジュールの実装について解説し、これらのバッファを用いて取引を行うエキスパートアドバイザーを構築している:『MQL5におけるブロッホの相対移動平均(RMA)フレームワークの実装』。

MetaQuotes Ltdによって英語から翻訳されました。
元のコード: https://www.mql5.com/en/code/75472

SpreadAudit - M1の取引履歴に基づくブローカーの実質スプレッド SpreadAudit - M1の取引履歴に基づくブローカーの実質スプレッド

このスクリプトは、M1バーの「spread」フィールドからご利用のブローカーの実際のスプレッドを収集し、中央値、 90パーセンタイルおよび99パーセンタイルを、価格単位、ポイント、ATRの割合で表示し、さらに1時間ごとの平均スプレッドと最大スプレッドをCSVファイルとして出力します。 これは、頭の中で想定した「典型的な」スプレッドではなく、自身の口座における実際のコストに基づいて戦略をテストするために必要です。

Clock (Spread) Clock (Spread)

このインジケーターの機能 「Clock (Spread).mq5」は、MetaTrader 5用のチャートインジケーターであり、チャートの隅に以下の情報を表示する小さなテキストラベルを表示します: 現在のローソク足が引けるまでのカウントダウンタイマー(時間枠に応じてHH:MM:SSまたはMM:SSの形式で表示) 現在のスプレッド(アスク - ビッド、ポイント単位)を、タイマーの横の括弧内に表示します。 変更履歴: バージョン 2.20: - スプレッドの色が、方向に応じて動的に変化するようになりました(緑=拡大、赤=縮小) - スプレッドの色を設定可能な入力項目を追加しました

Trading Panel EA Trading Panel EA

「Pro Manager」は、プロップファームやプロのトレーダー向けに開発されたオールインワンのMT5取引アシスタントです。ブレークイーブン、平均TP、マジックナンバー管理、オートグリッドといった強力なツールを活用することで、取引の執行を迅速化し、ポジション管理をよりスマートに行い、リスクを効率的にコントロールし、日々の取引業務を自動化できます。

Accelerator Oscillator (AC) Accelerator Oscillator (AC)

アクセルレーション/デセレレーションインジケーター(AC)は現在の市場を動かす力の加速と減速を測ります。