지수 CFD, MetaTrader 5 (MQL5)

MT5 NAS100 VWAP ±3σ 밴드 역추세 EA

나스닥100 CFD 5분봉에서 종가가 VWAP 3시그마 밖으로 나가면 반대 방향으로 들어가는 평균회귀 EA입니다. 의뢰인이 트레이딩뷰에서 보던 VWAP과 값이 같아야 했고, 세션은 한국 시간 07:00에 시작해야 했습니다. 2026년 9월 초에 납품했고 데모 계좌에서 3일 동안 실매매로 검증했습니다. 첫날 신호가 두 번 떴는데 둘 다 진입이 안 됐습니다.

플랫폼
MetaTrader 5, MQL5
(Vantage, NAS100.r)
전략
VWAP ±3σ 역추세
M5 봉 마감 기준
시간
세션 앵커 KST 07:00
매매 시작 KST 09:00
제작 기간
약 2주, 데모 검증 3일
MT5 NAS100 5분봉 차트. 세션 VWAP과 ±1σ, ±2σ, ±3σ 밴드, 숏 진입과 청산 화살표, 현재 포지션의 TP와 SL 점선, 좌측 상단 EA 패널(랏, TP%, 쿨다운, 스프레드 한도 입력과 시작, 진입중지, 전량청산 버튼)
2026-09-03 데모 운용일의 EA 로그와 실제 5분봉 데이터로 재현한 차트. 좌측 위가 EA 패널, 오른쪽 위가 진입 중인 숏의 TP와 SL입니다

01전략

항목규칙
진입M5 봉 마감 종가가 VWAP +3σ 이상이면 숏, −3σ 이하면 롱으로 시장가 진입합니다. 고가나 저가가 닿은 것만으로는 신호로 보지 않습니다
익절진입가에서 1σ 선까지 거리의 90%, 또는 1σ와 2σ 사이의 90% 지점. 둘 중 하나를 설정에서 고릅니다
손절익절 거리와 1:1 대칭
재진입보유 중에 같은 신호가 또 나오면 기존 포지션을 청산하고 새로 진입합니다. 포지션은 항상 하나
쿨다운손절 후 그 방향만 60분 동안 진입하지 않습니다. 반대 방향은 바로 가능
VWAP세션 시작점부터 계산하는 VWAP과 거래량가중 표준편차. 트레이딩뷰 내장 VWAP과 같은 공식입니다

TP와 SL은 브로커 서버에 걸어 둡니다. 랏, TP 비율, 쿨다운, 스프레드 한도는 EA 설정창과 차트 위 패널 양쪽에서 바꿀 수 있습니다. 패널에서 바꾼 값은 저장되지만, 설정창에서 새로 바꾼 값이 있으면 그쪽을 우선합니다.

02데모 첫날, 신호는 떴는데 주문이 없었다

3σ 신호가 두 번 떴는데 텔레그램으로는 진입 실패 알림만 왔고 계좌에는 주문이 없었습니다. EA 로그를 열어 보니 16:35 숏 신호 바로 아래에 "스프레드 180pt > 한도 100pt, 진입 보류"라고 찍혀 있었습니다.

스프레드 한도 기본값을 100포인트로 잡았는데 그 계좌의 NAS100 평소 스프레드가 180포인트였습니다. 아시아 세션에는 1,000포인트까지 벌어지는 구간도 있었습니다. 외환 종목 감각으로 지수 CFD의 단위를 잡은 것이 원인입니다. NAS100에서는 지수 1.8포인트가 180포인트로 표시됩니다. 한도를 300으로 올리고 프리셋 파일도 맞췄습니다. 알림에는 스프레드가 한도보다 넓어 보류됐다는 사유를 붙였습니다. 진입을 막은 이유를 전부 로그에 남기게 만들어 둔 덕에 원인을 찾는 데 5분이 걸렸습니다.

이후 검증 사흘 동안 실제로 남은 로그 일부입니다. 손익 수치와 아이콘은 지웠습니다.

