홈 > 블로그 > 확정봉만 보는 EA는 왜 리페인트하지 않을까

MQL5EA 설계백테스트

확정봉만 보는 EA는 왜 리페인트하지 않을까

공개일: 2026-11-01읽기 시간: 약 6분
⏱ 본 기사는 게시일 시점의 정보입니다. EA의 실적 수치(PF·DD·연율)는 운용 및 재검증으로 변동하므로 최신 값은 각 EA 페이지에서 확인하세요. 최신 EA 실적 보기 →

결론부터 말하면, 확정봉만으로 판단하는 EA의 신호가 잘 바뀌지 않는 이유는 판단 재료가 그 시점에 더 이상 움직이지 않기 때문입니다. 형성 중인 봉은 종가도 고가도 저가도 다음 틱에서 바뀔 수 있습니다. 반면 마감된 봉의 4개 가격(시가·고가·저가·종가)은 보통 확정 후에 움직이지 않습니다.

다만 확정봉을 읽는다고 해서 안전하다고 단정할 수는 없습니다. 인디케이터 계산이나 상위 시간대 처리 방식에 따라, 확정봉을 쓰고 있다고 생각해도 미래의 값이 섞여 들어가는 경우가 있습니다.

왜 형성 중인 봉은 위험한가

MQL5에서 시프트 0은 형성 중인 봉, 시프트 1은 가장 최근에 확정된 봉입니다. 시프트 0의 종가는 "지금 가격"일 뿐입니다. 이를 판단에 사용하면 다음과 같은 문제가 생깁니다.

  • 틱마다 조건이 성립했다가 사라져서, 한 번 진입한 근거가 나중에 없어진다
  • 봉이 마감된 뒤 차트에는 남지 않는 순간적인 신호로 체결된다
  • 테스터에서는 틱 생성 방식에 따라 결과가 쉽게 달라지며, 봉 내부의 가격 움직임이 실제와 다르면 그 차이가 곧바로 성적에 반영된다
항목형성 중인 봉(시프트 0)확정봉(시프트 1 이후)
판단 재료의 값확정될 때까지 변화보통 변하지 않음
신호의 재현성낮음높음
진입 속도빠름확정을 기다리는 만큼 느림
테스터 틱 방식의 영향판단 자체가 달라질 수 있음판단에 미치는 영향은 작음(청산에는 남음)

형성 중인 봉을 쓰는 것이 항상 잘못은 아닙니다. 돌파를 즉시 포착하는 설계도 있습니다. 그런 경우에는 "봉 내부의 움직임에 의존한다"는 점을 인정하고, 실제 틱 기반 검증을 중시해야 합니다.

추천 브로커 비교 →

🎁 무료 EA 다운로드

📧 무료 이메일 강좌(총 8통) + 구독자 전용 MT5 지표 13종 팩

가입 직후, 사이트의 MT5 지표 13종을 컴파일된 파일(.ex5)·소스 코드·사용 가이드로 묶은 구독자 전용 팩의 다운로드 링크를 보내 드립니다. 이어서 FX 자동매매의 본질, 백테스트를 올바르게 읽는 법, 브로커 선택 요령 등을 총 8통(처음 5일은 매일 1통, 이후 가입 7·14·30일 후)으로 전해 드립니다. MQL5 Market 판(출시가·판매량에 따라 단계적 인상)의 가격 인상 전 알림도 받으실 수 있습니다. 이 사이트의 EA는 제휴 브로커의 실계좌가 있으면 무료입니다.

※ 개인정보는 엄격히 보호. 언제든 구독 해지 가능.

신호 확정 설계

CopyRates는 시작 위치와 정렬 순서를 명시한다

새 봉의 첫 틱에서 한 번만 확정봉을 읽습니다.

datetime g_lastBar = 0;

