MT5 CRM: 실시간 동기화 작동 방식
Source: Dev.to
개요
MetaTrader 5 (MT5)는 MT4보다 더 깔끔한 API를 도입했지만, CRM 동기화를 위한 통합 아키텍처에는 자체적인 고려 사항이 있습니다. 아래는 MT5와 CRM 간의 실시간 동기화에 대한 실용적인 가이드이며, MT4 접근 방식과의 차이점을 강조합니다.
CRM 통합에 영향을 주는 주요 차이점
| Aspect | MT4 | MT5 |
|---|---|---|
| Connection model | TCP, stateful | TCP, stateful |
| Event subscriptions | 제한된 이벤트 유형 | 세분화된 이벤트 유형(거래, 딜, 계정) |
| Account model | 로그인당 단일 계정 | 로그인당 다중 계정(포지션, 주문이 분리됨) |
| Reconnection handling | 수동 | API‑level 재연결 훅 |
| Multi‑server support | 서버당 하나의 연결 | 동일 |
이벤트 모델
MT5의 개선된 이벤트 모델은 필요한 이벤트만 구독할 수 있게 하여 클라이언트 측 필터링 필요성을 줄여줍니다.
거래 이벤트
- OnDealAdd – 모든 완료된 거래(포지션 개설/청산, 입금, 출금)마다 발생합니다. CRM 잔액 및 자본 동기화의 주요 이벤트입니다.
계정 이벤트
- OnAccountAdd, OnAccountUpdate, OnAccountDelete – 계정이 생성, 수정 또는 삭제될 때 트리거됩니다.
포지션 이벤트
- OnPositionAdd, OnPositionUpdate, OnPositionDelete – CRM에서 실시간 오픈 포지션 추적에 사용됩니다.
통합 패턴
전체 패턴은 MT4와 유사합니다:
integration service → message queue → CRM backend
차이점은 이제 더 정확해진 이벤트 구독 레이어에 있습니다.
- 통합 서비스는 위의 세 가지 이벤트 유형을 구독합니다.
- 이벤트는 JSON으로 직렬화됩니다.
- 직렬화된 이벤트는 큐(RabbitMQ, Redis Streams, 또는 Kafka, 볼륨에 따라)로 푸시됩니다.
- CRM 백엔드는 큐에서 비동기적으로 소비합니다.
데이터 모델 변경 사항
MT5는 단일 로그인으로 다중 거래 계정을 소유할 수 있습니다.
- MT4: 하나의 로그인 = 하나의 계정.
- MT5: 하나의 로그인 = 여러 계정을 가질 수 있는 하나의 사용자(다른 통화, 계정 유형, 레버리지 등).
CRM에 대한 영향:
- 클라이언트 레코드는 MT5 계정과 일대다 관계를 지원해야 합니다.
- CRM은 플랫폼 로그인 → 내부 클라이언트 ID를 매핑해야 하며, 단순히 로그인 → 계정만 매핑하면 안 됩니다.
거래 흐름 예시
// Initiate a balance operation from the CRM
ManagerSend(MT5_TRADE_BALANCE, login, volume, comment);
- CRM이 계정 로그인, 볼륨, 그리고 CRM 거래 ID가 포함된 코멘트를 사용하여
ManagerSend를 호출합니다. - MetaQuotes MT5 서버가 거래를 처리하고
DealAction = DEAL_BALANCE와 함께OnDealAdd를 발생시킵니다. - 통합 서비스가 이벤트를 수신하고 이를 큐에 퍼블리시합니다.
- CRM 백엔드가 이벤트를 소비하여 거래를 확인하고 클라이언트 레코드를 업데이트합니다.
코멘트 필드에 CRM 거래 ID를 포함하면 타임스탬프에만 의존하지 않고도 신뢰할 수 있는 조정이 가능합니다.
Common Pitfalls
- Login vs. Account Confusion – MT5는 login (사용자 신원)과 account (거래 계정)을 구분합니다. CRM 클라이언트를 MT5 계정에 직접 매핑하면(로그인이 아니라) 클라이언트가 두 번째 계정을 열 때 문제가 발생합니다.
- Deal vs. Order vs. Position – MT5의 객체 모델은 주문, 포지션, 그리고 딜을 구분합니다. 딜이 아니라 주문을 추적하면 부분 청산을 놓칠 수 있으며 잘못된 손익(P&L)이 발생할 수 있습니다.
- Event Ordering – 부하가 걸릴 경우 이벤트가 순서대로 도착하지 않을 수 있습니다. CRM 백엔드에서 idempotent(멱등) 처리를 구현하세요; 같은 이벤트를 두 번 적용해도 잔액이 손상되지 않아야 합니다.
결론
새로운 통합을 구축한다면 MT5가 선호되는 선택입니다:
- 세분화되고 잘 문서화된 이벤트를 제공하는 깔끔한 API.
- 견고한 이벤트 처리 및 재연결 지원.
- MetaQuotes가 MT5 개발에 집중하고 있어 미래에도 안전합니다.
MT4 통합은 레거시 시스템을 유지하거나 유동성 제공자가 MT4를 요구할 때만 유효합니다.