분류
기술
난이도
초급
사용 상황
전략 설계MT5 운용

지수 이동평균

최근 가격에 더 큰 가중치를 두어 단순 이동평균보다 먼저 방향을 트는 이동평균. EA의 추세 필터와 교차 진입은 다른 어떤 지표보다도 이 지표 위에 자주 세워진다.

다른 표현: EMA, 지수이동평균선

업데이트일 · 검토일

쉽게 말하면

얼마 전에 일어난 일보다 방금 일어난 일에 더 무게를 두는 최근 가격의 평균이다. 단순 평균보다 빨리 방향을 틀기 때문에 추세 안에서는 더 쓸모 있고 횡보 구간에서는 더 수다스럽다.

왜 중요한가

지수 이동평균은 EA 추세 로직의 기본 부품이다. ADX 같은 지표가 의도적으로 주지 않는 방향을 이 지표가 공급한다. 동시에 개인 EA에서 가장 남용되고 가장 과최적화되는 구성 요소이기도 하다. 교차 규칙은 쓰기 쉽고, 두 기간은 어떤 과거 데이터든 수익성 있어 보일 때까지 조정하기 쉽기 때문이다.

  • 전략에 부호를 준다. 추세 강도와 변동성에는 방향이 없다. 가격과 이동평균, 또는 빠른 선과 느린 선을 비교하는 지점에서 비로소 상승과 하락이 규칙 안으로 들어온다.
  • 단순 평균보다 빠르게 반응하고, 그 차이는 전환점에서 의미를 갖는다. 추세 전략 결과의 대부분이 그 지점에서 결정된다.
  • 구조상 후행 지표다. 모든 이동평균은 이미 일어난 일을 서술하므로, 교차는 예측이 아니라 확인이다.
  • 두 기간은 곧 두 개의 파라미터이며, 그 위에서 격자 탐색을 돌리면 어떤 구간에서든 훌륭해 보이는 조합이 반드시 나온다. EA 설계에서 벌어지는 전형적인 과최적화 함정이다.

MetaTrader 5에서

MT5에서의 위치

  • 삽입 → 지표 → 추세 → Moving Average를 넣고 Method를 Exponential로 설정
  • 이동평균 속성 창에서 적용 가격도 지정한다 — Close가 일반적인 선택이며 값이 눈에 띄게 달라진다
  • ATR이나 ADX와 달리 차트의 메인 창, 가격 축 위에 그려진다
  • 전략 테스터 → 입력값 — 빠른 기간과 느린 기간은 가장 과최적화되기 쉬운 두 입력값이다

EA가 사용하는 방식

  • 핸들은 OnInit에서 만든다 — iMA(_Symbol, PERIOD_CURRENT, 21, 0, MODE_EMA, PRICE_CLOSE) — 기간마다 하나씩, EA가 사는 동안 유지한다.
  • 방향 필터로: 가격이나 빠른 이동평균이 느린 쪽 위에 있을 때만 매수하고, 아래에 있을 때만 매도한다.
  • 교차 진입으로: 마감된 봉에서 빠른 선이 느린 선을 통과하는 것. 상태가 아니라 교차를 잡으려면 1번 봉과 2번 봉을 함께 읽어야 한다.
  • 추적 기준으로: 선택한 이동평균의 반대편에서 가격이 마감하면 청산한다. 추세 자신의 속도에 맞춰지는 추적 규칙이다.
  • 상위 시간대의 이동평균도 같은 호출에 기간 인자만 바꿔 읽는다. M15 EA가 H4에서 방향을 가져오는 방식이 이것이다.

일반적인 설정

설정 일반적인 값 비고
빠른/느린 조합, 단기 8 / 21 빠르게 반응한다. 교차가 많이 나오지만 대부분은 추세가 아니다.
빠른/느린 조합, 중기 50 / 200 널리 관찰되는 조합. 신호가 적고, 나오는 신호도 늦게 온다.
단일 추세 필터 진입 시간대의 EMA 200 진입 신호가 아니라 방향 게이트로 쓴다.
적용 가격 Close 일반적이고 안정적이다. 중간값이나 표준 가격은 더 부드럽게 만들고 모든 백테스트 결과를 바꾼다.
신호 봉 마지막으로 마감된 봉 형성 중인 봉을 읽으면 봉 안에서 나타났다 사라지는 교차가 생긴다.

