MT5 백테스트는 EA 실행보다 먼저 익혀야 하는 절차입니다
이번 포스트의 핵심 내용 3줄요약
- Strategy Tester는 EA 자동매매와 알고리즘 트레이딩 전략이 과거 데이터에서 어떻게 작동했는지 확인하는 MT5 백테스트 도구입니다.
- 처음에는 모든 설정을 이해하려 하지 말고 Expert, Symbol, Timeframe, Date, Deposit, Leverage를 고정하고 한 번 실행해 보는 것이 먼저입니다.
- INFINOX 같은 CFD 데모 계좌에서 데이트레이딩, AI 트레이딩, AI 주식 전략을 테스트하더라도 순이익보다 Journal 오류, 최대 드로다운, 거래 수, 기간별 차이를 중심으로 읽어야 합니다.
이전 글인 MT5 데모 계좌에서 첫 EA 실행하기에서는 MetaEditor에서 Permact_First_Candle_EA 예시 EA를 만들고, 데모 차트에 붙이고, AutoTrading 권한과 Inputs 값을 확인하는 방법을 정리했습니다.
이 글은 MetaTrader 5, 또는 MetaTrader5에서 시스템 트레이딩과 알고리즘 트레이딩을 검증하는 절차를 다룹니다. INFINOX 같은 CFD 계좌로 MT5 자동매매를 하든, 향후 AI트레이딩 또는 AI 트레이딩, AI주식 또는 AI 주식 전략을 만들든, 실전 전에 Strategy Tester로 백테스트하는 습관이 먼저 필요합니다.
이번 글의 핵심은 EA를 차트에 붙이는 것이 아니라 Strategy Tester로 백테스트하는 방법입니다. 자동매매에서 가장 위험한 상황은 “EA가 실행된다”는 사실만 보고 전략이 검증됐다고 착각하는 것입니다. EA는 사람이 클릭하지 않아도 규칙을 반복합니다. 규칙이 좋으면 반복이 장점이지만, 규칙이 허술하면 손실도 반복됩니다.
Strategy Tester의 모든 용어를 처음부터 외울 필요는 없습니다. 이번에는 테스트 조건을 고정하고 한 번 실행하는 흐름에 집중합니다.
이번 글에서 배울 것
| 단계 | 내용 | 목적 |
|---|---|---|
| 1 | Strategy Tester를 여는 방법 | 백테스트 화면 진입 |
| 2 | Expert, Symbol, Timeframe, Date 설정 | 테스트 조건 고정 |
| 3 | Deposit, Leverage, Modeling 설정 | 계좌 조건과 데이터 품질 이해 |
| 4 | Visual mode로 주문 흐름 확인 | EA가 생각한 대로 움직이는지 확인 |
| 5 | invalid stops 오류 대응 | CFD 심볼별 최소 손절·익절 거리 이해 |
| 6 | 기간별 백테스트 | 특정 구간 우연과 과최적화 의심 |
| 7 | Journal, Backtest, Graph, Settings / Inputs 해석 | 순이익보다 실행 오류와 리스크 구조 확인 |
MetaTrader 5 공식 Strategy Testing 문서 새 탭는 Strategy Tester를 실거래 전에 Expert Advisor를 테스트하고 최적화하는 도구로 설명합니다. 이 문장을 실무적으로 풀면 이렇습니다. 실계좌에서 돈을 넣기 전에, 과거 데이터에서 먼저 전략이 어떻게 망가지는지 확인하라는 뜻입니다.
백테스트 전에 준비할 것
이 글은 이미 다음 상태까지 완료했다고 가정합니다.
| 준비 항목 | 확인 방법 |
|---|---|
| MT5 데모 계좌 로그인 | Navigator의 Accounts 아래에 데모 계좌가 보임 |
| EA 컴파일 완료 | MetaEditor에서 0 errors, 0 warnings 확인 |
| EA 파일 위치 확인 | Navigator의 Expert Advisors 아래에서 EA가 보임 |
| AutoTrading 개념 이해 | 상단 Algo Trading 버튼과 EA별 권한을 구분 |
| 예시 EA 코드 확보 | 본문 또는 다운로드 파일로 Permact_First_Candle_EA 준비 |
아직 EA를 만들지 않았다면 이 글부터 읽기보다 1편: MT5 데모 계좌에서 첫 EA 실행하기를 먼저 보는 편이 좋습니다. 백테스트 화면에서 Expert를 선택하려면 먼저 컴파일된 .ex5 EA 파일이 있어야 합니다. 이 흐름은 데이트레이딩용 EA, 지수 CFD 자동매매, AI가 만든 매매 전략을 테스트할 때도 같습니다.

