비개발자의 좌충우돌 BollingerBands EA 구축기: 자동매매 첫 체결까지

🟦 소개

이번 프로젝트의 목표는 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가 막아버린 상태였습니다.

🛠 해결

  1. EA를 차트에 다시 드래그

  2. F7 → 공통(Common)

  3. 아래 항목들 모두 체크

  4. 상단의 자동매매 버튼이 초록색인지 확인

이 과정을 통해 “슬픈 얼굴 → 스마일(🙂)”로 바뀌었습니다.


② 두 번째 디버깅 – 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. 최소 1개 바 경과 후 청산하도록 수정

  2. 최소 수익률 조건 추가하여 스프레드 손실 방지

  3. 수익률 로그 출력 기능 추가


🟦 결과 & 배운 점

🌟 배운 점

✔ EA 오른쪽 위 스마일🙂이 가장 중요한 체크 포인트
✔ 문제 발생 시 환경부터 점검 (자동매매 버튼, EA 설정, Options 설정)
✔ 로그 출력은 필수 – ChatGPT가 분석하기 쉬워짐
✔ Claude Code는 알고리즘 디버깅에 매우 강력
✔ 비개발자라도 EA 구축이 충분히 가능함

1

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요