🟦 소개
이번 프로젝트의 목표는 MT4에서 직접 만든 BollingerBands 기반 EA(Expert Advisor)로 자동매매를 구현하는 것이었습니다.
평소 수동 매매를 하다 보면
신호를 놓치거나
감정이 들어가거나
차트를 계속 볼 수 없는 상황
이 반복되다 보니,
“조건에 따라 스스로 매매하는 시스템을 만들어보자”는 생각이 들었습니다.
Claude Code를 통해 아래 전략들을 코드로 만들었습니다.
EA 이름
전략 유형
핵심 개념
EA_BollingerBands
평균회귀 / 돌파
볼린저밴드 상·하단/중간선 활용
EA_Breakout
추세돌파
고점/저점 돌파 시 추세 진입
EA_GoldenCross
추세추종
단·장기 이동평균선 크로스
EA_RSI_Reversal
역추세
RSI 과매수/과매도 반전 노림
MACD Sample
추세 전환
MACD 골든/데드크로스
Moving Average
단순 추세
이동평균선 기반 단순 매매
그중 BollingerBands를 자동거래로 반영해봤습니다.
1) EA_BollingerBands (볼린저밴드 전략)
✔ 사용 지표
Bollinger Bands(20, 2.0)
✔ 두 가지 모드
1. 평균회귀 전략 (Mean Reversion)
가격이 하단 밴드 터치 → 매수
가격이 상단 밴드 터치 → 매도
가격이 중간선 복귀 → 청산
2. 추세추종 전략 (Breakout)
상단 밴드 돌파 → 강한 상승 추세 → 매수
하단 밴드 돌파 → 강한 하락 추세 → 매도
✔ 특징
변동성이 낮고 박스권인 시장에서 성능이 좋음.
필터(ATR 등)를 추가하면 더 안정적.그런데…EA를 실제로 실행하자 주문이 전혀 나가지 않는 대참사 발생!예상치 못한 문제들이 이어지며,말 그대로 “좌충우돌 디버깅 여정”을 경험하게 되었습니다.
🟦 사용한 도구
MT4 (MetaTrader4) – EA 실행 및 자동매매 테스트
Vantage Demo Account – 실계좌 위험 없이 무제한 테스트
MQL4 – EA 개발 언어
ChatGPT – 버그 분석, 환경 문제 진단, 코드 가이드
Claude Code – 알고리즘 수정 및 개선
스크린샷 캡처 – 오류 상황 기록
EA_BollingerBands.mq4 – 직접 만든 자동매매 전략 파일
🟦 문제 해결 과정
아래는 실제로 겪었던 문제들과 해결 과정입니다.
비개발자도 충분히 EA를 구축할 수 있다는 걸 보여주는 생생한 사례입니다.
① 첫 번째 디버깅 – EA가 “슬픈 얼굴(☹️)"이었다
EA를 실행했는데…
차트 오른쪽 위 아이콘이 슬픈 얼굴!
정상이라면 이렇게 떠야 합니다:
EA_BollingerBands 🙂
하지만 제 화면은:
EA_BollingerBands ☹️
ChatGPT는 즉시 문제를 진단했습니다.
🔍 ChatGPT 진단 요약
자동매매 버튼은 ON이지만
EA가 차트에 “로드만 되고 실행이 안 되는 상태”
이유는 단 하나:
EA 설정에서 '실시간 거래 허용(Allow live trading)'이 꺼짐
즉,
EA는 차트에 올라왔지만
"너는 거래하면 안 돼!"
라고 MT4가 막아버린 상태였습니다.
🛠 해결
EA를 차트에 다시 드래그
F7 → 공통(Common) 탭
아래 항목들 모두 체크
상단의 자동매매 버튼이 초록색인지 확인
이 과정을 통해 “슬픈 얼굴 → 스마일(🙂)”로 바뀌었습니다.
② 두 번째 디버깅 – EA는 실행되지만 주문이 여전히 안 나감
슬픈 얼굴 문제를 해결했 지만…
여전히 매수가 안 들어감.
그래서 EA 코드를 ChatGPT에 다시 업로드해 디버깅 요청.
🔍 ChatGPT 진단 요약 (코드 정상)
코드 자체는 매우 정상
Symbol()도 문제 없음
대신 환경 문제를 로그로 더 정확히 보여주기 위해 3가지 코드 추가 필요
▶ 추가된 코드 3가지
1) 거래 허용 여부 체크
if(!IsExpertEnabled() || !IsTradeAllowed()) {
Print("거래 불가 상태 - IsExpertEnabled=", IsExpertEnabled(),
" IsTradeAllowed=", IsTradeAllowed(),
" 마지막에러=", GetLastError());
return;
}
2) 주문 실패 시 에러 번호 출력
(130/131/133 등 브로커 거부, 조건 불충족 등을 즉시 파악)
3) PositionsTotal() → CountMyPositions() 로 변경
코드를 반영 후 실행하니…
거래 불가 상태 - IsExpertEnabled=false IsTradeAllowed=false
즉,
MT4 전체 자동매매가 OFF 상태라는 현실을 마주하게 됨.
③ 세 번째 디버깅 – MT4 전역 자동매매 설정 해결
Tools → Options → Expert Advisors 를 확인해보니…
❌ Disable automated trading when account changed
❌ Disable automated trading when chart symbol changed
❌ Disable automated trading when profile changed
이 항목들이 ON 되어 있었습니다.
즉,
계좌가 바뀌거나
심볼을 바꾸거나
프로 필 로딩이 변경되면
자동매매를 강제로 꺼버리는 옵션들
이를 모두 OFF로 수정 후 재실행.
④ 드디어 첫 자동매매 체결 성공!
로그에서 아래 메시지가 등장:
order was opened : #342908674 sell 0.01 EURUSD+
close order #342908674 sell 0.01 EURUSD+
드디어 EA가 직접 매도 주문을 넣고, 청산까지 성공!
이 순간의 감동… 말이 필요 없었습니다.
⑤ 네 번째 디버깅 – 너무 빨리 청산되는 문제
거래는 되는데…
진입하자마자 동일 가격에 바로 청산되는 이상 현상 등장.
Claude Code로 스크린샷 업로드 후 분석 요청.
🔍 Claude 진단 결과
문제는 평균회귀 청산 함수(CheckMeanReversionExit) 내부 로직.
상단 밴드에서 매도 후
바로 다음 틱에서 중간선(bb_middle)에 “도달한 것으로 판단”
그래서 즉시 청산 발생
🛠 Claude가 수정한 내용
최소 1개 바 경과 후 청산하도록 수정
최소 수익률 조건 추가하여 스프레드 손실 방지
수익률 로그 출력 기능 추가
🟦 결과 & 배운 점
🌟 배운 점
✔ EA 오른쪽 위 스마일🙂이 가장 중요한 체크 포인트
✔ 문제 발생 시 환경부터 점검 (자동매매 버튼, EA 설정, Options 설정)
✔ 로그 출력은 필수 – ChatGPT가 분석하기 쉬워짐
✔ Claude Code는 알고리즘 디버깅에 매우 강력
✔ 비개발자라도 EA 구축이 충분히 가능함