Strategy Tester를 여는 방법
MT5에서 Strategy Tester는 다음 방법 중 하나로 열 수 있습니다.
- 키보드에서
Ctrl+R을 누릅니다. - 상단 메뉴에서
View를 누른 뒤Strategy Tester를 선택합니다. - 화면 아래쪽에 Strategy Tester 패널이 열리는지 확인합니다.
- 패널이 너무 작으면 위쪽 경계선을 드래그해서 높이를 넓힙니다.
초보자에게 가장 어려운 부분은 화면이 열려도 무엇을 먼저 건드려야 하는지 모르는 것입니다. 처음에는 모든 항목을 이해하려고 하지 말고 아래 순서만 고정해서 진행합니다.
| 순서 | 항목 | 먼저 할 일 |
|---|---|---|
| 1 | Expert | 테스트할 EA 선택 |
| 2 | Symbol | 테스트할 상품 하나 선택 |
| 3 | Timeframe | H1 또는 D1처럼 너무 짧지 않은 시간봉 선택 |
| 4 | Date | Custom period로 시작일과 종료일 지정 |
| 5 | Deposit | 가상 초기 자금 입력 |
| 6 | Leverage | 계좌 조건과 비슷하게 선택 |
| 7 | Modeling | 처음에는 Every tick based on real ticks 또는 1 minute OHLC 선택 |
| 8 | Optimization | 처음에는 Disabled |

