시간 필터 하나가 다음 신호까지 바꿔버린 적이 있다
시간 필터는 단순해 보입니다. 허용 시간이 아니면 주문만 안 내면 끝이라고 생각했습니다. 그런데 전체시간 백테스트를 나중에 시간으로 잘라낸 결과와, EA 안에 같은 시간 필터를 넣어 다시 돌린 결과가 달라진 적이 있습니다. 필터가 주문만 막은 게 아니었기 때문입니다.
시간 필터와 주문 상태머신
전체시간 원장과 EA 내부 시간 필터 결과 비교
SETUP→SIGNAL→PENDING→FILLED→EXIT 상태 전이와 실행 게이트 분리
시간 조건 자체가 전략 정의에 포함되는 경우에는 별도 시스템으로 다시 검증해야 함

사후 필터링과 EA 내장 필터 결과가 달랐다
처음에는 전체 거래 원장에서 허용 시간만 남기면 EA 안에 시간 필터를 넣은 것과 같은 결과가 나와야 한다고 생각했습니다. 실제로는 거래 수와 이후 신호 경로가 달라지는 케이스가 있었습니다.
원인을 따라가 보니 허용시간 밖에서 주문이 차단될 때 대기 상태나 잠금 상태까지 같이 소비되는 구조가 있었습니다. 그 결과 다음 허용시간에 와야 할 신호까지 사라지거나 순서가 바뀌었습니다.
실행 게이트와 전략 상태를 분리했다
수정 원칙은 단순했습니다. 원본 전략이 SIGNAL까지 만들어내는 경로는 시간 필터와 무관하게 유지하고, 실제 주문을 낼지 말지만 별도 execution gate에서 결정했습니다.
단, 전략 정의 자체가 '이 시간에는 setup을 만들지 않는다'라면 이야기가 다릅니다. 그 경우에는 단순 실행 필터가 아니라 전략 조건으로 명시하고 처음부터 별도 시스템으로 검증해야 합니다.
상태머신을 글로 먼저 적는 게 도움이 됐다
SETUP → SIGNAL → PENDING → FILLED → ACTIVE → EXIT → RESET의 각 화살표에 언제 상태가 바뀌는지 적었습니다. 주문 reject는 SIGNAL을 소비하는지, pending 취소 후 setup은 남는지, 손절 뒤 재진입 상태는 어디에서 살아나는지도 문장으로 고정했습니다.
코드만 보면 if문 하나 추가한 것처럼 보여도 상태 전이 관점에서 보면 전략이 바뀌는 수정이 많았습니다. 이후에는 필터를 추가하기 전에 상태 다이어그램부터 확인하게 됐습니다.
자주 묻는 질문
시간 필터가 상태머신을 바꾼 문제에서 가장 중요한 결론은 무엇인가요?
시간 필터가 실행 게이트인지 전략 규칙인지 먼저 정의해야 합니다. 주문 차단이 원본 신호 상태까지 소비하면 다른 전략이 됩니다.
사후 필터링과 EA 내장 필터 결과가 달랐다에서는 무엇을 확인했나요?
처음에는 전체 거래 원장에서 허용 시간만 남기면 EA 안에 시간 필터를 넣은 것과 같은 결과가 나와야 한다고 생각했습니다. 실제로는 거래 수와 이후 신호 경로가 달라지는 케이스가 있었습니다.
이 연구 결과를 실제 수익이나 미래 성과로 봐도 되나요?
아닙니다. 이 글의 수치는 특정 데이터와 실행 조건에서 관찰한 백테스트·감사 결과입니다. 실제 거래에서는 스프레드, 슬리피지, 브로커 환경, 포지션 크기와 시장 상황이 달라질 수 있으므로 별도의 포워드 검증이 필요합니다.
핵심만 다시 정리하면
- 시간 필터가 실행 게이트인지 전략 규칙인지 먼저 정의해야 합니다. 주문 차단이 원본 신호 상태까지 소비하면 다른 전략이 됩니다.
- 이 글의 수치는 해당 연구 당시의 데이터와 실행 조건에서 얻은 결과이며, 이후 시장에서도 그대로 반복된다는 뜻은 아닙니다.
- 실전 적용 여부는 백테스트 수치 하나보다 재현성, 비용, 다른 기간·브로커 검증과 포워드 기록을 함께 보고 판단해야 합니다.
자료와 해석 범위
2026-08-20 백테스트 검증 프로토콜에 정리한 실제 상태머신 감사 사례를 바탕으로 작성했습니다.
한계: 시간 조건 자체가 전략 정의에 포함되는 경우에는 별도 시스템으로 다시 검증해야 함
백테스트와 연구 수치는 과거 데이터의 관찰 결과이며 미래 수익을 보장하지 않습니다. 실제 거래 결과는 체결 비용, 슬리피지, 포지션 크기, 시장 환경에 따라 달라질 수 있습니다.
