변동성을 방향으로 다루기
변동성이 높다는 것은 가격이 많이 움직인다는 뜻이지 위로 움직인다는 뜻이 아니다. 추세와 변동성은 별개의 측정치다 — 격렬한 횡보는 변동성이 높으면서 동시에 추세가 없다.
변동성은 시간에 따른 가격 변동의 정도 — 가격이 어느 방향으로가 아니라 얼마나 멀리 움직이는가 — 를 뜻한다. 통계적으로는 수익률의 표준편차이고, MT5 EA 안에서는 평균 실질 변동폭(ATR)로 읽히며, 지난달의 손절 거리가 오늘도 여전히 맞는지를 결정한다.
다른 표현: market volatility, price volatility
업데이트일 · 검토일
가격이 어느 방향으로가 아니라 보통 얼마나 멀리 움직이는가를 말한다. 조용한 시장과 격렬한 시장이 같은 가격으로 한 주를 마칠 수 있다. 변동성은 그 두 여정의 차이다.
EA 안의 모든 손절 거리, 목표, 랏 크기는 한 세션에 가격이 얼마나 움직이는가에 대한 어떤 가정에 맞춰 보정되어 있다. 변동성은 그 가정을 명시적으로 드러낸 것이다. 실전 투입 후에 그것이 바뀌면, 로직을 한 줄도 바꾸지 않았는데도 옳았던 EA가 틀린 EA가 된다.
σ = 기간별 수익률의 표준편차 · 연율화 σ = σ_daily × √252 통계적 정의는 수익률의 표준편차이며, 샤프 지수, VaR을 비롯한 모든 리스크 모델이 쓰는 것이 바로 이것이다. EA 안에서의 실용적 정의는 평균 실질 변동폭(ATR)로, 같은 개념을 가격 단위로 재며 수익률 계열 없이도 계산할 수 있다. '변동성'이라고 불리는 두 수치가 실은 이 서로 다른 두 가지인 경우가 많다.
숫자 하나로 전략을 설명할 수 없습니다. 다음 지표들이 이 숫자의 해석을 바꿉니다.
예시로 계산해 보자. 같은 EA가 30핍 고정 손절로 두 국면을 지나간다. 바뀌는 것은 통상적인 한 시간 움직임의 크기뿐이다.
ATR 기반 버전은 시장과 함께 넓어진다 — 하지만 그러면 랏 크기는 그만큼 줄어야 한다.
계산 30 ÷ 12 = 2.5 범위 · 30 ÷ 34 = 0.88 범위
결과 고정 손절은 의미가 세 배 가까이 바뀌지만, ATR 기반 손절은 그렇지 않다
mt5depot의 EA 페이지는 상품마다 테스트 구간과 데이터 출처를 밝히므로, 결과가 하나 이상의 국면에 걸쳐 있는지는 날짜에서 읽을 수 있다. 이 페이지의 모든 실측 수치는 그 상품들이 공개한 거래 원장(EXP-VOL-REGIME-001)에서 청산 거래 기준으로 나왔다.
변동성이 높다는 것은 가격이 많이 움직인다는 뜻이지 위로 움직인다는 뜻이 아니다. 추세와 변동성은 별개의 측정치다 — 격렬한 횡보는 변동성이 높으면서 동시에 추세가 없다.
공개 원장에서 EA의 일간 손익이 가장 요동친 분기는 22개 중 13개에서 수익이었고, 최악의 단일 일자는 22개 중 15개에서 그 분기 바깥에 있었다. 고변동성에서 EA를 끄는 필터는 그 분기를 쉬고서도 최악의 날 대부분을 여전히 놓쳤을 것이다.
변동성 큰 국면에서 세 배가 되는 ATR 기반 손절은, 포지션 크기가 함께 줄지 않으면 위험에 놓인 돈도 세 배로 만든다. 적응형 손절은 적응형 사이징과 짝을 이룰 때만 도움이 된다.
테스터는 변동성 수치를 결코 찍어 주지 않는다. 그중 얼마가 리포트에 도달하는지는 세 가지 설정이 결정한다.
모델링. Every tick based on real ticks(실제 틱 기반 모든 틱)는 각 봉 안의 기록된 경로를 다시 재생하므로, 통상적인 봉 안에 놓인 손절은 실제로 걸렸을 자리에서 걸린다. M1 봉에서 생성하는 Every tick(모든 틱)은 그 경로를 보간하고, Open prices only(시가만)는 그것을 버린다. 손절이 봉의 범위보다 좁은 전략은 이 두 모드 어느 쪽으로도 판단할 수 없다 — 틱 데이터와 모델링 품질을 참고하라.
스프레드. 전략 테스터 → Settings → Spread에서는 Current(현재값) 또는 고정 포인트 수를 고를 수 있다. 어느 쪽이든 수년에 걸쳐 하나의 값에 고정하므로, 변동성 급등과 함께 찾아오는 스프레드 확대는 생성 틱 테스트에서 빠져 있다. 실제 틱에서는 스프레드가 틱 파일이 담고 있던 그대로다.
입력값. ATR로 크기를 정하는 손절은 Inputs 탭에 두 입력값, 기간과 배수를 노출한다. 2.0에서는 되는데 1.8이나 2.2에서는 안 되는 배수는 변동성이 아니라 한 구간의 되돌림에 맞춰진 것이다. MQL5에서 핸들은 OnInit에서 iATR(_Symbol, PERIOD_CURRENT, 14)로 한 번만 만든다. 값은 마지막으로 완성된 봉, 인덱스 1에서 읽으므로 손절 거리가 신호가 발생한 시점에 좌우되지 않는다. 설정은 ATR 항목에 있다.
각 상품 페이지는 청산 거래 목록을 싣고 있으므로, EA 자신의 일간 손익의 σ를 달력 분기별로 재서 전체 구간과 비교할 수 있다. 24개 상품 중 두 개는 어느 분기에서도 활성일 10일에 이르지 못해, 채워 넣지 않고 제외했다.
| 측정 항목 (청산 거래 기준, 활성일 10일 이상인 분기) | 22개 EA 중앙값 | 범위 또는 건수 |
|---|---|---|
| EA당 조건을 충족한 분기 수 | 15.5 | 총 375개 |
| 국면 폭: 가장 요동친 분기 σ ÷ 가장 잔잔한 분기 σ | 2.29× | 1.25×에서 5.33×까지 |
| 국면 폭이 2×를 넘는 EA | — | 22개 중 15개 |
| 전체 구간 σ의 ±25% 이내인 분기 | 78.76% | 375개 중 282개 |
| 최악의 단일 일자가 가장 요동친 분기 안에 있음 | — | 22개 중 7개 |
| 가장 요동친 분기가 손실 | — | 22개 중 9개 |
| 마지막 조건 충족 분기 σ ÷ 전체 구간 σ | 0.91× | 22개 중 17개에서 1 미만 |
두 행은 변동성 필터가 가정하는 바와 어긋난다. 최악의 하루는 22개 EA 중 15개에서 가장 요동친 분기 바깥에 떨어졌고, 그 분기는 22개 중 13개에서 돈을 벌었다. 나쁜 하루 하나는 국면이 아니며, 롤링 측정치는 그것이 오는 것을 보지 못한다.
가장 넓은 폭은 Murmuration의 것이다. 2026-Q1의 분기 σ 4.591%에 대해 다음 분기는 0.862%로, 설정이 동일한데도 5.33배 차이가 났다. 최악의 하루인 2020-03-18의 9.579%는 그보다 6년 앞선 더 잔잔한 분기에 있었다.
수준이 아니라 국면을 읽어라. EA가 거래하는 시간대에서, 오늘의 ATR을 테스트 구간 전체의 ATR과 비교한다.
CopyBuffer(handle, 0, 1, bars, array)로 읽고 배열을 평균 낸다.MT5에서 백테스트 실행하기는 위의 설정을 다루고, 파라미터 최적화는 ATR 배수의 인접값 확인을 다룬다. 급등이 어떻게 돈으로 바뀌는지는 포지션 사이징, 슬리피지, 최대 낙폭의 주제다.