각 설정 항목을 초보자 기준으로 이해하기
Strategy Tester의 항목은 많지만, 첫 백테스트에서 중요한 것은 조건을 고정하는 것입니다. 조건이 바뀌면 결과도 바뀝니다. 설정을 기록하지 않은 백테스트 결과는 나중에 다시 재현하기 어렵습니다.
Deposit, Leverage, Modeling의 세부 의미는 실제 화면과 결과를 보면서 익혀도 됩니다. 첫 실행에서는 아래 시작값을 사용하되, 입력한 조건을 그대로 기록합니다.
| 항목 | 의미 | 초보자 기준 권장 |
|---|---|---|
| Expert | 테스트할 EA 파일 | Permact_First_Candle_EA |
| Symbol | 테스트 상품 | 처음에는 NAS100, XAUUSD, EURUSD 중 하나만 |
| Timeframe | EA가 판단할 캔들 주기 | H1 또는 D1 |
| Date | 백테스트 기간 | 처음에는 최근 1~3년 |
| Forward | 일부 기간을 검증용으로 분리 | 처음에는 No |
| Delays | 체결 지연 가정 | 데모 연습은 기본값으로 시작 |
| Modeling | 가격 데이터를 어떤 방식으로 재현할지 | 정확도 우선이면 Every tick based on real ticks |
| Deposit | 가상 시작 잔고 | 10,000 USD처럼 비교하기 쉬운 값 |
| Leverage | 증거금 계산 조건 | 실제 계좌와 비슷하게 |
| Optimization | 여러 입력값 조합 자동 테스트 | 처음에는 Disabled |
특히 Symbol과 Timeframe은 반드시 기록해야 합니다. 같은 EA라도 NAS100 H1 결과와 XAUUSD H1 결과는 완전히 다를 수 있습니다. 같은 NAS100이라도 H1과 M5 결과는 거래 횟수와 손실 구조가 달라집니다. 데이트레이딩처럼 짧은 시간봉을 쓰는 전략일수록 이 차이가 더 커질 수 있습니다.
첫 백테스트 권장 설정
처음부터 좋은 결과를 만들려고 하지 말고, 테스트가 정상적으로 돌아가는지 확인하는 데 집중합니다.
| 항목 | 시작값 예시 | 이유 |
|---|---|---|
| Symbol | NAS100+ 또는 XAUUSD+ 중 하나 | 사용자가 실제로 볼 상품 하나만 고정 |
| Timeframe | H1 | 너무 촘촘하지 않아 흐름을 보기 쉬움 |
| Date | 최근 1년 | 데이터 로딩과 결과 확인이 빠름 |
| Deposit | 10,000 USD | 손익률과 드로다운 비교가 쉬움 |
| Leverage | 비교할 데모·실계좌와 같은 조건 | 증거금 계산 조건을 맞춰 결과 비교 가능성을 높임 |
| Modeling | Every tick based on real ticks | 가능하면 더 촘촘한 데이터로 확인 |
| Optimization | Disabled | 첫 단계는 최적화가 아니라 단일 검증 |
| Visual mode | 첫 1회는 On | 주문 흐름을 눈으로 확인 |
테스트가 너무 오래 걸리면 기간을 줄이거나 Modeling을 낮춰도 됩니다. 다만 최종 판단용 백테스트는 되도록 더 좋은 데이터 품질로 다시 확인해야 합니다.
Inputs 탭에서 확인할 값
Strategy Tester에서도 EA를 차트에 붙일 때처럼 Inputs 값을 확인해야 합니다. 이 값이 바뀌면 백테스트 결과도 달라집니다.
Lots, StopLossPoints, TakeProfitPoints를 처음부터 직접 설계할 필요는 없습니다. 작은 lot과 기본값으로 실행 흐름을 확인한 뒤, 값을 하나씩 바꾸며 결과 차이를 기록합니다.
| 입력값 | 의미 | 초보자 기준 |
|---|---|---|
Lots | 주문 수량 | 0.01로 시작 |
StopLossPoints | 손절 거리 | 심볼별 포인트 단위 확인 |
TakeProfitPoints | 익절 거리 | 손익비 실험용 값 |
MinStopBufferPoints | 초기 stop level에 더할 여유 | 실행 오류를 줄이기 위한 보조값 |
MagicNumber | EA 주문 식별 번호 | 같은 EA끼리 구분하는 번호 |
Lots는 작게 시작해야 합니다. 백테스트에서 수익을 크게 보이게 하려고 lot을 키우면 전략이 좋아진 것이 아니라 위험 노출만 커진 것입니다. 특히 초보자는 “수익 금액”보다 “계좌 대비 손실률”과 “최대 드로다운”을 먼저 봐야 합니다.
Visual mode는 수익률 확인 화면이 아니라 디버깅 화면입니다
Visual mode를 켜면 백테스트가 차트 위에서 재생됩니다. 속도는 느리지만 초보자가 EA 동작을 이해하는 데 매우 좋습니다.
백테스트에서는 실제 돈이 움직이지 않습니다. 차트 재생과 주문 로그를 보면서 EA가 어디에서 진입하고 청산하는지 확인합니다.
Visual mode에서 확인할 것은 다음입니다.
| 확인 항목 | 질문 |
|---|---|
| 진입 위치 | 직전 캔들 방향 조건과 맞는가 |
| 진입 빈도 | 매 틱마다 과도하게 주문하지 않는가 |
| 손절·익절 | 주문과 함께 SL/TP가 붙는가 |
| 반대 신호 | 선택된 포지션의 MagicNumber가 일치할 때 청산을 요청하며, 헤징 계좌의 여러 포지션은 남지 않는가 |
| 로그 | Journal에 같은 오류가 반복되지 않는가 |