자주 생기는 운용 문제

  • 이벤트(빠른 선이 느린 선을 통과했다)가 아니라 상태(빠른 선이 느린 선 위에 있다)를 검사하는 것. 추세가 이어지는 내내 모든 봉에서 재진입하게 된다.
  • 인덱스 0을 읽어 교차가 틱마다 깜빡이고, 실거래가 재현할 수 없는 백테스트 결과가 나오는 것.
  • OnTick 안에서 만든 핸들이 누수되어 결국 iMA가 INVALID_HANDLE을 돌려주는 것.
  • 느린 기간의 히스토리가 충분해지기 전에 시작 시점에 CopyBuffer를 부르면 0이 돌아오고, 그 0이 교차처럼 비교되는 것.
  • 두 기간을 한 구간에서 함께 최적화하고 그 꼭짓점을 출시하는 것. EA가 테스트에서 훌륭해 보이다가 곧바로 무너지는 가장 흔한 경로다.

관련 MT5 함수

iMA(symbol, timeframe, period, shift, MODE_EMA, applied_price)
핸들을 만든다. 단순이 아니라 지수로 만드는 것은 MODE_EMA다.
CopyBuffer(handle, 0, start, count, array)
하나뿐인 버퍼에서 평균값을 읽는다.
ArraySetAsSeries(array, true)
인덱스 0을 현재 봉으로 만든다. 대부분의 교차 코드가 전제하는 관례다.
iTime(symbol, timeframe, 0)
틱마다가 아니라 봉마다 한 번 동작하게 할 때 쓴다.

예시

상태를 읽는 것과 이벤트를 읽는 것의 차이. EA 코드에서 가장 흔한 이동평균 버그다.

2번 봉 — 빠른 선 대 느린 선
빠른 선이 아래
1번 봉 — 빠른 선 대 느린 선
빠른 선이 위
두 번의 관측이 짝을 이룰 때 비로소 조건이 아니라 교차가 된다.
상태 검사 결과
모든 봉에서 발동
추세가 이어지는 동안 계속, 그때마다 포지션을 하나씩 더한다.
이벤트 검사 결과
한 번 발동

강한 추세 구간에서는 두 버전 모두 테스트상 수익이 나 보인다. 그중 하나만이 의도한 전략이다.

계산 if (fast[2] <= slow[2] && fast[1] > slow[1]) → 상향 교차

결과 봉마다 하나가 아니라 교차마다 하나의 진입

사용하는 법

이동평균 규칙은 쓰기도 쉽고 끼워 맞추기도 쉽다. 확인할 가치가 있는 것은 전부 파라미터가 옮겨져도 살아남는지에 관한 것이다.

구간 의미
기간을 10% 옮기면 결과가 무너진다 테스트 구간에 맞춰진 상태. 견고한 설정은 이웃 값들도 함께 작동한다.
넓은 범위의 기간 조합이 비슷하게 작동한다 끼워 맞춘 것이 아니라 구조적인 효과일 가능성이 높다. 최적화 표면에서 고원이 뜻하는 바가 이것이다.
국면 필터가 없는 교차 횡보 구간에서도 신호가 나오고, 거기서는 대부분 진다. ADX나 변동성 필터는 보통 이것을 고치려고 덧붙인다.
형성 중인 봉에서 읽는다 재현되지 않는다. 같은 시장이라도 틱이 들어온 시점에 따라 진입이 달라진다.
  • 기간을 고를 때는 꼭짓점보다 고원을 택하라. 백테스트에서 가장 좋았던 단일 결과가 다시 반복될 가능성이 가장 낮다.
  • 교차에는 국면 필터를 붙여라. 필터 없는 추세 규칙은 자신이 가장 취약한 조건에서 가장 나쁜 거래를 한다.
  • 교차는 한 번의 비교가 아니라 두 개의 봉으로 판정하고, 마감된 봉에서만 행동하라.
  • 이동평균은 가격을 따라간다는 점을 기억하라. 앞설 수 없으므로 그 위에 세운 전략은 예측 전략이 아니라 참여 전략이다.

이동평균의 `/indicators` 페이지는 계산 방식과 SMA 비교를 다룬다. 이 항목은 지수 이동평균이 EA 로직에 어떻게 배선되는지를 다룬다.

흔한 오해

상태와 이벤트를 혼동하는 것

