트레이딩뷰-메타트레이더5 자동매매 가이드(05): 메타트레이더5 EA 설치 및 최종 주문 실행
가상 서버(VPS) 구축과 트레이딩뷰 웹훅 설정까지 성공적으로 마치셨다면, 이제 시스템 트레이딩의 실질적인 집행 엔진인 메타트레이더5(MT5) 전용 EA(Expert Advisor)를 설치하여 자동매매 프로세스를 완성할 차례입니다. 이번 포스팅은 전체 가이드의 핵심인 마지막 단계로, 외부 신호를 수신하여 실제 주문을 체결하는 자동매매 비서를 구축하는 과정을 상세히 다루어 보겠습니다.
해당 프로세스는 메타트레이더 환경에 익숙한 숙련자분들에게는 매우 직관적인 과정일 것입니다.
다만, 외부 통신을 위해 "Allow WebRequest for listed URL" 설정을 정확히 추가하는 것이 핵심입니다.
더불어, 매매 발생 시 모바일 앱으로 즉시 확인할 수 있도록 Discord 알람 연동 기능을 추가하여 관리의 편의성을 높였습니다.
아래의 링크, 제 Buy Me A Coffee 계정으로 가셔서, MQL5코딩을 복사합니다
코딩창 위에 마우스를 올리시면 우상단에 카피라고 뜹니다. (누르면 카피)
한번 더 부탁드리고 싶은 말씀은, 아래의 유저데이터로 설치해 보시고, 설치가 잘 되신다면, 제 Buy Me Coffee의 창으로 가셔서 커피 한잔 부탁드리겠습니다.
이름을 원하시는 대로 짓습니다.
넥스트 클릭합니다.
또 넥스트 클릭합니다.
정상적으로 진행되었다면 하단 로그 창에 오류 없이 컴파일이 완료되었다는 메시지가 표시됩니다.
이렇게 안나오면, 복사붙여넣기 할 때 실수가 있었다는 말입니다.
"http://64.176.229.37" 주소 형식에서 IP 부분만 변경하시고, 앞의 'http://' 접두사는 그대로 유지하시기 바랍니다. (향후 도메인 및 SSL 적용 시 유연하게 대응하기 위함입니다.)
보안 인증을 위해 이전에 생성하여 저장해둔 API 키를 해당 필드에 입력합니다.
가입 완료 후 디스코드 마크 하단의 사용자 아이콘을 클릭하여 개인 서버 설정으로 이동합니다.
Webhooks 옵션을 클릭합니다.
활성화된 웹훅 프로필을 선택합니다.
웹훅 주소를 붙여 넣습니다.
디스코드 주소 입력 시에는 서버 주소와 달리 필드 내용을 모두 비운 뒤 복사한 주소 전체를 붙여넣으시면 됩니다.
서버 주소에서 'http://'를 남겨둔 이유는 향후 개인 도메인을 구매하여 보안 통신(HTTPS)을 적용할 경우 'https://'로 원활하게 전환하기 위한 설계적 고려입니다.
설정값 저장은 다중 티커 운영 시 설정의 번거로움을 획기적으로 줄여주는 유용한 습관입니다.
현재 TV2META라는 명칭의 EA 아이콘이 파란색(혹은 유색)으로 표시된다면 시스템이 정상 가동 중임을 의미합니다.
매매 발생 시마다 디스코드 푸시 알림이 신속하게 전송되고 있습니다.
더불어, 매매 발생 시 모바일 앱으로 즉시 확인할 수 있도록 Discord 알람 연동 기능을 추가하여 관리의 편의성을 높였습니다.
1. MQL5 소스코드 확보 및 준비
본격적으로 엔진 설치를 시작해 보겠습니다. 트레이딩 알고리즘의 핵심 로직이 담긴 MQL5 스크립트를 먼저 준비해야 합니다.후원해주시는 커피 한 잔은 지속적인 기술 공유의 큰 원동력이 됩니다.
2. 메타에디터(MetaEditor)를 활용한 EA 생성
준비가 완료되었다면 메타트레이더5 실행 후 거래 대상인 USDJPY 티커 차트를 활성화합니다.
실제 자산을 보호하기 위해 반드시 **데모 계좌(Demo Account)**에서 먼저 테스트하세요.
그러면 USDJPY 차트창이 열립니다.
차트 주기를 1분 단위로 설정하신 뒤, 상단의 IDE(MetaEditor) 버튼을 클릭합니다.
IDE프로그램이 열리면, 아래에 새로운 스크립트를 엽니다. (화살표)
MQL 마법사 창이 나타나면, 안내에 따라 '다음(Next)'을 지속적으로 클릭하시면 됩니다.
왜냐하면 방금 전 복사한 자동매매용 MQL5를 그대로 가져와서 붙여 넣기 때문에, 어떻게 설정해도 상관이 없습니다.
넥스트 클릭합니다.
과정을 마치면 기본적인 템플릿 코드가 포함된 스크립트 편집 창이 생성됩니다.
다 삭제합니다.
그리고 위에 Buy Me A Coffee에 있는 MQL5스크립트 가져와서 그대로 붙여 넣으시면 됩니다
코드 삽입 후 상단의 'Compile' 버튼을 클릭하여 실행 파일을 생성합니다.
정상적으로 진행되었다면 하단 로그 창에 오류 없이 컴파일이 완료되었다는 메시지가 표시됩니다.
3. EA 주요 변수(Inputs) 최적화 설정
설정창의 'Inputs' 탭에서 시스템 운영을 위한 핵심 파라미터들을 수정해야 합니다.
메타트레이더 창으로 돌아오시면 아까 컴파일한 자동매매용 EA가 보이실겁니다.
만약 EA가 식별되지 않는다면 네비게이터(Navigator) 창의 폴더 구조를 탐색하여 찾을 수 있습니다.
네비게이터 창 활성화를 위한 단축키는 Control+N입니다.
혹은 상단의 'View' 메뉴에서 수동으로 활성화가 가능합니다.
해당 자동매매 EA를 마우스로 드래그하여 활성화된 USDJPY 차트 위에 드롭하면 다음과 같은 설정 인터페이스가 나타납니다.
만약 설정 창이 즉시 표시되지 않는다면 상단의 'Inputs' 탭을 직접 클릭해 주시기 바랍니다.
이제 각 변수(Variable)의 값(Value)을 시스템 환경에 맞게 최적화해야 합니다.
우선 첫 번째 항목에는 이전 단계에서 구축한 VPS 서버의 IP 주소를 정확히 입력해야 합니다.
Vultr 대시보드에 접속하여 할당받은 IP 주소를 복사해 옵니다.
해당 주소를 서버 주소 입력 필드에 정확하게 붙여넣어 주십시오.
"http://64.176.229.37" 주소 형식에서 IP 부분만 변경하시고, 앞의 'http://' 접두사는 그대로 유지하시기 바랍니다. (향후 도메인 및 SSL 적용 시 유연하게 대응하기 위함입니다.)
보안 인증을 위해 이전에 생성하여 저장해둔 API 키를 해당 필드에 입력합니다.
다음 단계로 티커(Ticker) 값을 현재 거래 사양에 맞춰 수정합니다.
현재는 테스트를 위해 USDJPY를 사용하지만, 실전 매매 시에는 운영하고자 하는 자산의 티커명을 정확히 기재해야 합니다.
핵심적인 사항은 트레이딩뷰에서 사용되는 티커 명칭과 토씨 하나 틀리지 않고 일치해야 한다는 점입니다.
가령 거래소 티커가 USTEC 혹은 BTCUSD라면, 대소문자까지 정확히 반영하여 입력해 주시기 바랍니다.
주문 확인 주기인 '인터벌(Interval)' 설정 부분입니다.
본 시스템은 MQL5의 WebRequest 기능을 활용하여 VPS에 저장된 웹훅 데이터를 설정된 주기(기본 10초)마다 폴링(Polling)하여 주문을 집행하는 메커니즘을 가집니다.
4. 자동매매 운영 가이드: 지연 시간과 주문 방식의 이해
A. 네트워크 지연(Latency)의 발생 가능성
웹훅 신호를 10초 주기로 확인하는 주문 방식의 기술적 특성에 대해 심도 있게 설명해 드리고자 합니다.
주문 확인 주기를 10초보다 단축하는 것이 가능할까요? 기술적으로는 주기를 더 짧게 설정할 수 있습니다.
속도를 높이려면 입력된 수치를 줄이면 되지만, 서버 부하와 네트워크 안정성을 고려했을 때 가장 균형 잡힌 시간대는 10초 내외라고 판단됩니다.
이 솔루션은 원격지의 로컬 컴퓨터가 WebRequest 통신을 통해 VPS에 적재된 웹훅 로그를 능동적으로 수집하는 방식입니다.
"데이터 폴링 방식의 특성"
이로 인해 각 인프라 장치 간의 통신 과정에서 필연적으로 미세한 지연 시간(Latency)이 중첩되어 발생할 수 있습니다.
즉, 1분봉과 같은 초단기 분봉 트레이딩 시 신호 발생 속도가 주문 집행 속도보다 빠를 경우 로직 상의 엇박자가 발생할 가능성이 있습니다. 물론 현재까지의 테스트 결과 1분봉 기준 10초 주기 폴링에서도 체결 누락은 발생하지 않았으나, 환경에 따른 변수는 존재합니다.
선물 거래 환경에서는 틱 단위의 가격 변동성이 매우 극심합니다. 메타트레이더가 투박한 디자인에도 불구하고 전 세계 트레이더들에게 사랑받는 이유는 이러한 변동성 속에서도 신속하고 안정적인 집행 성능을 보여주기 때문입니다.
따라서 시장가 주문(Market Order) 방식이라 하더라도 네트워크 상태에 따라 미세한 가격 괴리가 발생할 수 있음을 인지해야 합니다.
안정적인 운용을 위해서는 가급적 15분봉 이상의 중장기 전략에서 본 솔루션을 활용하시는 것을 권장해 드립니다.
B. 시장가 주문 기반 시스템의 특징
본 시스템이 왜 시장가 주문(Market Order) 기반으로 설계되었는지 궁금해하실 수 있습니다.
결론부터 말씀드리면, 현재의 기술적 구조에서는 시장가 체결이 가장 확실한 집행 방법이기 때문입니다.
트레이딩뷰에서 VPS를 거쳐 메타트레이더로 이어지는 다단계 통신 구조상, 신호 발생 시 즉각적인 체결을 보장하기 위해 시장가 방식을 채택하는 것이 일반적입니다.
지정가 주문의 경우 가격 도달 여부와 미체결 관리에 대한 추가적인 로직 구현이 필요하며, 이는 향후 고도화된 모델에서 다룰 예정입니다.
만약 정교한 지정가 매매를 원하신다면 MQL5를 심도 있게 학습하여 메타트레이더 내부 로직만으로 완결되는 EA를 구축해야 합니다. (이 부분 역시 추후 가이드로 준비 중입니다.)
국내 주식의 경우 파이썬 API를 직접 연동하여 지정가 주문 시스템을 구축하는 대안도 존재합니다.
서로 다른 플랫폼(TradingView -> VPS -> MT5)을 브리지(Bridge) 형식으로 연결하는 현재 모델에서는 시장가 주문이 가장 안정적인 집행력을 보여줍니다. 지정가 매매의 자동화 가능성에 대해서는 지속적으로 연구하여 포스팅하도록 하겠습니다.
다음으로 주문 구분을 위한 고유 식별 번호인 '매직넘버'를 설정합니다.
메타트레이더 사용자라면 익숙하시겠지만, 매직넘버는 각 전략을 구분하는 필수 요소입니다.
복수의 차트에서 서로 다른 전략을 운영할 경우 각기 다른 매직넘버를 부여해야 주문 충돌을 방지할 수 있습니다.
이제 실시간 매매 현황을 수신할 디스코드 웹훅 주소를 등록하겠습니다.
5. 디스코드(Discord) 연동을 통한 실시간 알림 시스템
외부에서도 매매 집행 상황을 실시간으로 모니터링할 수 있도록 디스코드 알림 기능을 활성화합니다.
아직 디스코드 계정이 없으신 분은 공식 웹사이트를 통해 무료로 가입하실 수 있습니다.
https://discord.com 가입하십시오.
(참고로 저는 훌륭한 인사이트를 제공해 주시는 장도강님의 커뮤니티에도 참여하고 있습니다.)
서버 내 채널 설정에서 톱니바퀴 아이콘을 클릭합니다.
메뉴 리스트 중 '연동(Integrations)' 항목을 선택합니다.
웹훅 URL 복사 버튼을 눌러 고유 주소를 클립보드에 저장합니다.
디스코드 주소 입력 시에는 서버 주소와 달리 필드 내용을 모두 비운 뒤 복사한 주소 전체를 붙여넣으시면 됩니다.
중요한 팁: 모바일 기기에서도 즉각적인 푸시 알림을 받으시려면 스마트폰에 디스코드 앱을 설치하고, 해당 계정의 알림 권한을 반드시 '허용'으로 설정해야 합니다.
설정이 완료된 후에는 해당 프리셋을 별도로 저장해 두시는 것을 권장합니다.
초기 설치 시에는 숙련도 차이로 인해 시행착오를 겪을 수 있으니 꼼꼼히 체크하시기 바랍니다.
이제 실제 운영 준비를 위해 'Common' 탭으로 이동합니다.
'Allow Algo Trading' 체크박스를 선택하고 확인(OK)을 누르면, EA 활성화 메시지가 로그 창에 출력됩니다.
메타트레이더 시스템의 특성상 내부 체크만으로는 자동매매가 최종 가동되지 않습니다.
차트 우상단의 EA 아이콘이 회색으로 표시된다면 현재 비활성 상태임을 의미합니다.
상단 툴바의 'Algo Trading' 버튼을 클릭하여 아이콘이 녹색 세모 형태로 변경되어야 실제 주문 집행이 시작됩니다.
6. 최종 활성화 및 WebRequest 보안 설정
외부 통신 허용을 위한 플랫폼 전역 설정을 조정해야 합니다.
상단 메뉴의 'Tools' -> 'Options' 항목을 차례로 클릭합니다.
'Expert Advisors' 탭에서 'Allow WebRequest for listed URL' 옵션을 활성화하고 아래 3가지 주소를 화이트리스트에 등록합니다.
첫 번째는 VPS 서버 주소이며, 나머지는 디스코드 통신 주소(https://discord.com, https://discordapp.com)를 각각 입력합니다.
정확히 입력하셨다면 'OK'를 눌러 설정을 저장하고 창을 닫습니다.
매매 집행 로그를 모니터링하기 위해 하단 터미널 영역의 'Experts' 탭을 활성화합니다.
이제 트레이딩뷰의 신호에 따라 메타트레이더에서 자동 주문(Buy) 및 청산(Close) 프로세스가 수행되는 것을 확인하실 수 있습니다.
테스트 신호에 반응하여 USDJPY 0.01 랏 주문이 성공적으로 체결된 모습입니다.
동일 시점의 트레이딩뷰 신호 발생 내역을 확인하여 주문 일치 여부를 검증합니다.
트레이딩뷰의 주문 신호가 시스템 인프라를 거쳐 메타트레이더까지 완벽하게 전달되었습니다.
추가적인 동작 상태를 더 지켜보겠습니다.
트레이딩뷰 전략에 따라 매수와 매도가 유기적으로 반복 실행되고 있습니다.
메타트레이더 터미널에서도 실시간 주문 집행 상태가 동기화되는지 최종 확인합니다.
전략 로직에 따라 오차 없이 매매가 수행되고 있음을 확인할 수 있습니다.
마지막으로 모바일 디스코드 앱을 통해 실시간 알림 전송 상태를 검토합니다.
시스템에서 사용되는 각 주문 시그널의 상세 의미는 다음과 같습니다.
OPEN BUY: 매수로 포지션 진입CLOSE SELL: 매도로 포지션 종료OPEN SELL: 매도로 포지션 진입CLOSE BUY: 매수로 포지션 종료
(해외 선물 환경에서는 전통적인 Long/Short 개념을 매수(Buy)와 매도(Sell)로 지칭합니다.)
축하드립니다! 이제 트레이딩뷰의 강력한 분석 능력과 메타트레이더의 신속한 집행력이 결합된 완전 자동매매 시스템이 완성되었습니다.
가이드에 포함된 테스트 스크립트 과정을 충분히 숙달하셨다면, 이제 여러분만의 고유한 매매 전략을 적용하여 시장에 대응해 보시기 바랍니다. 다음 포스팅에서는 시스템 가동 중 발생할 수 있는 주요 예외 상황과 해결 방안에 대해 심도 있게 다루어 보겠습니다.
무료 트레이딩뷰-메타트레이더5 자동매매 가이드 시리즈
- 01편: 무료 구축 원리와 시스템 구조
- 02편: 유료 커넥터 비용 비교와 무료 구축의 경제성
- 03편: 24시간 가동을 위한 Vultr VPS 설치 및 서버 설정
- 04편: 트레이딩뷰 웹훅 얼러트 설정 및 서버 연동
- 05편: 메타트레이더5 EA 설치 및 최종 주문 실행 (현재글)
- 06편: 완벽구동을 위한 문제해결 가이드(다음글)
- 목차: 트레이딩뷰-메타트레이더 자동매매 가이드
본 포스팅은 정보 제공을 목적으로 하며, 특정 서비스를 권유하지 않습니다. 투자의 최종 책임은 투자자 본인에게 있습니다.








































