MT4 Copy Trading 시스템 개발기 - AI와 함께 실시간 거래 복사 시스템 구축하기(by Cursor)

*목표:** MT4(MetaTrader 4) 기반의 Leader-Follower 카피트레이딩 시스템 구축

카피트레이딩은 전문 트레이더(Leader)의 거래를 실시간으로 따라하는(Follower) 방식의 자동매매를 통해 실제 거래를 모니터링 하는 대시보드 구축 사례

**핵심 요구사항:**
- Leader MT4에서 매수/매도 시 Follower MT4에 실시간 복사
- ngrok을 통한 HTTPS 터널링 (MT4 WebRequest 요구사항)
- 실시간 모니터링 대시보드
- 주요 경제 이벤트(FOMC, CPI, NFP) 알림
- 다중 계좌 관리

---

## 진행 방법

### 어떤 도구를 사용했고, 어떻게 활용하셨나요?

**사용 도구:**
- **Claude (Cursor IDE)**: 전체 시스템 설계 및 코드 작성
- **Python + FastAPI**: 중계 서버 개발
- **MQL4**: MT4 Expert Advisor 개발
- **ngrok**: HTTPS 터널링
- **HTML/CSS/JS**: 대시보드 UI

---

### 주요 프롬프트 및 결과

#### 1. Copy Trading 시스템 디버깅

```
브로커 서버 ngrok으로 실행시켜줘 leader follower 동작 확인하게
```

이 프롬프트로 시작해서, 422 오류, Error 5203 등 다양한 문제를 해결했습니다.

#### 2. JSON 파싱 버그 수정

```
수정해도 똑같은데 
DEBUG: instructionsJson length = 12439
DEBUG: Total 0 instructions parsed
```

**문제:** `FindArrayEnd` / `FindObjectEnd` 함수의 depth 로직 오류
**해결:** depth 체크 순서 수정 및 초기값 조정

```mql4
// 수정 전 (버그)
int FindArrayEnd(string json, int start) {
   int depth = 0;
   // ...
   if(depth == 0) return i;  // depth-- 전에 체크
   depth--;
}

// 수정 후 (정상)
int FindArrayEnd(string json, int start) {
   int depth = 1;  // '[' 다음 위치에서 시작하므로
   // ...
   depth--;
   if(depth == 0) return i;  // depth-- 후에 체크
}
```

#### 3. 중복 체크 로직 개선

```
적용 했는데 지금도 로그가 너무 많이 보이네
Skipping: Recent position exists within 5s
```

**문제:** 수동 포지션까지 SkipSeconds 체크에 걸림
**해결:** "COPY|" 코멘트가 있는 복사된 포지션만 체크하도록 수정

```mql4
// 시간차 스킵 - "COPY|" 포지션에만 적용 (수동 포지션 무시)
if(StringFind(OrderComment(), "COPY|") >= 0) {
   if(TimeCurrent() - OrderOpenTime() < SkipSeconds)
      return true;
}
```

#### 4. 대시보드 개발

```
대시보드에 알림 및 모니터링으로 주요이벤트도 보여주고 
leader follower간 실시간 로그메시지도 보여주고 
다중 계좌 관리까지 만들어줘
```

이 프롬프트 하나로 전체 대시보드 UI와 API가 생성되었습니다.
거래 대시보드의 스크린샷
거래 플랫폼의 대시보드


#### 5. 경제 이벤트 상세 정보

```
주요 경제 이벤트는 정보가 없네 정보를 간단하게 요약하고 근거 링크를 보여줘
```

**결과:** FOMC, CPI, NFP 등 각 이벤트에 대한 요약, 트레이딩 팁, Forex Factory/Investing.com 링크 추가

---

한국어 텍스트가 있는 화면

### 시스템 아키텍처

```
┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│  Leader MT4 │────▶│   Server    │◀────│ Follower MT4│
│    (EA)     │     │  (FastAPI)  │     │    (EA)     │
└─────────────┘     └──────┬──────┘     └─────────────┘
                          │
                    ┌─────▼─────┐
                    │   ngrok   │
                    │ (HTTPS)   │
                    └───────────┘
```

---

