MagicNumber 설계: 한 계좌에서 여러 EA 운용
목차
결론: MagicNumber는 'EA의 이름표'. 한 계좌 안에서 중복시키지 마세요
한 계좌에서 여러 EA를 돌린다면 가장 먼저 정해야 할 것은 MagicNumber 할당입니다. MagicNumber는 주문과 포지션에 붙이는 "어느 EA가 낸 것인가"를 나타내는 번호입니다. 대부분의 EA는 이 번호를 보고 "내 포지션이 어느 것인지"를 판단합니다.
번호가 겹치면 어떤 EA가 다른 EA의 포지션을 자기 것으로 착각해, 마음대로 청산하거나 스톱을 변경할 수 있습니다. 오류는 나지 않고 화면상으로는 어느 EA나 평소처럼 움직이는 것으로 보이기 때문에, 알아채기 어려운 사고입니다.
추천 브로커 비교 →
🎁 무료 EA 다운로드📧 무료 이메일 강좌(총 8통) + 구독자 전용 MT5 지표 13종 팩
※ 개인정보는 엄격히 보호. 언제든 구독 해지 가능.
구조: EA는 어떻게 '내 포지션'을 구분하는가
MT5에서는 EA가 주문을 낼 때 숫자 MagicNumber를 붙일 수 있습니다. 이 값은 포지션(POSITION_MAGIC)과 거래 이력(DEAL_MAGIC)에 남습니다. 수동으로 주문하면 보통 0이 됩니다.
일반적인 EA는 포지션을 세거나 관리할 때 다음과 같이 걸러냅니다.
- 종목이 자기 차트와 같은가
- MagicNumber가 자기 설정값과 같은가
이 두 가지가 모두 일치하는 포지션만 "자기 몫"으로 취급합니다. 여기서 중요한 점은 MT5 자체는 MagicNumber 중복을 막지 않는다는 것입니다. 번호는 단순한 약속일 뿐이고, 지킬지 여부는 운용하는 사람과 EA의 설계에 맡겨져 있습니다.
중복되면 생기는 일
같은 종목, 같은 MagicNumber로 두 EA가 움직이면 예를 들어 다음과 같은 일이 생길 수 있습니다.
- 진입 억제: "최대 포지션 수 1"로 설정된 EA가 다른 EA의 포지션을 자기 것으로 세어 신규 진입을 건너뜀
- 타 EA 포지션 청산: 청산 신호가 나왔을 때 다른 EA의 포지션까지 함께 닫아 버림
- 스톱 덮어쓰기: 트레일링 스톱이 다른 EA 포지션의 SL까지 움직여 버림
- 랏 계산 오류: 보유 중인 포지션 수를 보고 랏을 정하는 EA는 의도보다 큰 포지션을 잡게 됨
이런 문제는 모두 백테스트에서는 재현되지 않습니다. 테스터에서는 EA를 한 개씩 돌리기 때문입니다. 검증 결과와 실제 운용이 어긋나는 원인 중 하나가 여기에 있습니다.
부분 청산 추적
부분 청산을 쓰는 EA는 기록을 추적하는 방법에도 주의가 필요합니다. 헤징 계좌에서는 부분 청산을 해도 포지션 식별 번호(POSITION_IDENTIFIER)는 바뀌지 않으며, 이력의 청산 거래에도 DEAL_POSITION_ID로 남습니다. EA별 성적을 나중에 집계하려면 MagicNumber로 거른 뒤 이 포지션 ID로 묶는 것이 확실합니다.
다만 청산 거래에 기록되는 MagicNumber는 청산 주문을 낸 쪽의 값이 되는 경우가 있습니다. EA가 연 포지션을 도중에 수동으로 일부 청산하면 그 거래만 번호가 0이 되어, MagicNumber만으로 집계하면 숫자가 맞지 않을 수 있습니다. 코멘트란도 브로커나 서버 쪽에서 바뀌는 일이 있어 식별 단서로는 믿을 수 없습니다.
설정 전 체크리스트
| 확인 항목 | 확인 방법 | 소홀히 했을 때의 리스크 |
|---|---|---|
| 각 EA의 MagicNumber가 중복되지 않는가 | 각 EA의 파라미터 화면에서 목록으로 만들어 기록해 둔다 | 청산·SL 변경 간섭 |
| 같은 EA를 여러 차트에서 쓸 때 번호를 나눴는가 | 종목이 다르거나 시간봉이 달라도 다른 번호로 한다 | 종목을 보지 않는 EA에서의 혼동 |
| 계좌가 헤징형인가 | 계좌 정보에서 확인한다 | 넷팅 계좌에서는 같은 종목의 포지션이 하나로 합산되어 번호로 나눌 수 없음 |
| 가동 중에 번호를 바꾸지 않았는가 | 바꾸기 전에 포지션이 없는지 확인한다 | 기존 포지션이 관리되지 않은 채 남음 |
| 수동 거래와 섞지 않았는가 | 수동 거래는 별도 계좌에서 한다 | 집계 오차, 수동 청산으로 인한 기록 누락 |
번호는 "EA마다 자릿수를 나눈다"와 같은 단순한 규칙으로 정해 두면, 나중에 이력을 볼 때 헷갈리지 않습니다. 설정 화면의 위치는 EA 설정 방법에 정리해 두었습니다.
한계와 주의
MagicNumber를 나눠도 막을 수 없는 일이 있습니다. 솔직하게 적어 둡니다.
- MagicNumber를 보지 않는 EA에는 효과가 없습니다: 종목만으로 거르는 EA, 계좌의 모든 포지션을 관리하는 EA는 번호를 나눠도 간섭합니다. 타사 EA를 섞는 경우, 그 설계까지는 저희가 알 수 없습니다.
- 초기값 충돌: 많은 EA가 초기값 그대로 배포됩니다. 개발자가 다른 EA끼리 초기값이 우연히 같아지는 일은 충분히 있을 수 있습니다. 반드시 직접 값을 확인하세요.
- 여러 종목을 다루는 EA: ATLAS나 TRINITY처럼 하나의 EA로 여러 종목을 다루는 경우, 다른 EA와 같은 종목을 두고 겹치게 됩니다. 번호를 나눠도 증거금은 공유하므로 동시에 드로다운이 겹칠 가능성은 남습니다.
- 자금 관리는 분리되지 않습니다: 번호로 나눌 수 있는 것은 포지션 관리뿐입니다. 증거금 유지율이나 로스컷은 계좌 전체로 결정됩니다. EA 하나가 크게 잃으면 다른 EA도 영향을 받습니다.
간섭을 확실히 피하고 싶다면 EA마다 계좌를 나누는 것이 가장 단순합니다. 번호 설계는 같은 계좌에서 돌리기로 정했을 때 최소한의 대비라고 생각하세요.
정리
- MagicNumber는 주문·포지션·이력에 남는 EA 식별 번호이며, MT5는 중복을 막지 않는다
- 중복되면 진입 억제, 다른 EA 포지션 청산, SL 덮어쓰기, 랏 계산 오류가 생길 수 있다. 백테스트에서는 재현되지 않는다
- 부분 청산 추적은 MagicNumber와 포지션 ID를 조합해서 한다. 수동으로 청산하면 기록이 어긋날 수 있다
- 넷팅 계좌에서는 번호로 포지션을 나눌 수 없다. 여러 EA를 쓴다면 헤징 계좌를 사용한다
- 번호를 나눠도 증거금은 공유된다. 간섭을 확실히 피하려면 계좌를 나눈다
그 밖의 운용 노하우는 EA·MT5 노하우에 정리해 두었습니다.
관련 기사
📧 무료 이메일 강좌(총 8통) + 구독자 전용 MT5 지표 13종 팩
※ 개인정보는 엄격히 보호. 언제든 구독 해지 가능.
EA나 FX에 대해 궁금한 점이 있나요?
Nattzy 트레이딩 포럼에 질문을 올릴 수 있습니다(무료 가입). 이 글의 내용이 아니어도 EA 설정이나 브로커 선택 등 어떤 질문이든 환영합니다.
Nattzy에서 질문하기 ↗