記事「MetaTrader 5でL1トレンドフィルタリングを適用する」についてのディスカッション

 

新しい記事「MetaTrader 5でL1トレンドフィルタリングを適用する」はパブリッシュされました:

MetaTrader 5におけるL1トレンドフィルタリングの実践的な応用について、その数理的基礎とMQL5プログラムでの使用方法の両面から解説しています。L1フィルタは、価格ノイズを低減しつつ市場構造の本質を保持する、区分線形トレンドの抽出を可能にします。本研究では、パラメータスケーリング、トレンド推定の挙動、および本手法のアルゴリズム取引戦略への統合について分析しています。実験結果は、L1トレンドフィルタリングがシグナルの安定性、取引タイミング、ならびにトレードシステム全体のロバスト性を向上させることを示しています。

金融時系列は、高いノイズレベル、頻繁な外れ値、そして変化する市場レジームによって特徴づけられます。実務的なトレードシステムにおいて、これは次のように明確かつ定量的に現れます。すなわち、従来の「平滑化」フィルタ(移動平均、HPフィルタなど)は遅延が大きく、傾き変化のタイミングを曖昧にし、局所的な調整を反転シグナルとして誤認することが多く、その結果として誤ったエントリーやエグジットが増加し、プロフィットファクターの低下やドローダウンの増大を招きます。さらに、正則化パラメータλの選択は通常、手作業によるチューニングに依存しており、銘柄、時間軸、ヒストリ長に対して十分に汎用化されません。

本記事では、これらの問題に対する実務的解としてL1トレンドフィルタリングを提案します。すなわち、二階差分に対するL1正則化を用いた最適化により、明示的なブレークポイント(変化点)を持つ区分線形近似が自動的に得られます。本手法の主要な利点は、ブレークポイントをレジーム変化として明確に解釈できる点、また、λmaxを基準として正則化スケールを定義でき、相対形式のパラメータλ = coef · λmaxによって統一的に調整できる点にあります。さらに、MQL5での実装に適した線形計算量であることも重要な特徴です。

理論説明に加え、実務へ直接適用できる完全なワークフローも提示します。すなわち、λmaxおよびL1トレンドの計算手法、トレンド・傾き・傾き符号の3種類のインジケータ、7種類のL1トレンドベースのボラティリティ指標、エキスパートアドバイザー(EA)への統合方法、そして4種類のフィルタリングモード、バランス/エクイティ出力、可視化を含む再現可能なテストプロトコルを提示します。


作者: MetaQuotes

 
MetaQuotes :

記事「MetaTrader 5でL1トレンドフィルターを使う」が 掲載されました:

著者:MetaQuotes

MetaQuotesさん、素晴らしいです。スタンフォード大学のスティーブン・ボイド教授と彼の伝説的な時系列研究がMQL5に登場しました。

 
cemal #:
スタンフォード大学のスティーブン・ボイド教授と彼のmql5における伝説的な時系列の発見。

ありがとう。この方法には境界問題がないので、その応用は取引に役立つかもしれません。

記事ができた後、最良の方法はトレンドの修正時にボリュームを追加することであることが判明しました(この瞬間は記事で考慮されていません)、ここのExpert Advisorsを参照してください:MAMACDADXEMA

トレンド修正時に出来高を追加するExpert Advisors:

MovingAverageFilteredL1-Add.mq5

MACDFilteredL1-Add.mq5

Пример применения L1-фильтра для удаления шума в изображениях
Пример применения L1-фильтра для удаления шума в изображениях
  • 2026.04.10
  • www.mql5.com
Настройки тестирования Параметры тестирования без фильтров Параметры тестирования с фильтром закрытия сделок L1 Close Filter Стратегия с фильтром закрытия L1 Close Filter Индикаторы тренда на базе L1 Trend Filter
 

スクリプトは、異なるλ(λmax単位でλ_factors = {1.0,0.8,0.5,0.2,0.1,0.01,0.001}として定義)に対するL1トレンドフィルタリングを示します;

