MT5 테스터 입력값 캐시에 속지 않는 법
목차
결론: 테스터의 입력값에는 "이전 값"이 남아 있다고 생각하세요
MT5 스트래티지 테스터는 EA별로 이전 입력값을 기억합니다. 편리한 기능이지만, EA를 업데이트한 뒤나 다른 검증을 막 끝낸 직후에는 검증했다고 생각한 설정과 실제로 돌아간 설정이 서로 다른 일이 생길 수 있습니다.
저희가 내린 대책은 단순합니다. 테스터 화면에 표시된 값을 믿지 않습니다. 설정 파일의 [TesterInputs]에 전체 항목을 적고, 리포트에 남은 입력값으로 확인합니다. 이 글에서는 그 이유와 절차를 설명합니다.
📧 무료 이메일 강좌(총 8통) + 구독자 전용 MT5 지표 13종 팩
가입 직후, 사이트의 MT5 지표 13종을 컴파일된 파일(.ex5)·소스 코드·사용 가이드로 묶은 구독자 전용 팩의 다운로드 링크를 보내 드립니다. 이어서 FX 자동매매의 본질, 백테스트를 올바르게 읽는 법, 브로커 선택 요령 등을 총 8통(처음 5일은 매일 1통, 이후 가입 7·14·30일 후)으로 전해 드립니다. MQL5 Market 판(출시가·판매량에 따라 단계적 인상)의 가격 인상 전 알림도 받으실 수 있습니다. 이 사이트의 EA는 제휴 브로커의 실계좌가 있으면 무료입니다.
※ 개인정보는 엄격히 보호. 언제든 구독 해지 가능.
왜 다른 설정을 검증하게 될까
테스터는 입력값을 저장해 두고 재사용한다
MT5 테스터는 마지막으로 사용한 파라미터를 EA별로 저장해 두었다가, 다음에 같은 EA를 선택하면 그대로 불러옵니다. 값을 직접 입력하는 수고는 덜지만, 다음과 같은 상황에서 사고가 납니다.
- EA를 개선해서 기본값을 바꿨는데, 테스터에는 예전 값이 남아 있었다
- 최적화에서 극단적인 값을 시험한 뒤, 그 값 그대로 일반 백테스트를 돌렸다
- 다른 통화쌍용으로 바꾼 랏 크기나 필터 설정이 다음 검증으로 넘어갔다
모두 화면을 제대로 보면 알아챌 수 있는 것들입니다. 하지만 입력 항목이 수십 개인 EA에서는 하나만 달라도 놓치기 쉽습니다.
결과가 "그럴듯해" 보이는 것이 문제다
설정이 달라도 테스터는 오류를 내지 않습니다. 결과가 완전히 엉뚱하면 알아채겠지만, 곤란한 것은 그럴듯한 숫자가 나오는 경우입니다.
예로, 같은 USDJPY H1에서 동작하는 Donchian 계열 EA 두 개를 나란히 놓아 보겠습니다(둘 다 MT5 실제 환경 백테스트의 실측값입니다).
| EA | PF | 거래 수 | 유효 DD |
|---|---|---|---|
| DONCHIAN ENGINE | 1.5 | 631 | 10.8% |
| MEGAMAX DONCHIAN | 1.55 | 629 | 58.6% |
PF도 거래 수도 거의 같은데 유효 DD는 크게 다릅니다. 두 EA의 설계 차이는 각 EA 페이지에 적어 두었으니, 여기서 말씀드리고 싶은 것은 PF나 거래 수만 보면 어느 설정으로 돌았는지 구분할 수 없다는 점입니다. 입력값이 하나만 어긋나도 리스크 평가가 통째로 달라질 수 있습니다.
저희의 확인 절차
1. 설정 파일의 [TesterInputs]에 전체 항목을 적는다
MT5는 설정 파일(ini)을 넘겨서 테스터를 실행할 수 있습니다. 그 [TesterInputs] 섹션에 바꿀 항목만이 아니라 모든 입력값을 적습니다.
[Tester]
Expert=MyEA
Symbol=USDJPY
Period=H1
Model=4
[TesterInputs]
InpLots=0.10||0.10||0.01||1.00||N
InpPeriod=20||10||5||50||N
서식은 "값||시작||스텝||종료||최적화 여부(Y/N)"입니다. 일반 백테스트라면 끝은 N으로 둡니다.
여기에 적지 않은 항목이 어떤 값으로 동작할지는 환경에 따라 달라질 수 있으므로 기대하지 않습니다. "기본값 그대로겠지"라는 믿음이야말로 이번 주제의 사고 그 자체이기 때문입니다.
2. 리포트의 입력 파라미터를 대조한다
테스터 리포트에는 실제로 사용된 입력값이 남습니다. 검증이 끝나면 ini와 리포트의 입력값을 맞춰 봅니다. 눈으로 비교하는 것보다 텍스트로 만들어 diff를 뜨는 편이 확실합니다.
3. EA를 업데이트하면 "다른 EA"로 취급한다
개선하면서 기본값을 바꾼 EA는 파일명에 버전을 붙여 다른 이름으로 저장합니다. 예전 저장값이 자동으로 불러와지는 경로를 처음부터 끊어 두기 위해서입니다.
체크리스트
-
[TesterInputs]에 모든 입력 항목을 적었다 - 최적화 후에는 모든 항목의 끝이
N으로 돌아가 있다 - 리포트의 입력값이 ini와 일치했다
- EA 개선 후 파일명을 바꿨다
- 종목·시간봉·모델링도
[Tester]에서 명시했다
한계와 주의점
이 방식으로도 모든 사고를 막을 수는 없습니다.
- EA 쪽에 입력값으로 노출되지 않은 내부 상수는 ini로 관리할 수 없습니다. 소스가 같은지는 다른 방법으로 확인해야 합니다.
- 입력값이 정확하더라도 히스토리 데이터나 스프레드 조건이 다르면 결과는 달라집니다. 입력값 대조는 재현성을 유지하기 위한 하나의 요소일 뿐입니다.
- 저희 자신도, 이 절차를 철저히 지키기 전에 돌린 검증이 모두 옳았다고 단언할 수는 없습니다. 파악한 범위에서는 다시 검증했지만, 빠뜨린 것이 절대 없다고는 말씀드릴 수 없습니다.
배포 중인 EA의 설정 방법은 EA 설정 방법에, 그 밖의 검증 노하우는 지식 베이스에 정리해 두었습니다.
정리
- MT5 테스터는 이전 입력값을 기억하고 있어, 모르는 사이에 그대로 이어받는다
- 설정이 어긋나도 오류는 나지 않고 그럴듯한 숫자가 나오기 때문에 알아채기 어렵다
- 대책은
[TesterInputs]에 전체 항목을 적는 것과 리포트의 입력값과 대조하는 것 - EA를 개선하면 다른 이름으로 저장해 예전 저장값이 불러와지지 않게 한다
- 그래도 내부 상수나 데이터 조건의 차이는 막을 수 없으므로, 입력값 관리는 검증의 일부일 뿐이다
관련 기사
📧 무료 이메일 강좌(총 8통) + 구독자 전용 MT5 지표 13종 팩
가입 직후, 사이트의 MT5 지표 13종을 컴파일된 파일(.ex5)·소스 코드·사용 가이드로 묶은 구독자 전용 팩의 다운로드 링크를 보내 드립니다. 이어서 FX 자동매매의 본질, 백테스트를 올바르게 읽는 법, 브로커 선택 요령 등을 총 8통(처음 5일은 매일 1통, 이후 가입 7·14·30일 후)으로 전해 드립니다. MQL5 Market 판(출시가·판매량에 따라 단계적 인상)의 가격 인상 전 알림도 받으실 수 있습니다. 이 사이트의 EA는 제휴 브로커의 실계좌가 있으면 무료입니다.
※ 개인정보는 엄격히 보호. 언제든 구독 해지 가능.
EA나 FX에 대해 궁금한 점이 있나요?
Nattzy 트레이딩 포럼에 질문을 올릴 수 있습니다(무료 가입). 이 글의 내용이 아니어도 EA 설정이나 브로커 선택 등 어떤 질문이든 환영합니다.
Nattzy에서 질문하기 ↗