void OnTick()
{
   datetime t = iTime(_Symbol, _Period, 0);
   if(t == 0 || t == g_lastBar) return;

   MqlRates r[];
   ArraySetAsSeries(r, true);
   if(CopyRates(_Symbol, _Period, 1, 2, r) != 2) return;

   g_lastBar = t;
   // r[0]이 가장 최근 확정봉, r[1]이 그 바로 앞의 봉
}

요점은 세 가지입니다. 시작 위치를 1로 지정해 형성 중인 봉을 가져오는 범위에서 제외할 것, ArraySetAsSeries로 정렬 순서를 정할 것, 가져오기에 실패하면 g_lastBar를 갱신하지 않고 다음 틱에서 재시도할 것입니다. 정렬 순서 지정을 잊으면 배열의 맨 앞이 가장 오래된 봉이 됩니다.

iBarShift는 상위 시간대에서 함정이 된다

상위 시간대를 참조할 때 iBarShift가 반환하는 것은 "그 시각을 포함하는 봉"입니다. 현재 시각을 넘기면 보통 형성 중인 상위 시간대 봉이 반환됩니다.

int s = iBarShift(_Symbol, PERIOD_H1, TimeCurrent(), false);
if(s < 0) return;
double closedH1 = iClose(_Symbol, PERIOD_H1, s + 1);

확정된 상위 시간대 봉이 필요하다면 이렇게 한 칸 오래된 봉을 지정합니다.

전형적인 리페인트는 하위 시간대 차트에 상위 시간대의 값을 그리는 인디케이터에서 발생합니다. 과거의 하위 시간대 봉 각각에 같은 시각을 포함하는 상위 시간대 봉의 종가를 할당하면, 그 시점에는 아직 존재하지 않았던 최종값이 과거에 그려집니다. 차트상으로는 적중한 것처럼 보여도 실시간에서는 같은 판단을 할 수 없습니다.

네 번째 인수인 exact를 false로 하면 해당 봉이 없을 때 가까운 봉이 반환됩니다. 데이터 누락을 알아채기 어려워지므로, 가져온 봉의 시각도 함께 확인하면 안전합니다. 다른 종목이나 다른 시간대의 데이터는 갱신이 늦어지기도 하므로, 기대한 시각의 봉인지 대조한 뒤에 판단합니다.

재시작 시 이중 판정을 막는다

위 코드의 g_lastBar는 EA를 재시작하면 초기값으로 돌아갑니다. 같은 확정봉에서 다시 판정해 이중 진입하는 일이 없도록, 보유 포지션이나 최근 체결 시각도 확인하는 설계가 필요합니다.

사용자가 할 수 있는 확인 절차

소스 코드를 읽지 못하더라도 다음 방법으로 어느 정도는 확인할 수 있습니다.

  1. 비주얼 모드로 보기: 테스터의 비주얼 모드에서 진입 시각이 봉이 시작되는 시점 부근에 모여 있는지 확인한다. 봉 중간에 자주 체결된다면 형성 중인 봉을 쓰고 있을 가능성이 있다(청산은 별개).
  2. 모델링을 바꿔 비교하기: 같은 기간·같은 설정에서 시가만, 모든 틱, 실제 틱 기반 모든 틱을 시험한다. 진입 횟수나 시각이 크게 어긋난다면 봉 내부 움직임에 대한 의존을 의심한다.
  3. 인디케이터 화살표 기록하기: 화살표가 나타난 시각을 스크린샷 등으로 남기고, 몇 개 뒤의 봉과 비교한다. 위치가 바뀌거나 사라진다면 리페인트하고 있는 것이다.
  4. 배포처에 문의하기: 확정봉으로 판단하는지, 상위 시간대를 어떻게 다루는지 문의한다.

모두 정황 증거일 뿐이며, 이것만으로 "리페인트 없음"을 증명할 수는 없습니다. 인디케이터를 시험해 보고 싶다면 무료 인디케이터로 절차를 연습하고, EA 도입은 EA 설정 방법을 참고하세요.

한계와 주의점