https://forge.mql5.io/quantum/L1Trend の他の例を参照。

L1Trend
L1Trend
  • quantum
  • forge.mql5.io
Examples from the article "Applying L1 Trend Filtering in MetaTrader 5"
ファイル:
 

こんな感じだ:


 
Renat Akhtyamov #:

こんな感じだ:

トレンドへの分割は正則化パラメータλに大きく依存し、λが小さいほど、より短いトレンドを捉えることができる。
考慮した例では、λ=0.2*λ_maxの単位でλの固定値を使用した。λ_max単位での計算は、部分的にデータに適応することができます。lambda_max の値自体は、系列の形状(相対スプレッド)、すなわちボラティリティに依存する。

トレンドにはさまざまなフェーズとライフサイクルがあることを念頭に置く必要があります。したがって、現在のトレンドに適応するための何らかのメカニズムが必要である。すなわち、何らかの方法でラムダを管理し、最適なトレンドの分割を見つけることである。


最良の結果は理想的なトレンド市場であるべきで、その例は次のとおりである: EURUSD, 2025, H1 (the best parameters MovingAverage period=61).

ユーロドル

テスター・オプション

テスターパラメーター

フィルターなしのテスター結果

L1終値フィルター

L1クローズフィルター

ここでは、エグジットフィルターがトレンドエリアでの利益を増加させるのに役立っていることがわかる。


同じストラテジーのバリエーションで、修正時にポジションを追加したもの:

テスターオプション

テスターオプション ポジション追加

追加なし:

追加あり:



また、平坦な市場区間におけるMovingAverageパラメータの最適値は異なるはずである。すなわち、2つ目の区間における平均の最適な期間は変化しています(しかし、テスターで最適化した場合、見つかったパラメータは最適化の全区間において他のすべてのパラメータの中で最高の利益をもたらします)。

 

異なるラムダでフラット・インターバルの結果をチェックしてみよう。

フィルターなし

出力フィルターあり lambda=0.2*lambda_max

フィルターあり λ=0.001λ_max(傾向が小さい)。

このように、λ=0.001 lambda_maxの平坦区間では、フィルタなしで結果を改善し、局所的な小さな傾向を考慮することができます。

しかしながら、フィルターλ=0.2*λ_maxを用いたバリエーションは、フィルターなしの戦略よりも低い収益性を示しました。

 

フラットネス内の局所的なトレンドにポジション(異なるラムダ)を追加したバリエーション

フィルターなし:


Cフィルター lambda=0.2*lambda_maxで補正を加えたもの:

λ=0.001*λ_maxのCフィルターと補正を加えたもの:

λ=0.2*λ_maxのフィルタと補正の追加:λ=0.001*λ_maxのフィルタと補正の追加を加えたバリエーションは、フィルタなしのバリエーションよりも良い結果を示した。

補正の平坦区間内に局所的な小さなトレンド(λ=0.001*λ_max)を追加することで、フィルターなしのオリジナル戦略の利益を増加させることができた(利益という点ではλ=0.2*λ_maxの変種を改善)。

 
Quantum #:

フラットネス内の局所的なトレンドにポジション(異なるラムダ)を加えたバリエーション

フィルターなし


Cフィルター lambda=0.2*lambda_maxで補正を加えたもの:

Cフィルター lambda=0.001*lambda_maxに補正を加える:

λ=0.2*λ_maxのフィルタと補正の加算を用いた変種は、フィルタを用いなかった変種よりも良い結果を示した。

補正の平坦区間内に局所的な小さなトレンド(λ=0.001*λ_max)を加えることで、フィルターなしのオリジナル戦略の利益を増加させることができた(そして、利益という点ではλ=0.2*λ_maxの変種を改善した)。

少なくともデモでは

理解するには、経験を積み、10ヶ月間無駄な作業をした後に、理解できるようになるだろう。