위 화면처럼 Journal에 invalid stops가 보이면 “전략 아이디어가 틀렸다”는 뜻이 아닐 수 있습니다. 주문에 붙인 손절 또는 익절 가격이 해당 심볼의 최소 허용 거리보다 너무 가까울 때도 이 오류가 납니다. NAS100, XAUUSD 같은 CFD는 상품마다 포인트 단위와 최소 stop level이 다르므로 같은 입력값을 그대로 쓰면 주문이 거부될 수 있습니다.
invalid stops가 나올 때 확인하는 순서
invalid stops는 초보자가 MT5 백테스트에서 자주 만나는 오류입니다. 다음 순서로 확인합니다.
invalid stops는 전략 성과가 아니라 주문 조건 문제를 알려 주는 실행 오류입니다. 오류를 숨기지 말고 당시 심볼 설정과 입력값을 함께 남겨야 재현할 수 있습니다.
| 순서 | 확인할 것 | 조치 |
|---|---|---|
| 1 | 손절·익절 방향이 주문 종류와 맞는가 | 매수는 SL이 Bid 아래·TP가 위인지, 매도는 SL이 Ask 위·TP가 아래인지 확인 |
| 2 | 현재 호가에서 최소 거리를 지켰는가 | Bid/Ask와 SYMBOL_TRADE_STOPS_LEVEL을 같은 시점에 기록해 가격 차이 계산 |
| 3 | 가격이 유효한 호가 단위인가 | _Digits 반올림만 믿지 말고 SYMBOL_TRADE_TICK_SIZE 배수로 정렬 |
| 4 | 시장가·지정가 규칙을 혼동하지 않았는가 | 주문 종류별 진입가와 stop 방향을 다시 확인 |
| 5 | 서버가 실제로 무엇을 거부했는가 | ResultRetcode(), 설명, deal·order 번호를 Journal과 함께 기록 |
| 6 | 기존 주문·포지션을 수정·취소·청산하는가 | 초기 stop 거리와 분리해 SYMBOL_TRADE_FREEZE_LEVEL 및 TRADE_RETCODE_FROZEN 점검 |
1편의 예제 EA는 초기 손절·익절 거리를 SYMBOL_TRADE_STOPS_LEVEL + MinStopBufferPoints로 보정하고 가격을 SYMBOL_TRADE_TICK_SIZE에 맞춥니다. SYMBOL_TRADE_FREEZE_LEVEL은 초기 거리와 합치지 않고, 이후 기존 주문·포지션에 대한 수정·취소·청산 경로에서 서버 규칙과 함께 따로 확인합니다. 무조건 거리를 넓히기 전에 방향, 호가, tick size, 주문 종류, 서버 retcode부터 확인하세요. 더 자세한 진단 순서는 Fix `invalid stops` in MT5: Stop Levels, Tick Size, and Retcodes(영문)에 정리했습니다.
전체 기간 한 번으로 판단하면 안 됩니다
백테스트에서 가장 위험한 착각은 전체 기간 결과 하나만 보고 전략을 판단하는 것입니다. 전체 결과가 좋아 보여도 특정 한 달, 특정 한 해의 큰 수익이 나머지 부진을 덮었을 수 있습니다.
예를 들어 2024년부터 2026년까지 테스트할 수 있다면 다음처럼 나눕니다.
| 테스트 이름 | 기간 예시 | 확인할 질문 |
|---|---|---|
| 전체 구간 | 2024-01-01 ~ 2026-06-30 | 전략의 큰 흐름은 어떤가 |
| 1년차 | 2024-01-01 ~ 2024-12-31 | 특정 해에만 좋았는가 |
| 2년차 | 2025-01-01 ~ 2025-12-31 | 다른 시장에서도 버티는가 |
| 최근 6개월 | 2026-01-01 ~ 2026-06-30 | 최근 조건에서 무너지지 않는가 |
| 급변동 구간 | 급등·급락이 있던 날짜 | 연속 손실과 주문 거부가 늘어나는가 |
시장 구간을 정확히 구분하기 어렵다면 처음에는 날짜만 기계적으로 나눠도 됩니다. 중요한 것은 한 번의 결과를 믿지 않는 습관입니다.
백테스트 기록표를 남기는 방법
백테스트를 한 뒤에는 결과 캡처만 저장하지 말고 표로 기록합니다.
| 기록 항목 | 예시 | 왜 필요한가 |
|---|---|---|
| 테스트 날짜 | 2026-07-08 | 나중에 데이터 조건을 비교 |
| 운영체제·MT5 터미널 빌드 | Help → About에 표시된 값 | UI와 테스트 엔진 차이 확인 |
| 브로커·서버·계좌 유형 | 데모 환경 식별값 | 심볼 사양과 거래 조건 차이 확인 |
| EA 파일명·버전 | 파일명과 #property version | 같은 코드인지 확인 |
| Symbol | NAS100+ | 상품이 바뀌면 결과도 바뀜 |
| Timeframe | H1 | 시간봉 비교 기준 |
| 기간 | 2024-01-01 ~ 2026-06-30 | 시장 구간 확인 |
| Modeling·History Quality | 선택값과 결과값 | 사용한 가격 데이터 조건 확인 |
| Lots | 0.01 | 위험 노출 확인 |
| StopLossPoints | 500 | 손절 조건 기록 |
| TakeProfitPoints | 1000 | 익절 조건 기록 |
| Net Profit | 결과값 | 최종 손익 |
| Max Drawdown | 결과값 | 중간 최대 낙폭 |
| Total Trades | 결과값 | 통계 의미 확인 |
| Profit Factor | 결과값 | 총이익과 총손실 비율 |
| Journal 오류 | 있음/없음 | 주문 거부와 데이터 문제 확인 |
이 표가 쌓이면 나중에 전략을 개선할 때 훨씬 편해집니다. 자동매매는 “이번 결과가 좋았다”보다 “어떤 조건에서 나빠졌는지 설명할 수 있다”가 더 중요합니다. AI 트레이딩이나 AI 주식 전략을 만들 때도 이 기록이 있어야 AI에게 무엇을 고쳐 달라고 요청할 수 있습니다.
Journal, Backtest, Graph 읽는 순서
최근 MT5 Strategy Tester에서는 Overview, Settings, Inputs, Backtest, Graph, Agents, Journal 같은 탭이 보일 수 있습니다. 터미널 빌드나 브로커 제공 버전에 따라 이름과 배치는 달라질 수 있지만, 아래 읽기 순서는 같습니다.
Profit Factor, Expected Payoff, Drawdown을 아직 해석하지 못해도 됩니다. 먼저 각 숫자가 어느 탭에 있고 어떤 설정으로 만들어졌는지 확인합니다.
| 탭 | 먼저 볼 것 | 해석 기준 |
|---|---|---|
| Journal | 오류 메시지 | 주문이 정상적으로 들어갔는지 확인 |
| Backtest | 핵심 통계와 거래 내역 | 거래 수·드로다운을 확인하고 진입·청산이 규칙과 맞는지 점검 |
| Graph | 잔고 곡선 | 우상향보다 중간 낙폭을 먼저 확인 |
| Settings / Inputs | 테스트 조건과 EA 입력값 | 나중에 같은 결과를 재현할 수 있는지 확인 |
Overview는 Profit Factor와 Drawdown을 보여 주는 요약 리포트가 아니라 테스트 작업 선택과 이전 결과 목록을 보여 주는 시작 화면에 가깝습니다. 오래된 문서나 다른 버전에서 Result 또는 Results라고 부르는 영역이 현재 화면에 없다면 Backtest 탭에서 핵심 통계와 거래 내역을 확인합니다. 별도 Report 탭이 없어도 Backtest 탭의 저장 메뉴로 리포트를 내보낼 수 있습니다.
순이익은 가장 마지막에 보는 편이 낫습니다. 순이익이 플러스라도 최대 드로다운이 지나치게 크면 은퇴자금이나 장기 운영에는 맞지 않을 수 있습니다. 반대로 순이익이 작아도 거래 수가 충분하고 드로다운이 낮으며 여러 기간에서 비슷하게 버티면 연구할 가치가 있을 수 있습니다.
초보자가 자주 하는 실수
| 실수 | 왜 위험한가 |
|---|---|
| 최근 한 달 결과만 봄 | 우연한 시장 구간일 수 있음 |
| lot을 키워 수익금을 크게 만듦 | 전략 개선이 아니라 위험 확대 |
| Journal 오류를 무시함 | 주문 실패가 결과를 왜곡할 수 있음 |
| 한 상품 결과를 다른 상품에 그대로 적용 | 심볼별 포인트, 스프레드, 거래 시간이 다름 |
| Optimization 결과 1등만 믿음 | 과거 데이터에 과하게 맞춘 값일 수 있음 |
| 스프레드와 스왑을 무시함 | 실거래와 괴리가 커짐 |
백테스트는 “좋은 전략을 증명하는 도구”라기보다 “위험한 전략을 빨리 걸러내는 도구”에 가깝습니다. 이 관점으로 보면 결과를 더 차분하게 볼 수 있습니다.
Optimization은 언제 켜야 하나
Strategy Tester에는 Optimization 기능이 있습니다. 여러 입력값 조합을 자동으로 돌릴 수 있기 때문에 좋아 보이지만, 초보자가 너무 빨리 쓰면 오히려 위험합니다.
최적화는 지금 당장 하지 않아도 됩니다. 기본 백테스트와 결과 기록이 익숙해질 때까지는 Disabled로 둡니다.
최적화는 다음 조건을 만족한 뒤에만 진행하는 편이 좋습니다.
- 단일 백테스트를 직접 설정할 수 있습니다.
- Journal, Backtest, Graph와 Settings / Inputs를 읽을 수 있습니다.
- 같은 설정으로 기간을 나눠 테스트해 봤습니다.
- 전략이 어떤 시장에서 약한지 설명할 수 있습니다.
- 바꾸려는 입력값의 의미를 말로 설명할 수 있습니다.
처음 최적화를 한다면 StopLossPoints, TakeProfitPoints처럼 의미가 분명한 값만 작게 범위를 잡습니다. 최적화 결과 1등 조합보다, 여러 구간에서 지나치게 무너지지 않는 넓은 범위를 찾는 것이 더 중요합니다.
데모 계좌 검증은 백테스트 다음입니다
백테스트가 끝났다고 바로 실계좌로 넘어가면 안 됩니다. 다음 단계는 데모 계좌에서 며칠 동안 실제 시세 흐름에 EA를 붙여 보는 것입니다.
| 확인 항목 | 질문 |
|---|---|
| EA가 꺼지지 않는가 | PC, 인터넷, MT5 상태가 안정적인가 |
| 중복 주문이 없는가 | 같은 방향 포지션이 과하게 쌓이지 않는가 |
| 손절 없는 포지션이 없는가 | 위험 제한 주문이 빠지지 않는가 |
| Journal 오류가 반복되지 않는가 | 주문 거부, 권한 문제, 데이터 문제가 없는가 |
| 백테스트와 큰 차이가 나는가 | 스프레드, 슬리피지, 체결 조건 차이가 있는가 |
데모 계좌에서 확인할 핵심은 수익이 아닙니다. 자동매매가 며칠 동안 문제 없이 켜져 있고, 예상한 규칙대로만 주문을 내는지 보는 것입니다.
실계좌 전에 반드시 멈춰서 확인할 것
다음 질문에 답하지 못하면 실계좌로 넘어가지 않는 것이 좋습니다.
| 질문 | 이유 |
|---|---|
| 이 EA는 어떤 조건에서 매수·매도하는가 | 전략 구조를 모르면 문제 발생 시 대응 불가 |
| 손절은 어디에 들어가는가 | 손실 제한 없는 자동매매는 위험 |
| 1회 손실은 계좌의 몇 퍼센트인가 | lot과 손절폭을 계좌 기준으로 봐야 함 |
| 최근 3년, 1년, 6개월 결과가 어떤가 | 특정 기간 우연인지 확인 |
| 최대 드로다운을 감당할 수 있는가 | 장기 운영에는 심리적 낙폭이 중요 |
| Journal 오류는 없는가 | 주문 실패가 반복되면 결과 신뢰도 하락 |
| 데모와 실계좌 조건 차이는 무엇인가 | 스프레드, 수수료, 슬리피지, 스왑 차이 |
자동매매는 버튼 하나로 끝나는 기술이 아닙니다. EA 코드, 백테스트, 기간별 검증, 데모 운영, 리스크 제한이 한 세트입니다. 이 글의 목적은 수익 전략을 제시하는 것이 아니라, MT5 Strategy Tester로 전략을 의심하고 걸러내는 기본 절차를 익히는 것입니다.
다음 포스팅 예고
다음 글에서는 MT5 Strategy Tester 결과 리포트 읽는 법을 다룹니다. Profit Factor, Expected Payoff, Max Drawdown, Recovery Factor, Sharpe Ratio, 거래 수, 연속 손실을 어떻게 해석해야 하는지 초보자 기준으로 정리합니다.