MT5 최적화란?
컴퓨터의 Docker worker가 MT5 최적화를 실행하고 대시보드 명령을 주기적으로 확인합니다.
EA(.ex5), 파라미터 그리드(.set), MT5 브로커 계정(데모 또는 실제)은 직접 준비합니다. 결과는 컴퓨터의 reports 폴더에 저장되고 대시보드에 Passed와 Favorites로 표시됩니다. 회사 포트폴리오에는 지원되는 포트폴리오 EA의 소스 코드가 필요합니다.
이 기능은 셀프 호스팅입니다. PositionRelay가 대신 MetaTrader를 실행하지 않습니다. 현재 호스팅 옵티마이저는 없습니다.
작동 방식
게시된 Wine + MetaTrader 5 Docker 이미지가 기기에서 실행됩니다. 하트비트는 PositionRelay User ID로 인증하고 Ultimate 접근을 확인한 뒤 대시보드 명령을 기다립니다.
검증된 결과는 Passed와 Favorites에 표시됩니다. 회사 포트폴리오에는 지원되는 포트폴리오 EA의 소스 코드도 필요합니다.
- Ultimate를 구독하고 Dashboard → Setup → MT5 Optimizations를 엽니다.
- Docker를 설치하고 운영체제에 맞는 설정 마법사를 따르세요.
- Experts와 SetFiles를 마운트하고 optimizer.env를 작성한 뒤 컨테이너를 시작합니다.
- 시작 로그에서 브로커 인증을 확인한 뒤 Dashboard → Optimizations에서 worker가 온라인인지 확인합니다.
- 날짜, 심볼, 전략을 구성한 뒤 Start를 누릅니다.
요구 사항
- 활성 PositionRelay Ultimate 구독.
- Docker가 실행되는 Windows, Linux 또는 Intel macOS x64 컴퓨터. Apple Silicon / ARM은 지원되지 않습니다.
- 실제 틱 기록을 저장할 충분한 RAM과 디스크 공간이 필요합니다. Docker Desktop을 쓴다면 설정에서 리소스를 조정하세요.
- MT5 브로커 계정(데모 또는 실제)의 로그인, 비밀번호, 서버.
- 직접 컴파일한 EA(.ex5). MQL5 Market EA는 활성화 잠금으로 실행되지 않습니다.
- 설정 마법사에 표시된 대로 SetFiles/Classic/<timeframe> 아래에 .set 파일을 둡니다.
Docker 설정
단계별 설치 방법은 Dashboard → Setup → MT5 Optimizations에 있습니다. 마법사가 운영체제에 맞는 폴더, 파일, 명령을 보여 주고 User ID를 채웁니다.
파일 위치: 옵션 1은 컴퓨터의 폴더(Windows는 C:\PositionRelay\optimizer, Linux와 macOS는 $HOME/PositionRelay/optimizer)에 EA, .set 파일, Broker/servers.dat, optimizer.env를 두는 방식입니다. 현재는 이 옵션만 사용할 수 있으며 마법사도 이 방식을 따릅니다. 옵션 2(EA, .set 파일, 환경 변수를 PositionRelay에 업로드)는 곧 제공될 예정이며 사용자 책임하에 이용하게 됩니다.
Experts, SetFiles, Broker, reports의 각 -v 줄에서 왼쪽은 컴퓨터의 폴더이고 /data/...는 컨테이너 경로입니다. 파일이 다른 곳에 있다면 Windows 드라이브 문자를 포함해 각 호스트 경로 전체를 바꾸세요. --env-file 경로만 바꿔도 이 마운트들은 바뀌지 않습니다.
정상 연결된 MT5에서 File → Open Data Folder를 열고 config/servers.dat만 옵티마이저의 Broker 폴더로 복사하세요. Docker의 MT5가 브로커를 찾는 데 필요합니다. accounts.dat는 복사하지 마세요. 정확한 대상 경로는 설정 마법사에 표시됩니다.
마법사를 따라 MT5 브로커 계정을 사용하세요. 로그에 « Broker login authorized »가 표시되기 전에는 MT5_PASSWORD를 제거하지 마세요.
처음 시작할 때는 heartbeat보다 먼저 브로커 로그인을 시도하므로 몇 분이 걸릴 수 있습니다. 컨테이너 로그를 확인하세요. "Starting optimizer heartbeat"가 표시된 후 몇 차례 폴링을 거치면 Optimizations 페이지에 worker가 온라인으로 표시됩니다.
- optimizer.env를 절대 커밋하지 마세요.
- Experts와 SetFiles는 읽기 전용으로 마운트되고 reports는 쓰기 가능합니다.
- MT5 트리와 틱 캐시는 named volume positionrelay-mt5에 있습니다.
대시보드에서 실행
Dashboard → Optimizations를 엽니다. 날짜 범위, 심볼, 타임프레임, 전략, 최적화 모드, 잔고, 최대 에쿼티 드로우다운을 선택합니다. 선택적으로 검증 후 견고성 테스트를 켭니다.
Start는 새 배치를 시작합니다. Resume은 중단된 실행을 이어갑니다. Stop은 진행 중인 배치를 멈추지만 worker는 온라인 상태를 유지합니다. Clean은 호스트의 테스터 캐시 아티팩트를 지웁니다.
페이지가 열려 있는 동안 실시간 상태가 몇 초마다 새로고침됩니다. 작업 동안 컨테이너를 계속 실행하세요.
결과, 즐겨찾기, 포트폴리오
Passed 행은 배치에서 검증된 생존자입니다. 대시보드에서 즐겨찾기를 표시하면 worker가 호스트 Favorites 폴더로 동기화할 수 있습니다.
회사 포트폴리오는 현재 PositionRelay 포트폴리오 EA 하나만 지원하며 공개 이미지에 없는 소스 코드가 필요합니다. 직접 컴파일한 .ex5로 최적화, 검증, 즐겨찾기는 가능하지만 포트폴리오는 만들 수 없습니다.
리포트는 호스트에 만든 reports 폴더에 저장됩니다.
이미지 업데이트
새 이미지가 있는지 확인하려면 docker pull ghcr.io/razvantomegea/position-relay-portfolio-optimizer:latest(설정 마법사의 다운로드 명령)를 실행하세요. pull 상태는 로컬 이미지만 설명하며, 실행 중인 컨테이너가 이미 그 이미지를 쓰는지 알려주지 않습니다. docker inspect --format '{{.Image}}' positionrelay-optimizer와 docker inspect --format '{{.Id}}' ghcr.io/razvantomegea/position-relay-portfolio-optimizer:latest를 비교하세요. 같으면 컨테이너를 그대로 두세요. 다르거나, 이전에 다운로드해 두고 재생성을 미뤘다면 실행 중인 작업이 끝날 때까지 기다린 뒤 설정 마법사 마지막 단계의 명령으로 컨테이너를 다시 만드세요. 이미지 업데이트는 worker만 교체하며 볼륨에는 MT5와 틱 캐시가 남습니다. 새 MT5 버전은 별도로 업데이트해야 합니다.
문제 해결
- Worker가 계속 오프라인 — Ultimate가 활성인지, POSITIONRELAY_USER_ID가 Setup과 일치하는지, docker logs에 하트비트가 보이는지 확인하세요.
- 브로커 로그인 미확인 — 연결된 MT5의 Broker/servers.dat와 MT5_LOGIN, MT5_PASSWORD, MT5_SERVER를 확인하세요. 로그에 "Broker login authorized"가 표시된 후에만 env 파일에서 비밀번호를 제거하세요.
- 처음 로그인하는 동안 Wine의 fixme 메시지와 그래픽 라이브러리 오류가 나타날 수 있습니다. 이 줄만으로 성공이나 실패를 판단할 수 없습니다. "Broker login authorized" 또는 "broker login not confirmed"와 그다음 "Starting optimizer heartbeat"를 확인하세요. 브로커 로그인이 실패해도 worker는 온라인으로 보일 수 있습니다.
- EA가 실행되지 않음 — Market에서 구매한 EA는 활성화 잠금입니다. 직접 컴파일한 .ex5를 사용하세요.
- 디스크 부족 / 느린 틱 — Docker Desktop 리소스를 늘리고 실틱 히스토리용 공간을 확보하세요.
- Apple Silicon / ARM — 지원되지 않습니다. x64 컴퓨터를 사용하세요.
- 대시보드에서 명령 실패 — docker logs -f positionrelay-optimizer로 worker 오류를 확인하세요.
