안녕하세요, 트레이더 여러분! 오늘은 메타트레이더 5에서 경제 캘린더의 중요성과 이를 활용해 백테스팅을 진행하는 방법에 대해 이야기해 보겠습니다.
경제 캘린더와 역사적 시세의 불일치 문제
간단히 말하자면, 메타트레이더 5의 내장 경제 캘린더는 역사적 시세와 완벽하게 동기화되지 않습니다. 각 바가 형성될 당시 서버에서의 시간대에 따라 시세가 타임스탬프가 찍히게 되죠. 하지만, 경제 캘린더는 현재 서버 시간대와 연결된 과거, 현재, 미래의 이벤트 정보를 제공합니다.
따라서 많은 브로커들이 특정 시간대에 맞춰 운영되므로, 역사적 이벤트의 타임스탬프가 관련 바에 비해 1시간 정도 이동할 수 있습니다. 특히, 일광 절약 시간제(DST)가 적용되는 경우가 많습니다.
뉴스 기반 전략 테스트의 중요성
이런 변화는 온라인에서는 그리 중요해 보이지 않을 수 있지만, 만약 뉴스 기반 전략을 테스트하고 싶다면 이야기가 달라집니다. 메타트레이더의 테스터에서 캘린더가 원래 지원되지 않지만, 많은 트레이더들이 뉴스를 기반으로 거래를 하며, 그렇지 않은 분들도 뉴스에 주목하여 시장이 과열되기 전에 미리 대처해야 합니다. 그래서 캘린더를 활용한 백테스팅은 정말 중요합니다.
캘린더를 외부 저장소에 내보내고, 이를 테스터에 가져오는 것도 좋은 방법입니다. 이런 캘린더를 백업하는 도구로는 알고트레이딩 책에서 소개된 것을 참고할 수 있습니다.
경제 이벤트 모니터링
이제 CalendarCache.mqh의 확장 버전과 CalendarMonitorCachedTZ.mq5라는 지표를 통해 역사적 시세와 이벤트 간의 비동기화 문제를 해결할 수 있게 되었습니다. 이 지표는 과거 및 미래의 여러 이벤트를 동적으로 업데이트하는 차트 테이블을 제공합니다.
시간 보정 작업은 TimeServerDST.mqh라는 공개 라이브러리에서 진행됩니다. 시간 보정이 어떻게 작동하는지 이해하고 싶다면, CalendarCSVForDates.mq5 스크립트를 사용해 보세요.
지표 사용법
지표를 온라인 차트에 연결할 때 CalendarCacheFile가 비어있으면 내장 캘린더와 실시간으로 작업하게 됩니다. 또한, 특정 이름으로 지표를 실행하면 지정한 캐시 파일에 캘린더 기록을 저장합니다. 이때 타임스탬프 보정 작업이 진행될 수 있습니다.
지표가 기존 캐시 파일 이름으로 실행되면 해당 캐시를 로드하여 내장 캘린더와 동일하게 작업하게 됩니다. 이는 테스터에서 특히 유용합니다.

테스터를 사용할 때는 추가 파일을 지정해야 합니다. 이 경우 준비된 온라인 캘린더 파일을 #property tester_file 지시어에 추가하거나, C:/Users/<User>/AppData/Roaming/MetaQuotes/Terminal/Common/ 폴더에 배치해야 합니다.
물론, 캐시는 백테스트 및 최적화 시 EA에도 로드될 수 있습니다.
타임스탬프 보정 설정
지표의 입력 문자열 FixCachedTimesBySymbolHistory는 다음과 같은 방식으로 처리됩니다. 만약 비어 있다면, 지표는 타임 보정 없이 캐시를 저장합니다.
타임 보정을 활성화하려면, 서버의 역사적 시간대를 감지하는 데 사용할 심볼을 지정해야 하며, 일반적으로