### 대시보드 주요 기능

| 기능 | 설명 |
|------|------|
| 실시간 상태 | Leader/Follower 잔고, 포지션 수 |
| 실시간 로그 | 통신 로그 (3초 갱신) |
| 경제 이벤트 | FOMC, CPI, NFP 등 + 링크 |
| 다중 계좌 관리 | 모든 계좌 정보 한눈에 |
| Backtest Report | 성과 리포트 생성 |

---

## 결과와 배운 점

### 배운 점과 나만의 꿀팁

1. **MQL4 JSON 파싱은 까다롭다**
   - MQL4에는 JSON 라이브러리가 없어서 직접 파서를 만들어야 함
   - 중첩된 객체(`constraints: {...}`)가 있으면 depth 관리 필수

2. **MT4 WebRequest는 HTTPS만 지원**
   - localhost는 안 됨, 반드시 ngrok 같은 터널링 필요
   - URL 허용 목록에 추가 후 **MT4 완전 재시작** 필수

3. **Claude는 디버깅에 강하다**
   - "로그가 너무 많아" 같은 모호한 피드백도 잘 이해함
   - 스크린샷을 보여주면 문제를 정확히 파악함

### 과정 중에 어떤 시행착오를 겪었나요?

| 문제 | 원인 | 해결 |
|------|------|------|
| 422 Unprocessable Content | 서버 미들웨어가 request body 소모 | 미들웨어 제거 + JSON 정리 로직 추가 |
| Total 0 instructions parsed | FindArrayEnd/FindObjectEnd depth 버그 | depth 체크 순서 및 초기값 수정 |
| 모든 주문 Skipping | 수동 포지션까지 SkipSeconds 체크 | COPY| 포지션만 체크하도록 수정 |
| Error 5203 | ServerUrl에 /leader/event 누락 | EA 파라미터 수정 |

### 도움이 필요한 부분이 있나요?

- **실시간 경제 캘린더 API 연동**: 현재는 정적 데이터, Forex Factory API 연동 고려 중
- **MT5 지원**: MQL5로 포팅 필요

### 앞으로의 계획이 있다면 들려주세요.

1. **실시간 경제 캘린더 연동** - Forex Factory 스크래핑 또는 API
2. **텔레그램 알림** - 주요 이벤트 전 알림 발송
3. **다중 Follower 지원** - 현재 B1만 지원, B2, B3... 확장
4. **성과 리포트 PDF 자동 생성** - 주간/월간 리포트 이메일 발송

---

## 도움 받은 글 (옵션)

### 참고한 지피터스 글이나 외부 사례

- **MQL4 Reference**: https://docs.mql4.com/
- **FastAPI Documentation**: https://fastapi.tiangolo.com/
- **ngrok Documentation**: https://ngrok.com/docs
- **Forex Factory Calendar**: https://www.forexfactory.com/calendar
- **Investing.com Economic Calendar**: https://www.investing.com/economic-calendar/

---

## 최종 결과물

### Git 커밋 히스토리

```
0dd7505 docs: README.md 추가 - 서버, ngrok, 대시보드 실행 방법
50f5d4e feat: Follower 계좌번호 표시 기능 추가
fbbf2c6 feat: 경제 이벤트 상세 정보 및 근거 링크 추가
fb69d4d feat: Copy Trading Dashboard 추가 - 실시간 모니터링
e528cec feat: Copy Trading 성공 - JSON 파싱 버그 수정
```

### 프로젝트 구조

```
leader_follower_server/
├── server/
│   ├── app.py           # FastAPI 메인 (21KB)
│   ├── models.py        # Pydantic 모델
│   ├── state.py         # 상태 관리
│   └── static/
│       └── dashboard.html  # 대시보드 UI
├── LeaderSignalEA.mq4   # Leader EA
├── FollowerCopyEA.mq4   # Follower EA
├── README.md            # 실행 가이드
└── Gpters.md            # 이 문서
```

### 핵심 성과

✅ **42개 이상 주문 복사 성공**  
✅ **실시간 대시보드 완성**  
✅ **경제 이벤트 알림 + 링크**  
✅ **다중 계좌 관리**  

---

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요