확정봉 판단에는 불리한 면도 있습니다.

  • 진입이 늦어진다: 확정을 기다리는 동안 가격이 움직여 불리한 위치에서 진입할 수 있습니다. 급등락 국면에서는 그 차이가 커질 수 있습니다.
  • 봉 시작 시점의 비용: 새 봉의 첫 틱에 주문이 몰리는 설계에서는 스프레드가 넓은 시간대나 갭의 영향을 받을 수 있습니다.
  • 미래를 참조하는 인디케이터는 막을 수 없다: ZigZag처럼 나중에 모양이 바뀌는 것이나 확정에 후속 봉이 필요한 것은, 읽는 위치에 따라 확정봉이라도 값이 변합니다.
  • 확정봉도 브로커마다 다르다: 서버 시각이나 배신 레이트가 다르면 4개 가격도 달라지므로, 같은 EA라도 브로커가 바뀌면 판단이 달라질 수 있습니다. 히스토리가 나중에 수정될 가능성도 부정할 수 없습니다.
  • 청산은 봉 안에서 일어난다: 진입 판단이 확정봉 기준이라도 스톱로스나 이익 실현은 봉 도중에 체결됩니다. 이 부분은 여전히 틱의 품질에 좌우됩니다.

그리고 가장 중요한 것은 리페인트하지 않는 것과 수익이 나는 것은 별개라는 점입니다. 저희 EA 중에도 과거 데이터 검증은 양호했지만 데모 계좌 포워드 테스트에서는 마이너스인 것이 있습니다. 확정봉인지 여부는 검증 결과를 신뢰하기 위한 전제 중 하나일 뿐, 미래의 성적을 보여 주는 것이 아닙니다. 또한 확정봉을 쓰는지는 EA 설계마다 다르므로, EA를 고를 때는 개별적으로 확인하고 실측 랭킹의 수치와 함께 판단하세요. 관련된 검증 방식은 EA·MT5 노하우에 정리해 두었습니다.

정리

  • 형성 중인 봉의 값은 확정될 때까지 움직이므로 신호가 사라지거나 바뀐다
  • 확정봉으로 판단하면 판단 재료가 고정되고 틱 생성 방식의 영향도 받기 어려워진다
  • CopyRates는 시작 위치와 정렬 순서를 명시하고, 가져오기에 실패하면 재시도한다
  • iBarShift는 형성 중인 상위 시간대 봉을 반환하기 쉬우므로, 확정봉을 읽으려면 시프트를 한 칸 옮긴다
  • 상위 시간대 값을 그리는 것과 미래를 참조하는 인디케이터는 리페인트의 전형적인 예다
  • 확정봉에는 지연과 비용의 문제가 있으며, 수익을 약속하는 것은 아니다

📧 무료 이메일 강좌(총 8통) + 구독자 전용 MT5 지표 13종 팩

가입 직후, 사이트의 MT5 지표 13종을 컴파일된 파일(.ex5)·소스 코드·사용 가이드로 묶은 구독자 전용 팩의 다운로드 링크를 보내 드립니다. 이어서 FX 자동매매의 본질, 백테스트를 올바르게 읽는 법, 브로커 선택 요령 등을 총 8통(처음 5일은 매일 1통, 이후 가입 7·14·30일 후)으로 전해 드립니다. MQL5 Market 판(출시가·판매량에 따라 단계적 인상)의 가격 인상 전 알림도 받으실 수 있습니다. 이 사이트의 EA는 제휴 브로커의 실계좌가 있으면 무료입니다.

※ 개인정보는 엄격히 보호. 언제든 구독 해지 가능.

EA나 FX에 대해 궁금한 점이 있나요?

Nattzy 트레이딩 포럼에 질문을 올릴 수 있습니다(무료 가입). 이 글의 내용이 아니어도 EA 설정이나 브로커 선택 등 어떤 질문이든 환영합니다.

Nattzy에서 질문하기 ↗

댓글 및 질문