빠른 선이 느린 선 위에 있는지 검사하면 추세 내내 참이다. 통과했는지를 검사하려면 이전 봉까지 필요하고, 이 둘의 차이가 진입 한 번과 수십 번의 차이다.

두 기간을 최적화해 가장 좋은 조합을 출시하는 것

매끄러운 표면 위의 자유 파라미터 두 개는 언제나 인상적인 백테스트를 만들어낸다. 중요한 것은 이웃한 조합들도 비슷하게 움직이는지이며, 그것이 효과와 끼워 맞춤을 가르는 차이다.

시장 상황 필터 없이 교차를 쓰는 것

횡보 구간에서 이동평균은 끊임없이 교차하고 그 교차의 거의 전부가 진다. 필터는 전략의 최적화가 아니라, 전략을 적용 가능하게 만드는 조건이다.

EMA가 SMA보다 무조건 낫다고 가정하는 것

더 빨리 반응하고, 그것은 양쪽으로 작용한다. 진짜 추세에서는 더 이른 진입, 잡음 속에서는 더 많은 거짓 신호다. 어느 쪽이 나은지는 전략에 달렸고, 둘의 차이는 기간 선택의 차이보다 작다.

자세히

공개된 EA들이 방향 판단에 대신 쓰는 것

여기에는 열네 개의 EA가 청산 내역 전체와 함께 공개되어 있다. 그중 어느 것도 지수 이동평균에서 방향을 가져오지 않는다.

방향 판단 방식EA 수내용
일목균형표 전환선/기준선 교차5Kestrel Hover, Orrery, Peregrine, Tessera, Zerqon
단순 이동평균 정배열1Lanternfish — M30의 SMA 25/50/75, 진입은 M5
지수 이동평균0
교차가 아닌 다른 방식8RSI 극단, 엔벨로프 되돌림, 캔들 패턴

이 다섯은 교차는 남기고 조정은 버렸다. 전환선과 기준선의 기간은 격자 탐색이 아니라 지표의 정의에서 온다. 다섯 모두 마감된 봉을 읽으며, Orrery와 Peregrine은 신호 봉의 몸통이 최근 평균의 배수를 넘을 때만 움직인다. 맨 교차에 필요한 국면 필터가 바로 이것이다. 이들의 수익 팩터는 1.27에서 1.46 사이로, 카탈로그의 나머지와 같은 구간이다.

전략 테스터의 입력값 탭은 기간마다 시작·간격·종료 값을 받는다. 맨 윗줄이 아니라 결과 집합 전체를 읽어라. 이웃한 조합들이 이루는 고원은 효과이고, 홀로 솟은 꼭짓점은 끼워 맞춤이다. 그것이 실무에서의 과최적화이며, ADX 같은 필터가 기간을 하나 더 조정하기 전에 와야 하는 이유다.

자주 묻는 질문

MT5 EA는 어떤 EMA 기간을 쓰나요?
단기 시스템에서는 8/21 조합이, 중기 추세 판별에는 50/200이 가장 흔하며, 단일 EMA 200은 순수하게 방향 게이트로만 쓰이는 경우가 많습니다. 구체적인 숫자보다 중요한 것은 그 숫자를 옮겨도 전략이 여전히 작동하는지입니다. 정확히 한 조합에만 의존하는 결과는 테스트 구간에 맞춰진 것입니다.
EA에는 EMA가 SMA보다 나은가요?
EMA가 더 빨리 반응하므로 진짜 추세에서는 진입이 이르고 잡음 속에서는 거짓 신호가 늘어납니다. 어느 쪽도 보편적으로 낫지 않으며, 둘 사이의 차이는 대개 같은 종류 안에서 기간을 다르게 고를 때의 차이보다 작습니다.
EMA 교차 EA가 왜 이렇게 많은 포지션을 여나요?
거의 언제나 코드가 빠른 EMA가 방금 교차했는지가 아니라 느린 EMA 위에 있는지를 검사하기 때문입니다. 첫 번째 조건은 추세 내내 참이라 모든 봉에서 발동합니다. 교차를 잡으려면 이전 봉과도 비교해야 합니다.
EMA로 추세 반전을 예측할 수 있나요?
없습니다. 이미 발생한 가격들의 평균이므로 필연적으로 뒤따릅니다. 교차는 변화가 다가온다는 것이 아니라 이미 일어났다는 것을 확인해 주며, 그 지연이 평활화의 대가입니다.