기고글 토론 "MetaTrader 5에서 L1 추세 필터링 적용하는 법"

새로운 기고글 MetaTrader 5에서 L1 추세 필터링 적용하는 법 가 게재되었습니다:

이 글에서는 MetaTrader 5에서 L1 추세 필터링을 실제로 적용하는 사례를 살펴보고 그 수학적 기초와 MQL5 프로그램에서의 사용법을 다룹니다. L1 필터는 가격의 노이즈를 줄이면서 시장의 핵심 구조를 보존하는 구간별 선형 추세를 추출할 수 있도록 합니다. 본 연구는 매개변수 스케일링, 추세 추정 행동, 그리고 알고리즘 트레이딩 전략에 그 방법을 통합하는 것에 대해 분석합니다. 실험 결과는 L1 추세 필터링이 신호 안정성, 매매 시점, 그리고 트레이딩 시스템의 전반적인 견고성을 어떻게 향상시킬 수 있는지 보여줍니다.

금융 시계열 데이터는 높은 잡음 수준, 잦은 이상치, 그리고 변화하는 시장 환경이라는 특징을 가지고 있습니다. 실제 트레이딩 시스템에서 이는 간단하고 측정 가능한 방식으로 나타납니다: 고전적인 "평활" 필터(이동 평균, HP)는 추세 변화에 뒤처지고 기울기 변화의 순간을 모호하게 하며 종종 단기적인 조정을 추세 반전으로 잘못 해석합니다 — 결과적으로 잘못된 진입/청산 횟수가 증가하고 수익계수가 감소하며 드로다운이 증가합니다. 또한 정규화 매개변수 λ의 선택은 일반적으로 수동 조정으로 축소되며 상품, 차트 주기 및 히스토리 길이에 따라 제대로 전달되지 않습니다.

이 글은 L1 추세 필터링을 기반으로 이러한 문제에 대한 실제적인 해결책을 제시합니다: 2차 차분의 L1 정규화를 이용한 최적화는 명시적인 분기점을 갖는 구분적 선형 근사치를 자동으로 생성합니다. 주요 이점은 변곡점을 커다란 추세의 변화로 명확하게 해석할 수 있다는 점, λmax를 계산하고 상대적 매개변수 λ = coef · λmax로 이동하여 정규화 규모를 설정할 수 있다는 점, 그리고 MQL5 구현에 적합한 선형적인 계산 복잡성을 갖는다는 점입니다.

이 글에서는 이론뿐만 아니라 완벽한 실무 로드맵을 제시합니다: 여기에는 λmax 및 L1 추세 계산을 위한 메서드, 세 가지 지표(추세, 기울기, 기울기 부호), 7가지 L1 추세 변동성 지표, Expert Advisors와의 통합, 그리고 재현 가능한 테스트 프로토콜(네 가지 필터링 모드, 잔고/자산 내보내기 및 시각화).


작성자: MetaQuotes

정말 훌륭합니다. 훌륭한 작업입니다, MetaQuotes. 스탠퍼드 대학교의 스티븐 보이드 교수와 그의 전설적인 시계열 연구가 이제 MQL5에 소개되었습니다.

cemal #:
정말 훌륭합니다. MetaQuotes, 잘하셨습니다. 스탠퍼드 대학교의 스티븐 보이드 교수님과 MQL5에서 그의 전설적인 시계열 연구 결과가 담겨 있군요.

감사합니다. 이 방법론에는 경계 문제가 없기 때문에, 거래에 유용하게 적용될 수 있습니다.

기사가 완성된 후, 추세 조정 시 거래량을 추가하는 것이 최선의 방법이라는 사실이 밝혀졌습니다(이 부분은 기사에서 다루지 않았습니다). 관련 전문가 자문가(EA)는 여기에서 확인하세요: MA, MACD, ADX, EMA.

추세 조정 시 거래량을 추가하는 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 단위로 정의된 lambda_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 #:

대략 다음과 같습니다:

추세 분리는 정규화 매개변수 lambda에 매우 크게 좌우됩니다. lambda가 작을수록 더 짧은 추세를 포착할 수 있습니다.
여기서 살펴본 예시에서는 lambda=0.2*lambda_max 단위의 고정된 lambda 값이 사용되었습니다. 람다_맥스(lambda_max) 단위로 계산하면 데이터에 부분적으로 적응할 수 있습니다. 람다_맥스(lambda_max) 값 자체는 시계열의 기하학적 특성(상대적 변동폭), 즉 변동성에 따라 달라집니다.

추세에는 다양한 단계와 고유한 수명 주기가 있다는 점을 염두에 두어야 합니다. 따라서 현재 추세에 맞춰 조정할 수 있는 메커니즘, 즉 람다를 관리하고 최적의 추세 분할을 찾아내는 방법이 필요하지만, 이 과제는 아직 해결되지 않았습니다.

해당 시간대에서 전략 자체가 수익을 내지 못한다면, 필터도 도움이 되지 않을 것입니다.
가장 좋은 결과는 이상적인 추세 시장에서 나와야 하며, 예시는 다음과 같았습니다: EURUSD, 2025, H1 (최적의 이동평균 매개변수: period=61).