2026.09.03 06:20:00 [INFO] 숏 신호: 종가 29204.86, +3.0σ 29203.10 (VWAP 29152.56, σ 16.85, 64봉)
2026.09.03 06:20:00 [INFO] 진입 숏(매도) 1.00랏 @ 29204.11 | TP 29172.88, SL 29235.34 (모드0, 90%)
2026.09.03 08:01:44 [INFO] 익절 청산 숏 @ 29172.88
2026.09.03 16:45:00 [INFO] 숏 신호: 종가 29322.82, +3.0σ 29299.37 (VWAP 29163.30, σ 45.36, 189봉)
2026.09.03 16:45:00 [INFO] 재진입 신호, 기존 포지션 청산
2026.09.03 16:45:00 [WARN] 스프레드 1000pt > 한도 300pt, 진입 보류 (봉 내 재시도)
2026.09.03 16:45:02 [INFO] 진입 숏(매도) 1.00랏 @ 29318.57 | TP 29219.65, SL 29417.49

03한국 시간을 브로커 서버 시간으로

의뢰인은 한국 시간 07:00에 VWAP을 새로 시작하고 09:00부터 매매하길 원했습니다. 브로커 서버 시각은 보통 GMT+2나 GMT+3이고 서머타임에 따라 바뀝니다. 실거래에서는 서버 시각과 GMT의 차이를 실행 중에 재서 30분 단위로 맞추면 서머타임이 자동으로 반영됩니다. 백테스트(전략 테스터)에서는 이 차이를 잴 수 없어서, 겨울 기준 시차에 미국과 유럽의 서머타임 규칙을 더해 계산하는 방법을 따로 두었습니다. 한국은 서머타임이 없으니 모든 경계를 UTC로 바꿔 계산합니다. 한국 시간 07:00은 전날 UTC 22:00입니다. 백테스트에서도 세션이 정확히 한국 시간 07:00에 시작되는 것을 확인했습니다.

VWAP 값이 맞는지를 EA 혼자 확인하면 검증이라 할 수 없습니다. 같은 공식을 파이썬으로 따로 만들어 트레이딩뷰, EA 패널, 파이썬의 값을 대조했습니다. 신호가 난 봉의 VWAP, σ, −3σ, 종가가 소수 둘째 자리까지 일치했습니다.

04리뷰에서만 잡힌 것들

납품 전에 독립된 리뷰어 셋이 각각 명세 일치 여부, API 사용 오류, 예외 상황을 따로 검토했고, 수정한 뒤 한 번 더 검토했습니다. 두 번째 검토에서는 첫 번째 수정이 새로 만든 문제가 나왔습니다.

05데모 3일 결과와 납품물

사흘 동안 진입 16건, 청산 15건, TP 자동 청산 3건이 있었고 MT5 저널 오류는 0건이었습니다. 로그를 프로그램으로 검사해서 한국 시간 07~09시 진입 0건, 동시 2포지션 0건, 재진입 12쌍 정상, TP와 SL 거리 비율 1.000을 확인했습니다. 사흘은 전략을 평가하기에는 짧고, 프로그램이 명세대로 움직이는지 보는 기간입니다. 손익은 공개하지 않습니다.

MetaTrader 5, MQL5 CTrade, OnTradeTransaction OBJ_LABEL, EDIT, BUTTON 패널 WebRequest 텔레그램 Python MetaTrader5 (검증) MetaEditor CLI 컴파일

06관련 사례

※ 본 사례는 고객 요구사항을 익명 처리하여 재구성한 것이며, 차트 화면은 실제 운용 로그와 시세 데이터로 재현한 것입니다. 수익률과 수익금은 공개하지 않습니다. 알고랩은 매매 자동화 프로그램 제작 서비스이며, 종목 추천, 투자 자문, 수익 보장 서비스가 아닙니다. CFD와 해외선물은 레버리지로 인해 원금을 초과하는 손실이 발생할 수 있습니다.

MT5 EA가 필요하신가요

트레이딩뷰에서 보던 지표를 MT5에서 같은 값으로 쓰고 싶다는 분이 많습니다. 저희는 그 값부터 맞춥니다.
쓰시는 브로커와 종목을 상담에서 알려 주세요.

무료 상담 시작하기 고객 후기 보기
← 제작 사례 전체 보기