EURUSD

테스터 옵션

테스터 매개변수

필터 적용 전 테스터 결과

L1 종가 필터

L1 클로즈 필터

여기서 우리는 청산 필터가 추세 구간에서 수익을 늘리는 데 도움이 되었음을 확인할 수 있습니다.


조정 구간에서 포지션을 추가한 동일한 전략의 변형:

'추가' 기능을 사용한 테스터 옵션

'포지션 추가' 기능을 사용한 테스터 옵션

추가 없이:

추가 시:


횡보장 구간에는 국부적인 소규모 추세가 포함되어 있으며, 이를 올바르게 반영하려면 (출구 필터로 사용할 경우) 람다(lambda) 매개변수의 값을 더 작게 설정해야 합니다.
또한, 횡보장 구간에서 이동평균(MovingAverage) 매개변수의 최적값도 달라야 합니다. 즉, 두 번째 구간에서 이동평균의 최적 기간이 변경되었습니다(하지만 테스터에서 최적화할 때, 도출된 매개변수들은 전체 최적화 구간에서 다른 모든 매개변수들 중 가장 높은 수익을 냅니다).

다양한 람다 값을 사용하여 flat 구간에서 결과를 확인해 봅시다.

필터 없음:

출력 필터 lambda=0.2*lambda_max 적용 시

lambda=0.001 lambda_max 필터 적용 시 (더 미세한 추세)

이처럼 플랫 구간에서 lambda=0.001 lambda_max를 적용하면 필터가 없는 경우보다 결과를 개선하고 국부적인 미세한 추세를 반영할 수 있습니다.

그러나 lambda=0.2*lambda_max 필터를 적용한 경우, 여기서는 필터를 적용하지 않은 전략보다 수익성이 더 낮게 나타났습니다.

플랫 내부의 국지적 추세에서 포지션(다양한 람다)을 추가하는 전략

필터 없음:


lambda=0.2*lambda_max 필터를 적용하고 조정 국면에서 포지션을 추가하는 경우:

lambda=0.001*lambda_max 필터를 적용하고 조정 구간에서 포지션을 추가한 경우:

lambda=0.2*lambda_max 필터를 적용하고 조정 구간에서 포지션을 추가한 방식이 필터가 없는 방식보다 더 나은 결과를 보여주었습니다.

플랫 구간 내부의 국소적인 소규모 추세(lambda=0.001*lambda_max)에 대한 조정 시 매수 추가를 적용함으로써, 필터가 없는 원래 전략의 수익을 높일 수 있었으며(lambda=0.2*lambda_max를 적용한 전략의 수익도 개선되었습니다).

Quantum #:

플랫 내부의 국지적 추세에서 포지션을 추가하는 방법 (다양한 람다)

필터 없음:


lambda=0.2*lambda_max 필터를 적용하고 조정 구간에서 포지션을 추가하는 경우:

lambda=0.001*lambda_max 필터를 적용하고 보정값을 더한 경우:

lambda=0.2*lambda_max인 필터를 적용하고 보정값에 추가한 변형이 필터를 적용하지 않은 변형보다 더 나은 결과를 보여주었다.

플랫 구간 내의 국소적인 소규모 추세(lambda=0.001*lambda_max)를 보정에 추가함으로써, 필터가 없는 원래 전략의 수익을 높일 수 있었으며(lambda=0.2*lambda_max를 적용한 변형의 수익도 개선할 수 있었다).

적어도 데모 계좌로라도 거래해 보세요

경험을 쌓고 10개월간의 무익한 작업을 견뎌내면 이해가 올 것입니다

벡터에 대한 두 가지 새로운 기능을 소개해 주셔서 감사합니다. 정말 유용하네요. 많은 노력을 기울이셨지만, 안타깝게도 모든 지표가 심하게 재그리딩 현상이 발생합니다. 심지어 과거 데이터에서도 고점이 반대 방향으로 바뀌거나 사라지기도 합니다. 이 지표들을 재그리팅 현상이 있는 호드릭-프레스콧 필터와 비교하신 데는 일리가 있습니다 . 중심 조정된 TMA나 다른 몇 가지 지표와도 비교할 수 있겠네요. 더 긴 시간대에서는 300캔들 전으로 거슬러 올라가서 추세 전환점이 나타날 수 있어, 1년 동안(예금을 날리며) 추세와 반대 방향으로 거래할 수도 있습니다. 실제 거래에서는 지표나 이를 기반으로 한 자동매매 시스템 모두 미래를 예측하려 하기 때문에 적합하지 않습니다.

사실 이러한 함수를 바탕으로 재그리지 않는 지표를 만들 수도 있습니다. 귀하의 지표의 경우, 단순히 1,000개의 캔들을 기다린 후 이전 기간의 끝에서 다시 계산을 하면 되지만, 이는 실제 적용에는 무용지물이며 더 흥미로운 대안들이 있습니다. 연구에 행운이 있기를 바랍니다.