English Русский 中文 Español Deutsch 日本語 Português Français Italiano Türkçe
preview
가장 강력한 머신러닝 기반의 트레이딩 플랫폼은 어떻게 구축 된 것인가: 아카이브, 포럼 및 릴리스를 통해 살펴본 MQL과 MetaTrader의 진화

가장 강력한 머신러닝 기반의 트레이딩 플랫폼은 어떻게 구축 된 것인가: 아카이브, 포럼 및 릴리스를 통해 살펴본 MQL과 MetaTrader의 진화

MetaTrader 5인터뷰 |
37 11
MetaQuotes
MetaQuotes

최초의 Expert Advisors 시스템부터 에이전트형 AI 어시스턴트, MCP, 그리고 OpenBLAS까지: MQL 생태계는 어떻게 발전해 왔는가.

MQL의 역사는 트레이딩 전략을 위한 단순한 언어에서 포괄적인 개발 및 분석 환경으로 변모해 온 스토리입니다. 이제 생태계는 MetaEditor, MQL5, Python, ONNX, Agentic AI Assistant, Model Context Protocol(MCP), OpenBLAS 및 Algo Forge Git 인프라를 결합하고 있습니다.

가장 강력한 머신러닝 기반의 트레이딩 플랫폼은 어떻게 구축 된 것일까요 — MetaTrader 5


Expert Advisors의 언어에서 IDE로

이제 MetaEditor를 단순히 코드 편집기로만 생각할 수는 없습니다. 이제 MetaEditor에는 문서, 컴파일러, 디버거, 프로파일러, 프로젝트 관리, MQL5.COM 통합, 중앙 집중식 소스 코드 저장소, Python 통합, ONNX 지원, AI 어시스턴트, SQLite 데이터베이스 지원, CSV 파일을 편집 가능한 테이블로 사용할 수 있는 기능 등이 포함되어 있습니다. 이러한 변화는 하루아침에 이루어진 것이 아닙니다.

MetaQuotes는 플랫폼 초기부터 한 가지 방향으로 나아가고 있었습니다: 트레이더들에게 차트와 매매 버튼 뿐만 아니라 트레이딩 아이디어를 코드로 작성하고 히스토리 데이터로 테스트하고 인간의 개입 없이 실행될 수 있도록 하는 것이었습니다. MQL의 역사는 Expert Advisors를 위해 개발된 간단한 언어가 점차 완벽한 엔지니어링 환경으로 발전해 온 과정을 보여주는 서사입니다.

인터넷이 모든 것을 보존해 준 것은 아닙니다. 오래전에 작성된 페이지 중 일부는 완전히 사라졌습니다; 일부는 Internet Archive Wayback Machine에 일부가 남아 있습니다; 그리고 나머지 일부는 옛날 포럼 아카이브와 뉴스 글에서 찾아볼 수 있습니다. 하지만 발전의 주요 과정을 밝히기에 충분한 자료가 아직 남아 있습니다:

FX 차트 → 메타쿼츠 → 메타트레이더 → 메타트레이더 4 → 메타트레이더 5

이 차이점은 중요합니다. 해당 아카이브에는 다양한 빌드 번호, 내부 버전 지정 및 이전 포럼 게시글의 제목이 포함되어 있습니다. 하지만 플랫폼의 공개적인 역사는 버전 번호의 연속이라기보다는 제품과 아이디어의 발전 과정으로 이해하는 것이 가장 적절합니다. 이 이야기의 핵심은 소프트웨어의 출시가 아닙니다. 트레이딩 터미널이 개발자 작업 공간으로 점진적으로 변모하는 과정에 있습니다.

언어보다 Expert Advisors가 먼저 등장했습니다

MetaQuotes 웹사이트의 가장 초기의 아카이브는 2001년 2월로 거슬러 올라갑니다. MetaQuotes Software Corp.는 2000년 11월 27일에 공식적으로 설립되었지만 미래의 플랫폼과 트레이딩 자동화에 대한 논의는 그보다 훨씬 이전에 시작되었습니다. 아카이브에는 포럼 게시물이 포함되어 있는데 날짜는 2000년 11월 23일자입니다. — 이는 회사가 정식으로 등록되기 4일 전입니다


이 초창기 자료에서 특히 흥미로운 점은 웹사이트의 외관이나 기술적 세부 사항이 아닙니다. 중요한 점은 MQL은 아직 존재하지 않았지만 Expert Advisors라는 개념은 이미 존재했었다는 것입니다. 처음부터 초점은 차트와 호가 뿐만 아니라 트레이딩 시스템을 프로그래밍 하는 것에 맞춰져 있었습니다.

이것이 이후 모든 것의 방향을 정했습니다. MetaQuotes는 터미널을 처음부터 시장을 수동적으로 모니터링하는 창으로서가 아니라 사용자가 전략을 공식화하고 소프트웨어에 실행을 위임할 수 있는 환경으로 여겼습니다.

MetaQuotes와 MQL의 첫 번째 버전

MQL에 대한 최초의 주목할 만한 공개 언급은 2001년 11월에 나타났습니다. 그때가 바로 MetaQuotes version 1.78이 출시된 때였고 자신만의 트레이딩 전략을 생성하는 — Expert Advisors — 가 소개된 때입니다. Expert Advisors는 플랫폼 내부의 언어인 MetaQuotes Language를 사용하여 만들 수 있었습니다.

당시 발표는 이미 플랫폼의 장기적인 미래 비전을 제시했습니다. Expert Advisors는 매매 로직을 정의하고 과거 데이터를 기반으로 테스트되며 계좌에서 자동으로 거래를 실행하고 사람의 개입 없이 보유한 포지션을 관리하도록 설계되었습니다.

오늘날의 기준으로 보면 최초의 MQL은 상당히 초라해 보였습니다. 전체 사양은 하나의 HTML 페이지에 모두 담겨있었습니다. 언어에는 반복문, 배열 그리고 완전한 프로그램에서 흔히 볼 수 있는 익숙한 구조가 없었습니다. 계산에는 미리 정의된 소수의 부동 소수점 변수가 사용되었습니다.

하지만 이 중요한 업적을 오로지 문법적인 측면만으로 판단하는 것은 잘못된 것일 겁니다. 진정한 의미는 언어의 표현력에 있는 것이 아니라 언어의 통합 수준에 있었습니다. Expert Advisors는 무료 클라이언트 터미널 내에서 직접 실행되어 시계열 및 기술 지표에 접근하고 시장을 분석하고 주문을 서버로 전송할 수 있었습니다.

이 부분은 이후 MQL 생태계 전체의 표준이 될 원칙의 등장을 알리는 계기가 되었습니다: 트레이딩 전략은 수동으로 터미널에 가져와야 하는 외부의 신호가 아니라 트레이딩 플랫폼 내에서 실행 가능한 프로그램이라는 것입니다.


MetaTrader: 새로운 플랫폼, 새로운 규모

2002년 5월, 새로운 MetaTrader 플랫폼의 공개 테스트가 시작되었습니다. 이는 단순한 외관을 업데이트하는 것을 훨씬 뛰어넘는 것이었습니다 — 서버 및 관리자 구성 요소의 대대적인 재설계를 의미했습니다. 출시와 함께 이뤄진 발표에서 외환, CFD, 선물, 주식 시장을 포함한 수백 가지 금융 상품 지원, 새로운 통신 프로토콜, 수천 명의 온라인 사용자에게 서비스를 제공할 수 있는 기능 등이 소개되었습니다.

이 단계는 MQL의 역사에서 두 가지 이유로 중요합니다.

첫째, 터미널은 더 큰 생태계의 일부가 되었습니다. 자동 매매는 더 이상 독립형 애플리케이션이 아니라 서버, 관리 도구, 대규모 사용자 기반 및 다양한 금융 상품을 포함하는 통합 시스템이었습니다.

둘째, 기존 언어만으로는 충분하지 않다는 것이 분명해졌습니다. 사용자들이 단순히 미리 만들어진 Expert Advisors를 실행하는 것 뿐만 아니라 실제로 트레이딩 로직을 기술해 나아가야 한다 했을 때 언어는 보편적인 프로그래밍 방식에 더 가까워져야 했습니다.

MQL II: 언어는 이제 실제 프로그래밍 언어와 닮아가기 시작했습니다

2002년 가을, MetaTrader version 2.03에서 새로운 버전의 언어가 소개되었습니다: MQL II.


언어는 이상 단순히 Expert Advisor를 구축하기 위한 공식들의 집합으로만 볼 수 없게 되었습니다. MQL II 문서는 원래 MQL 문서보다 약 3배 더 길었지만 여전히 한장의 HTML 페이지에 모두 담을 수 있었습니다. 이 언어는 실수, 문자열 및 불리언 변수, 배열, for 및 while 루프, 그리고 확장된 내장 함수 세트를 도입했습니다. 여기에는 절댓값, 최대값, 코사인, 지수, 플로어, 로그, 절댓값, 거듭제곱, 반올림, 사인, 제곱근, 탄젠트와 같은 수학 함수가 포함되었습니다.

그것은 상당한 진전이었습니다. 사용자들은 여전히 상당히 경직된 프레임워크 안에서 작업했습니다: 각 소스 파일은 기본적으로 금융 상품의 틱이 발생할 때 실행되는 하나의 실행 가능한 함수를 정의했습니다. 하지만 이러한 틀 안에서도 이미 더 복잡한 논리를 구현하고 조건문, 반복문, 배열, 수학적 계산 등을 사용하는 것이 가능했습니다.

이후 외부에서 컴파일 된 파일을 호출하는 것이 가능해지면서 하나의 소스 파일 내에 사용자 정의 함수를 포함할 수 없었던 문제가 부분적으로 해결되었습니다. 내부적으로는 그 구현 방식은 미래의 MQL4 및 MQL5와는 아직 거리가 멀었습니다: 해당 코드는 역폴란드 표기법을 기반으로 구축된 스택 기반 시스템에서 실행되었습니다. 하지만 사용자들에게는 그것이 중요한 것은 아니었습니다. 핵심은 트레이딩 전략이 일련의 조건에서 점차 완전한 프로그램으로 발전해 나아갔다는 점입니다.

구문적인 측면에서 MQL II는 파스칼과 유사했습니다. 이것 또한 의도적인 것이었습니다. 파스칼은 프로그래밍 학습에 가장 접근하기 쉬운 언어 중 하나로 여겨졌으며 이는 당시 MetaQuotes의 철학과 완벽하게 부합했습니다: 트레이딩 터미널의 모든 사용자가 자신만의 매매 전략을 개발할 기회를 가져야 한다는 것.

사용자 맞춤 지표: Expert Advisor를 넘어서는 MQL

2003년 봄, MQL의 개발이 또 하나의 중요한 단계를 거쳤습니다. 3월에 새로운 내장 지표와 파일 함수가 터미널에 추가되었습니다: FileOpen, FileClose, FileDelete, FileSize, FileTell, FileSeek, FileWrite, FileReadNumber, FileReadString 등.

하지만 결정적인 전환점은 2003년 4월이었습니다: MetaTrader 버전 3.10에서 MQL로 작성된 사용자 맞춤 지표 및 함수에 대한 지원이 도입되었습니다.


이로써 언어의 역할은 확대되었습니다. 그때까지 MQL은 주로 Expert Advisor와 관련되어 있었습니다. 사용자가 매매 전략을 작성하고 터미널이 매 틱마다 해당 전략을 실행하는 방식이었습니다. 사용자 맞춤 지표는 새로운 활용 사례를 제시했습니다: 이제 트레이더들은 매매 결정 뿐만 아니라 자신만의 시장 분석 방법까지 프로그래밍할 수 있게 된 것이었습니다.

이로써 MQL은 트레이더의 작업에서 두 가지 분명한 측면, 즉 매매 결정과 분석 도구의 구축을 포괄하게 되었습니다. 시간이 흐르면서 이 조합은 MetaTrader 4의 표준이 되었습니다: Expert Advisors, 지표, 스크립트 및 라이브러리는 단일 환경 내에서 서로 다른 유형의 프로그램으로 취급되었습니다.

과도기 단계: 단순함에서 완전한 언어로

2003년 중반에 이르러 차세대의 플랫폼은 기존의 오래된 아키텍처를 단순히 확장하는 것에 그쳐서는 안 된다는 것이 분명해졌습니다. 새로운 제품, 새로운 언어, 그리고 새로운 환경이 필요했습니다.

개발 과정에서 공개 인터넷에 거의 흔적이 남아 있지 않은 과도기적 해결책들이 사용되었습니다. 하지만 변화의 방향은 분명했습니다. 개발자들은 "소스 파일 하나는 함수 하나"란 모델, 스택 기반 실행 방식, 그리고 지나치게 교육적이고 장황한 구문에서 벗어나기로 결정했습니다. 미래의 프로그래밍 언어는 C 계열 언어에 더 가까워지고 더 복잡한 프로그램 구조를 지원하며 사용자가 단순한 Expert Advisor 뿐만 아니라 정교한 매매 시스템까지 구축할 수 있도록 할 것이었습니다.

이는 철학의 변화를 의미하기도 했습니다. 처음에는 대략 이런 생각이었습니다: 모든 트레이더들은 자신만의 전략을 프로그래밍할 수 있어야 한다는 것. MQL4가 개발될 무렵에 이러한 아이디어가 더욱 구체화되었습니다: 숙련된 사용자라면 터미널을 벗어나지 않고도 어떠한 복잡한 매매 전략이든 프로그래밍할 수 있어야 한다는 것.

동시에 단순함은 여전히 최우선 과제였습니다. 간단한 전략은 그대로 간단하게 유지되어야 했습니다. 하지만 복잡성의 한계를 획기적으로 높여야 했습니다.

MetaTrader 4 및 MQL4: 터미널이 IDE가 됩니다

MetaTrader 4의 개발은 2003년 여름에 시작되었습니다. 개발자들은 논의를 하며 미래의 기능들이 점차 드러나게 되었습니다: 고급 테스트, 다양한 심볼 및 시간대에 대한 시계열 액세스, 확장된 매매 기능, 스크립트, 다수의 지표 버퍼가 있는 사용자 맞춤 지표, DLL에서 외부 기능 호출 등이 그것들이었습니다. 2004년 2월 5일 샘플 MQL4 프로그램 소스 코드가 개발자들을 위한 테스트 용 으로 배포되었습니다.

2004년 초가 되자 이것은 단순한 업데이트가 아닐 것이라는 점이 분명해졌습니다. 시스템은 사실상 처음부터 다시 작성되고 있었습니다. 예상보다 시간이 더 걸렸지만 바로 그 점 때문에 MetaTrader 4는 단순히 개선된 기능들의 모음이 아니라 완전히 새로운 플랫폼이 될 수 있었습니다.

2004년 11월 18일 MetaQuotes는 다가오는 MetaTrader 4 beta의 출시를 발표했습니다. 이 발표는 매매 및 분석 기능 뿐만 아니라 여러 면에서 중요한 의미를 지녔었습니다. 처음으로 단일 제품이 대중의 시장 알고리즘 거래를 위한 명확한 모델을 통합했습니다: 여기에는 터미널, MetaQuotes Language 4 프로그래밍 언어, MetaEditor 4 IDE, Expert Advisors, 사용자 맞춤 지표 및 스크립트가 포함됩니다.


그 시점부터 MetaTrader는 단순히 자동화 기능을 갖춘 트레이딩 터미널이 아닌 것이었습니다. MetaTrader 4는 개발자들에게 그들만의 작업 공간을 제공하는 플랫폼이 되었습니다.

MetaQuotes 웹사이트 the MQL4 documentation 데이터 유형, 연산 및 표현식, 문장, 함수, 변수, 전처리기, 그리고 나중에 언어 구문까지 놀라울 정도로 간결하게 정리되어 있었습니다. 전체 참조 문서는 MetaEditor에 내장되어 있었습니다. 이는 근본적으로 설계적인 결정이었습니다: 개발자들은 더 이상 문서를 볼 때마다 브라우저로 전환할 필요가 없게 되었습니다. 참조 자료, 소스 코드 및 컴파일 도구가 모두 한 곳에 있었습니다.


MQL4는 이미 완전한 기능을 갖춘 절차적 프로그래밍 언어였습니다. 이 버전은 사용자 정의 함수, 보다 친숙한 프로그램 구조, 일회성 실행을 위한 스크립트, EX4 파일 형식의 라이브러리, 그리고 외부 DLL의 함수를 호출하는 기능을 도입했습니다.

MetaEditor는 단순한 텍스트 편집기 이상의 기능을 갖게 된 것이었습니다. 이 프로그램은 도움말 탐색, 구문 강조 표시, 컴파일, 다양한 MQL 프로그램 유형 지원 및 내장 도움 문서의 기능을 제공했습니다. 이 단계에서 MetaTrader 4를 알고리즘 트레이딩에 널리 사용되는 플랫폼으로 만드는 공식이 완전히 확립되었습니다:

터미널 + 언어 + 편집기 + 도움말 + 테스트 + 커뮤니티

2005년 7월 1일, 오랜 개발 과정을 거쳐 MetaTrader 4가 완전한 트레이딩 플랫폼으로 출시되었습니다. 그 시점부터 이야기는 단순히 프로그래밍 언어의 진화에 관한 것이 아니라 생태계의 출현에 관한 것일 것입니다: 개발자 전용 웹사이트, 코드베이스, 기고글, 트레이딩 로봇 챔피언십, 그리고 거대한 MQL4 사용자 커뮤니티.

그리고 이것이 다음 파트의 주제입니다.


MQL4.COM: 언어에 커뮤니티가 생기다

MetaTrader 4가 출시된 후 플랫폼 자체만으로는 충분하지 않다는 것이 분명해졌습니다. 사용자들이 Expert Advisors, 지표, 스크립트 및 라이브러리를 작성할 수 있다면 문서, 예제, 토론, 기사 및 코드를 공유할 수 있는 공간도 필요했습니다.

2005년 11월 8일, MQL4 개발자를 위한 전용 웹사이트인 MQL4.COM이 시작되었습니다.

이는 중요한 진전이었습니다: MQL4는 더 이상 트레이딩 터미널에 내장된 언어에 그치지 않았습니다. 이 언어는 독자적인 개발자 생태계의 중심지로 자리매김하고 있었습니다. 웹사이트에 포럼, 문서, 코드베이스 및 기고글이 게시되었습니다. 이후 해당 자료들은 러시아어와 영어뿐 아니라 중국어로도 출시되기 시작했습니다.

코드 베이스는 완성된 프로그램들로 빠르게 채워졌습니다. 출시 후 한 달도 채 되지 않아 코드베이스에는 이미 50개 이상의 Expert Advisor, 약 200개의 지표, 35개의 스크립트 및 17개의 라이브러리가 올라와 있었습니다. Expert Advisor, 지표, 스크립트 및 라이브러리는 MQL4를 "전문가용" 언어에서 널리 사용되는 실용적인 도구로 변화시켰습니다. 사용자들은 프로그램을 처음부터 작성할 수 있을 뿐만 아니라 다른 사람들이 작성한 코드를 연구하고 기존 솔루션을 수정하고 저자에게 질문하면서 점차 소프트웨어 개발의 길을 찾아갈 수 있었습니다.

이미 2006년에 커뮤니티 간행물 중 하나에서 인공 지능을 사용하는 Expert Advisor(단일 계층 신경망)을 다루었다는 점은 시사하는 바가 큽니다. 그 당시에는 주류와는 거리가 멀었습니다. 오늘날과 같은 인공지능과 머신러닝에 대한 열풍은 없었습니다. 하지만 아이디어 자체는 이미 커뮤니티 내에 존재했습니다: 그것은 거래 전략이 규칙과 지표 뿐만 아니라 학습 가능한 모델을 기반으로 구축될 수 있다는 것이었습니다.

이 에피소드는 MQL의 이후의 발전이 어떻게 자연스럽게 파이썬, ONNX, AI 어시스턴트, 그리고 OpenBLAS로 이어졌는지를 설명합니다. 머신러닝에 대한 관심은 갑자기 나타난 것이 아니었습니다. 플랫폼, 언어, 컴퓨팅 성능이 이를 지원하는 데 필요한 수준에 도달하는 데 시간이 걸렸을 뿐입니다.

자동 매매 챔피언십: Expert Advisor들이 무대에 오릅니다

다음으로 중요한 이정표는 자동 매매 챔피언십이었습니다. MQL4로 작성된 트레이딩 시스템의 첫 번째 대회는 2006년 말에 열렸습니다. 대회는 단순히 상금을 위한 대회가 아니었습니다. 대회는 MetaTrader 4의 뒤에 있는 핵심 개념을 공개적으로 보여주는 자리였습니다: Expert Advisor은 혼자 매매할 수 있으며 그 성과는 실시간으로 모니터링될 수 있었습니다.

2006년 챔피언십에는 총 258명의 개발자가 참가했습니다. 총 상금은 8만 달러였으며 대회는 12주 동안 진행되었습니다. 당시로서 이는 강력한 공개 선언이었습니다: 자동화된 거래가 더 이상 소수의 프로그래머들만의 영역이 아니다. 대회는 스펙타클 했습니다. 트레이더, 브로커, 개발자들의 관심을 끌었습니다.

상금조차 가장 중요한 부분은 아니었습니다. 대회는 전체 인프라에 대한 스트레스 테스트의 역할을 했습니다. 주최 측은 이를 위해 서버 하드웨어를 준비하고 수많은 터미널을 실행하며 Expert Advisor를 위한 동일한 운영 조건을 보장하고 시청자들이 온라인으로 결과를 모니터링할 수 있도록 했습니다.

이러한 경험은 이후 MetaTrader 생태계 내에서 유용하게 활용된 여러 아이디어, 즉 자동화된 Expert Advisor 검사, 소프트웨어 보호, VPS 호스팅, 경량 클라이언트 터미널, 웹 터미널, 매매 신호, 그리고 궁극적으로 애플리케이션 마켓 플레이스로 이어졌습니다.

2007년에는 참가자 수가 603명으로 증가했고 2008년에는 705명에 도달했습니다. 이는 더 이상 일회성 행사가 아니라 커뮤니티가 도달한 규모를 보여주는 지표였습니다. 사람들은 트레이딩 로봇을 개발하고 알고리즘에 대해 토론하고 접근 방식을 비교하고 다른 참가자들과의 인터뷰를 연구하고 어떤 시스템은 실제 트레이딩 환경에서 살아남는 반면 다른 시스템은 몇 주 만에 고장 나는 이유를 이해하려고 노력했습니다.

또한 신경망이 대회에서 계속해서 등장했다는 점도 주목할 만합니다. 2007년 우승자 Alexander Topchilo는 신경망 접근 방식을 Expert Advisor에 적용했으며 먼저 C++로 시스템을 개발 및 테스트한 후 MQL4로 포팅 했습니다. Alexander Topchilo(Better)와의 인터뷰

2008년, Leonid Velichkovsky 는 NeuroShell로 학습된 신경망을 사용하는 Expert Advisor를 발표했습니다. Leonid Velichkovsky(LeoV)와의 인터뷰

이는 글 전체에 있어 중요한 사항입니다. MQL의 역사는 단순히 구문의 역사가 아닙니다. 그 역사는 단순한 지표 기반 규칙부터 통계, 최적화, 신경망, 머신러닝에 이르기까지 점점 더 복잡해지는 아이디어들을 트레이딩 터미널에 구현하고자 노력하는 트레이더들의 스토리를 담고 있습니다.

2009년에는 챔피언십이 개최되지 않았습니다. MetaQuotes는 차세대 주요 플랫폼인 MetaTrader 5와 새로운 MQL5 언어 개발을 마무리하고 있었습니다.

MQL5: 새로운 플랫폼은 언어에서 시작됩니다

MQL5의 미래에 대한 논의는 MetaTrader 5가 공식 출시되기 훨씬 전부터 시작되었습니다. 2007년 초부터 MQL4.COM의 사용자들은 새로운 언어에 대해 무엇을 원하는지 활발하게 논의했습니다. 2007년 10월에 진행된 "MQL5"를 찾아서 결과 MQL4.COM 포럼에 링크만 15페이지 넘게 나타났습니다. 사용자들은 더 빠른 성능, 보다 체계적인 설계, 새로운 테스트 기능, 더 쉬운 데이터 처리, 그리고 더 현대적인 프로그래밍 모델을 요구했습니다.

내부적으로는 발전 방향이 훨씬 더 급진적이었습니다. 새로운 언어는 MQL4의 특징인 중간 표현 방식에서 벗어나 네이티브 코드를 생성하도록 설계되었습니다. 이는 다른 수준의 성능과 언어 자체에 대한 다른 수준의 아키텍처 요구 사항을 의미했습니다.

MQL5.COM에 대한 최초의 웹 아카이브 기록은 2007년 11월로 거슬러 올라갑니다. 별도의 도메인이 등장했다는 사실 자체가 이것이 단순히 새로운 구문에 관한 것이 아니라 미래의 생태계에 관한 것임을 보여주었습니다.


2008년 3월 31일, 곧 출시될 언어의 기능을 논의하는 인터뷰를 통해 새로운 MQL5 언어가 공식 발표되었습니다. 인터뷰 자체는 공개 아카이브에 남아 있지 않지만 날짜는 중요합니다: MetaTrader 5가 출시되기 전부터 개발자들은 새로운 프로그래밍 모델을 커뮤니티에 소개하기 시작했기 때문입니다.

2009년 여름에 MQL5.COM 웹사이트는 이미 출시가 임박했음을 명시적으로 약속하고 있었습니다.


2009년 10월 12일, MetaTrader 5 베타 테스트가 시작되었습니다. 한 달 후인 2009년 11월 18일, MQL5 개발자를 위한 새로운 웹사이트인 MQL5.community의 베타 버전이 출시되었습니다.

MQL5.커뮤니티: 단순한 포럼이 아닌 인프라

MQL5.community는 처음부터 일반적인 포럼으로 만들어지지 않았습니다. 처음부터 이 플랫폼은 문서, 포럼, 코드베이스, 기고글, 교육 자료 그리고 플랫폼이 발전함에 따라 추가될 수 있는 새로운 서비스 등 더 광범위한 생태계의 구조를 중심으로 구축되었습니다.

개발자들은 MQL4.COM에서 이미 잘 작동하던 것들, 즉 토론, 코드베이스, 문서 및 익숙한 지식 공유 모델을 보존하기 위해 노력했습니다. 하지만 새 웹사이트는 더 폭넓은 사용자층을 대상으로 만들어졌습니다. MQL5는 더 복잡했고 MetaTrader 5는 더 야심 찬 프로젝트였기 때문에 커뮤니티는 더욱 견고한 인프라를 필요로 했습니다.

중요한 조치 중 하나는 MQL4.COM에서 계정을 이전한 것이었습니다. 사용자들은 처음부터 다시 시작할 필요가 없었습니다: 기존 계정을 사용하여 새 사이트에 로그인할 수 있었습니다. 이는 두 시대를 잇는 다리가 되었고, MQL5가 MQL4에서 축적된 경험을 버린 것이 아니라 새로운 차원에서 그 위에 구축되었음을 보여주었습니다.

이로써 새로운 허브가 탄생했습니다: 언어, 문서, 기고글, 코드, 포럼, 그리고 미래의 서비스까지 모두 한 곳에 모이게 되었습니다. MQL5.community는 더 이상 터미널의 부가 기능이 아니라 플랫폼 자체의 일부가 되었습니다.

MetaTrader 5 및 MQL5: 언어가 엔지니어링 도구가 되다

2010년 6월 1일, MetaTrader 5 트레이딩 플랫폼이 출시되었습니다. 이전 세대와 달리, 이 제품은 외환 거래 뿐만 아니라 거래소 시장에서의 거래에도 적합하도록 설계되었습니다. 이를 위해서는 터미널 뿐만 아니라 언어도 변경해야 했습니다.

MQL5는 MQL4에 비해 크게 발전한 버전입니다. 이는 이미 C++와 유사한 객체 지향 프로그래밍 언어였습니다. MQL5 프로그램은 네이티브 x86 또는 x64 코드로 컴파일 되어 새로운 차원의 성능을 제공했습니다. 동시에 MQL의 핵심 개념은 변함없이 유지되었습니다: 사용자는 간단한 프로그램과 정교한 매매 시스템 모두를 작성할 수 있어야 한다는 것이었습니다.

트레이딩 모델 또한 더욱 복잡 해졌습니다. MetaTrader 5에서는 주문, 매매, 포지션을 각각 별도의 객체로 구분하는 시스템이 도입되었습니다. 트레이딩 운영은 거래소 인프라의 현실에 더 가까워졌지만 개발자 입장에서는 관리해야 할 세부 사항이 더 많아졌다는 것을 의미했습니다. 따라서 언어와 함께 개발된 표준 라이브러리와 클래스들은 일반적인 사용 사례를 쉽게 처리할 수 있도록 했습니다.

MQL5는 출시 당시 약 400개의 내장 함수를 가지고 있었습니다 — 이는 당시 MQL4가 가지고 있던 함수 수와 거의 동일했습니다. 하지만 함수의 개수가 가장 중요한 것은 아니었습니다. 중요한 것은 발전의 방향이었습니다. MQL5는 클래스, 이벤트 처리, 표준 라이브러리, 테스트, 최적화 및 플랫폼을 기반으로 구축될 미래의 서비스 등을 포함하는 대규모 시스템을 구축하기 위한 언어로 설계되었습니다.

MQL4 사용자를 위해 MQL5로 마이그레이션하는 방법을 설명하는 별도의 문서 섹션이 생성되었습니다. 이는 불가피한 일이었습니다: 새로운 언어는 더 강력했지만 다른 방식의 사고를 요구했기 때문이었습니다. MQL4가 알고리즘 트레이딩을 대중에게 더 쉽게 접근할 수 있도록 만들었다면 MQL5는 이를 더욱 엔지니어링 중심적으로 만들고자 한 것이었습니다.

MQL5 챔피언십: 새 플랫폼이 공개 테스트에 돌입했습니다

2010년, 자동 매매 챔피언십이 MQL5 Expert Advisor를 위한 대회로 돌아왔습니다. 이는 당연한 수순이었습니다: 새로운 플랫폼에는 공개 시연이 필요했고 개발자들은 MQL5가 문서에 있는 예제뿐 아니라 실제 3개월간의 트레이딩 로봇들이 경쟁하는 환경에서 어떻게 작동하는지 직접 확인해야 했습니다.

2010년 챔피언십에는 314명의 참가자가 등록했습니다. 2011년에는 395명이었고 2012년에는 451명이었습니다. 이 대회들은 MQL4 챔피언십이란 전통의 연장선일 뿐만 아니라 향상된 성능, 새로운 전략 테스터, 더욱 정교한 매매 모델, 그리고 스케일이 큰 Expert Advisors 개발 기능 등 새로운 플랫폼의 장점을 보여주는 자리이기도 했습니다.

대회는 다시 한번 여러 가지 목적을 달성했습니다. 트레이더들에게는 그것이 오락거리였고 자동화된 매매가 실제로 어떻게 작동하는지를 볼 수 있는 기회였습니다. 개발자들에게 있어 대회는 아이디어를 시험해 볼 수 있는 실질적인 검증의 장이었습니다. MetaQuotes에 있어 대회는 실제 환경에서 언어, 터미널, 전략 테스터, 인프라 및 프로그램 동작에 대한 피드백을 생성했습니다. 그리고 물론 MQL5 언어를 대중화하는 데에도 기여했습니다.

새로운 MQL4: MQL5의 반대급부

MetaTrader 5가 출시된 후 MQL4의 개발은 점차 뒷전으로 밀려날 것처럼 보였을지도 모릅니다. 하지만 정반대의 일이 일어났습니다. MetaTrader 4의 방대한 사용자 기반과 수년간 축적된 코드를 고려할 때 중단이 아닌 신중한 업데이트가 필요했습니다.

2013년 7월에 MetaTrader 4 및 MQL4에 대한 주요 변경 사항이 발표되었습니다. 이 아이디어는 독특했습니다: 모든 사람이 MQL4에서 MQL5로 코드를 포팅 하도록 강요하는 대신 MetaQuotes는 새로운 기술 기반의 기능을 최대한 많이 MQL4에 통합하기로 했습니다.

이로 인해 MQL4 및 MQL5용 통합 컴파일러, 통합 MetaEditor, 새로운 개발 도구 지원, EX4/EX5 파일에 대한 강화된 보호 기능, 그리고 MetaTrader 4의 애플리케이션에서 마켓을 사용할 수 있는 기능이 구현되었습니다.

이는 전체 생태계에 중요한 결정이었습니다. MQL4는 더 이상 "구세대 언어"로 남지 않았습니다. 이제 클래스, 구조체, 새로운 데이터 유형, 이벤트 핸들러, 더욱 엄격한 컴파일 모델, 리소스 지원, 새로운 그래픽 기능, 그리고 MQL5와 동일한 개발 도구 세트를 포함하게 되었습니다.

한 달 후, 새로운 MQL4 컴파일러와 에디터를 포함한 MetaTrader 4 IDE 베타 버전이 출시되었습니다. 2013년 말 새로운 MQL4와 애플리케이션 마켓이 포함된 업데이트된 MetaTrader 4에 대한 공개 테스트가 시작되었습니다. 2014년 2월 3일, MetaTrader 4 클라이언트 터미널 빌드 600이 출시되었습니다.

이 릴리스를 통해 MQL4의 역사는 사실상 두 시대로 나뉘었습니다. 기존의 MQL4는 Expert Advisor와 지표에 매우 적합한 간단한 C 언어와 유사한 언어였습니다. 새로운 MQL4는 MQL5에 훨씬 더 가까워졌습니다: 객체 지향 프로그래밍, 통합 MetaEditor, 새로운 컴파일러, 그리고 더 복잡한 애플리케이션을 만들 수 있는 기능을 특징으로 합니다.

동시에 MetaTrader 4는 가장 큰 장점을 그대로 유지했습니다. 바로 방대한 기존 사용자 기반, 프로그램 및 관련 지식을 버리지 않았다는 점입니다. 대신 기존 생태계에게는 새로운 기술적 기반이 제공되었습니다.

따라서 MQL4와 MQL5는 더 이상 완전히 다른 두 개체로 보이지 않았습니다. 한 언어는 자동화된 매매가 널리 보급되면서 생겨났고 다른 언어는 보다 엄격하고 강력한 엔지니어링 플랫폼을 구축하려는 노력에서 탄생했습니다. 빌드 600 이후 이 둘 사이에는 공통의 레이어가 나타났습니다: MetaEditor 컴파일러, 개발 스타일, 프로그램 보호 및 MQL5.community 서비스.

이 시점에 이르러 MQL의 역사는 이미 "Expert Advisors를 위한 언어"라는 개념을 훨씬 넘어섰습니다. 그 주변에 완전한 생태계가 형성되었습니다: 터미널, 에디터, 문서, 코드베이스, 기고글, 챔피언십, 마켓, 시그널, VPS, 그리고 거대한 커뮤니티 등. 하지만 다음 단계의 발전을 위해서는 훨씬 더 많은 것이 필요한 것이었습니다: 외부 데이터, 분산 컴퓨팅, 머신 러닝, 행렬, 신경망, 그리고 고급 선형 대수학 등이 그것입니다.

이것이 다음 파트의 주제입니다.


MQL5의 진화: 언어는 성장한다

MetaTrader 5 출시 이후 MQL5 개발은 여러 방향으로 동시에 진행되었습니다. 주요 관심사 중 하나는 언어 자체에 관한 것이었습니다: 언어는 C++와 더욱 유사해지고 대규모 프로젝트에 더 적합해지고 있었습니다. 두 번째는 런타임 환경에 관한 것이었습니다: MQL5 프로그램은 더 이상 차트에서 실행되는 Expert Advisor 및 지표에만 국한되지 않았습니다. 세 번째 단계는 연산에 초점을 맞췄습니다. 전략 테스터, 클라우드 최적화, OpenCL, 행렬, Python, ONNX 등을 통해 플랫폼 내에서 가능한 작업의 범위가 점차 확장되어 갔습니다.

개별적으로 살펴보면 이러한 업데이트는 마치 긴 릴리스 목록처럼 보일 수 있습니다. 하지만 이러한 요소들을 종합해 보면 더욱 중요한 변화가 드러납니다: MQL5는 트레이딩 로봇용 언어에서 개발, 컴퓨팅, 데이터 분석 및 외부 기술과의 통합을 위한 범용의 환경으로 발전해 왔습니다.

C++에 더욱 가까워지는 언어

MQL5는 처음에는 MQL4보다 더 엄격하고 빠른 후속 버전으로 개발되었습니다. 하지만 출시 후 몇 년 안에 기본적인 객체 지향 구문만으로는 충분하지 않다는 것이 분명해졌습니다. 개발자들은 대규모 프로젝트를 위해 코드 재사용, 제네릭 알고리즘, 안전한 상속, 네임스페이스, 복잡한 데이터 유형 지원과 같은 것들이 필요했습니다.

리소스는 2011년 1월 19일에 도입되었습니다. MetaTrader 5 클라이언트 터미널 빌드 384. 이를 통해 이미지, 데이터 및 기타 보조 파일을 프로그램에 직접 삽입할 수 있게 되었습니다. 이후 리소스 변수가 도입되었습니다: 프로젝트를 수많은 외부 종속성 파일들로 쪼개지 않고도, OpenCL 코드나 바이너리 데이터, 텍스트를 MQL5 프로그램의 일부로 직접 포함할 수 있었습니다.

함수 템플릿은 2012년 11월 16일 MetaTrader 5 트레이딩 터미널 빌드 722에 도입되었습니다.

클래스 템플릿은 2015년 10월 23일 MetaTrader 5 빌드 1200: 틱 기록 및 서비스 직접 결제와 함께 도입되었습니다. 이것들은 범용 프로그래밍을 향한 중요한 단계였습니다. 동일한 코드를 사용하여 다양한 데이터 유형에 대해 알고리즘을 수동으로 다시 작성할 필요 없이 처리할 수 있었습니다.

2016년에 언어에는 C++ 개발자들에게 익숙한 몇 가지 기능을 추가되었습니다:

추상 클래스는 2016년 4월 1일에 MetaTrader 5 빌드 1295와 함께 도입되었습니다.

dynamic_cast를 사용한 동적 타입 캐스팅은 2016년 6월에 도입되었습니다.

인터페이스는 2016년 8월 15일에 도입되었습니다.

finaloverride 수정자는 2016년 9월 16일에 추가되었습니다 — 새로운 MetaTrader 5 플랫폼 빌드 1430: 업데이트된 노출 탭.

이러한 변화들은 단순한 겉치레가 아니었습니다. 이를 통해 더욱 엄격하고 안전한 클래스 계층 구조를 구축하고 개발자의 의도를 명확하게 정의하며 컴파일 시점에 특정 유형의 오류를 포착할 수 있게 되었습니다.

네임스페이스는 2019년 10월 5일에 MetaTrader 5 빌드 2170에서 도입되었습니다: MQL5의 스코프, 대규모 전략 테스터 업데이트 및 내장 호스팅 기능 . 이는 특히 대규모 프로젝트와 타사 라이브러리에 중요합니다: 클래스, 함수 및 변수 이름이 더 이상 서로 충돌하지 않으며 코드를 모듈별로 더욱 깔끔하게 구성할 수 있게 했습니다.

complex 데이터 유형은 2021년 5월 21일에 MetaTrader 5 빌드 2940에서 추가되었습니다: MQL5 서비스 쇼케이스의 배치 및 업데이트된 디자인 . 이는 더 이상 "Expert Advisors를 위한 기능"이 아니라 엔지니어링 및 과학 컴퓨팅을 향한 한 걸음이었습니다. 복소수는 스펙트럼 분석, 선형 대수, 신호 처리 및 여러 수치 해석 메서드에 사용됩니다.

행렬 및 벡터 유형은 2022년 1월 28일에 추가되었습니다 — MetaTrader 5 빌드 3180: MQL5에서의 벡터 및 행렬과 향상된 사용성. 이는 엔지니어링 및 과학 컴퓨팅을 향해 몇 걸음 더 나아간 것을 의미하며 ONNX와의 통합 및 향후 OpenBLAS 라이브러리 사용을 위한 기반을 마련했습니다.

complexf, vectorcf, matrixcf 데이터 유형은 2024년 9월 27일에 추가되었습니다. MetaTrader 5 빌드 4570: MQL5의 웹 버전 개선 및 OpenBLAS 통합 .

MQL5는 트레이딩 로직을 작성하는 것 뿐만 아니라 대규모 라이브러리, 계산 모듈, 모델 래퍼 및 인프라 코드 구축에도 적합한 언어의 특징을 점차 갖추게 되었습니다.


컴퓨팅 환경으로서의 전략 테스터

별도의 개발 라인은 전략 테스터와 관련이 있습니다. MetaTrader에서 전략 테스터는 항상 중요한 역할을 해왔습니다. 과거 데이터에서의 테스트 없이 자동 매매는 단순한 추측에 불과하기 때문입니다. MQL5에서 전략 테스터는 단순히 Expert Advisor를 테스트하는 것 이상의 기능을 제공하기 시작했습니다.

2012년에는 OnTesterInit, OnTesterDeinit 및 OnTesterPass 이벤트 핸들러와 데이터 프레임 작업을 위한 함수가 도입되었습니다: FrameAdd, FrameFirst, FrameNext 및 FrameInputs. 이를 통해 테스트 에이전트는 최종 결과 하나 뿐만 아니라 임의의 데이터도 단말기로 전송할 수 있게 되었습니다.

이 업데이트의 중요성을 과소평가하기 쉽습니다. 실제로 이는 최적화를 더욱 유연한 계산 프로세스로 바꾸어 놓았습니다. Expert Advisor는 최적화 기준을 반환할 뿐만 아니라 추가 분석을 위해 중간 결과, 통계, 사용자 맞춤 지표 또는 데이터를 함께 전달할 수 있었습니다.

MQL5 클라우드 네트워크와 결합되면서 이는 분산 컴퓨팅의 가능성을 열었습니다. 형식적으로는 모든 것이 전략 테스터의 인프라 내에 남아 있었지만 실제로는 MQL5가 트레이딩 로봇의 기존 매개변수 조정에만 국한되지 않는 작업을 병렬 처리할 수 있는 메커니즘을 갖추게 되었습니다.

이는 일반적인 트렌드의 또 다른 예입니다: 알고리즘 매매를 위해 개발된 도구들이 점차 더 넓은 범위의 컴퓨팅 시나리오에서 유용하다는 것이 입증되고 있습니다.


MQL5, 차트를 넘어선 도약

기존 MQL 프로그램 모델은 차트에 종속되어 있었습니다: Expert Advisor는 심볼에서 실행되고 지표는 창에 표시되며 스크립트는 일회성 작업을 수행했습니다. MQL5는 이 모델을 점진적으로 확장했습니다.

OpenCL 지원은 2012년 2월 3일에 MetaTrader 5 트레이딩 터미널 빌드 581에 추가되었습니다. 이를 통해 사용 가능한 장치에서 병렬 컴퓨팅을 활용하고 대규모 데이터 처리에 적합한 작업을 가속화할 수 있게 되었습니다.

사용자 맞춤 심볼 작업용 함수는 2017년 12월 20일에 추가되었습니다 — MetaTrader 5 빌드 1730: MetaEditor와 합성 상품에서의 프로젝트 개발자들은 자신만의 심볼을 만들고 과거 데이터를 입력하고 틱을 업데이트하고 가상의 금융 상품을 구축할 수 있는 기능을 얻게 되었습니다. 이는 중요한 지점이었습니다: 아이디어가 표준 브로커 데이터 뿐만 아니라 맞춤형 시계열, 집계된 금융 상품 및 특수 시세 데이터 세트에서도 테스트될 수 있었기 때문입니다.

.NET 라이브러리에 대한 내장 지원은 2018년 10월 26일에 추가되었습니다 — MetaTrader 5 빌드 1930: MQL5에서 플로팅 차트 창 및 .NET 라이브러리 사용. MetaEditor가 함수 가져오기 프로세스의 일부를 담당하여 개발자들이 복잡한 래퍼를 직접 작성할 필요 없이 외부 코드를 더 간단하게 사용할 수 있도록 했습니다.

새로운 유형의 MQL5 프로그램인 서비스(차트에 연결되지 않는 프로그램)이 2019년 2월 21일에 MetaTrader 5 빌드 2005에 도입되었습니다. 경제 캘린더, MQL5 프로그램 서비스, 그리고 R 언어용 API . 서비스는 백그라운드에서 실행되고 터미널과 함께 시작되며 인프라 작업을 수행할 수 있습니다. 이는 MQL 프로그램의 개념을 크게 바꿔놓습니다: 더 이상 Expert Advisor, 지표 또는 스크립트일 필요가 없는 것입니다.

TCP 연결을 설정하기 위한 네트워크 함수는 2019년 2월 21일 MetaTrader 5 빌드 2005 업데이트에 추가되었습니다. MQL5 프로그램은 터미널 설정에서 관련 주소가 명시적으로 승인된 경우 소켓을 통해 외부 시스템과 데이터를 교환할 수 있는 기능을 얻었습니다. 이를 통해 사용자 맞춤 데이터 소스, 로컬 서비스, 외부 분석 및 애플리케이션 간 데이터 교환 등 통합 시나리오의 범위가 확장되었습니다.

데이터베이스 지원DirectX 지원은 2019년 12월 6일에 MetaTrader 5 빌드 2265에 추가되었습니다: MQL5의 3D 시각화를 위한 DirectX 함수 및 전략 테스터의 심볼 구성 . 이 업데이트들은 서로 관련이 없어 보일 수 있지만 공통된 아이디어를 담고 있습니다. MQL5는 더 이상 트레이딩 함수 호출과 지표 버퍼에만 국한되지 않고 데이터 저장, 시각화, 외부 통합 및 백그라운드 처리를 위한 도구를 확보한 것이었습니다.


파이썬: 데이터 분석과 머신러닝으로 가는 다리

2019년 6월 14일, MetaTrader 5에 Python 통합 기능이 추가되었습니다: MetaTrader 5 빌드 2085에서 Python 통합, Wine(Linux/macOS)에서의 마켓 및 시그널 지원, 전략 테스터의 주요 최적화가 이루어졌습니다. 이는 트레이딩 플랫폼과 더 넓은 데이터 분석의 세계를 연결하는 가장 중요한 다리 중 하나였습니다.

그 시점에 파이썬은 이미 머신러닝, 통계, 데이터 처리 및 시각화를 위한 표준 도구로 자리 잡았습니다. 파이썬 지원 덕분에 MetaTrader 5에서 데이터를 가져와 외부 연구 워크플로에서 활용할 수 있게 되었습니다. 즉, 모델 구축, 가설 검증, 데이터 세트 준비, 결과 분석, 그리고 전략을 트레이딩 플랫폼에 다시 반영하는 작업이 가능 해졌습니다.

다시 한번, 동일한 개발 논리가 나타납니다. MetaTrader는 외부 세계 전체를 대체하려는 것이 아닙니다. 대신 이 플랫폼은 개발자에게 연결 고리를 제공합니다. 데이터와 트레이딩 인프라는 터미널에 남아 있는 반면 연구 및 머신러닝 워크플로는 이미 풍부한 라이브러리 생태계가 구축된 곳에서 실행될 수 있습니다.

ONNX: MQL5에 도입되는 머신러닝 모델

다음 단계에서는 머신러닝이 플랫폼에 더욱 가까워졌습니다. 2023년 3월 10일, MetaTrader 5는 머신 러닝 모델 교환을 위한 오픈 형식인 ONNX에 대한 지원을 추가했습니다 — MetaTrader 5 빌드 3620: MQL5에서 웹 터미널 개선, ONNX 지원 및 행렬 곱셈 속도 향상.

ONNX 개념은 MetaTrader와 같은 플랫폼에 매우 적합합니다. 터미널 외부에서 모델을 학습시킬 수도 있습니다 — 예를 들어 익숙한 라이브러리를 사용하여 Python으로 학습시킨 다음 ONNX로 내보내 MQL5 프로그램 내에서 사용할 수 있습니다. 이는 두 가지 작업을 분리합니다: 모델 학습과 이를 매매 로직에 적용.

이는 개발자들의 작업을 심플하게 해 준 것입니다. MQL5로 신경망을 수동으로 다시 작성하거나 터미널 내부에 전체 학습 인프라를 구축할 필요가 없습니다. 외부 도구를 사용하여 모델을 준비할 수 있으며 MQL5는 해당 모델을 Expert Advisor 시스템, 지표 또는 연구 애플리케이션에 통합하는 데 집중할 수 있습니다.

이처럼 MQL 커뮤니티의 오랜 신경망에 대한 관심은 더욱 성숙한 기술적 형태로 발전했습니다. 신경망 기반 Expert Advisor는 2006년부터 2008년까지 열정적인 개발자들이 진행한 개별적인 실험이었지만 ONNX는 개발자들에게 학습된 모델을 MQL5에 통합하는 표준적인 방법을 제공했습니다.

AI 어이스턴트: 간단한 프롬프트에서 완벽한 에이전트로

AI 어시스턴트의 첫 번째 버전은 2023년 6월 14일 MetaEditor에 등장했습니다. 질문에서 코드로 이어지는 경로를 단축시켰습니다: 개발자는 스니펫을 강조 표시하고 설명을 요청한 다음 함수를 구현한 것이나 수정 사항을 받고 결과를 수동으로 프로그램에 통합할 수 있습니다. 이 기능은 유용했지만 기계적으로는 여전히 기존 채팅 형식의 진화된 형태였습니다: 질문, 텍스트 답변, 복사 및 확인 과정으로 이루어졌습니다.

2026년 7월 24일, MetaTrader 5 빌드 6060에서 플랫폼이 다른 모델로 전환되었습니다. 터미널과 MetaEditor는 모델 컨텍스트 프로토콜(MCP) 및 에이전트형 인공지능에 대한 내장 지원 기능을 갖추게 되었습니다. AI 어시스턴트는 더 이상 텍스트를 생성하는 것에만 국한되지 않습니다. 일련의 작업을 계획하고 플랫폼에서 제공하는 도구를 호출할 수 있습니다. 데이터를 읽고 파일을 찾고 수정하고 프로젝트를 구축하고 트레이딩 환경을 분석하고 구조화된 결과를 반환할 수 있습니다.

개발자들은 이러한 차이점을 명확하게 설명했습니다. 시대에 뒤떨어지고 있는 "질문-답변-복사" 모드 대신 복잡한 작업을 수행할 수 있는 완전한 기능을 갖춘 에이전트를 플랫폼에 도입했다는 것입니다. 이는 규모의 측면에서 상당한 변화를 의미합니다. 어시스턴트는 더 이상 단순히 MQL5 코드 스니펫을 생성하는 도구가 아닙니다: 개발자와 트레이더의 작업 과정에 참여하는 도구로 거듭나고 있습니다.

MetaTrader 5의 AI 어시스턴트 및 MCP 설정


MCP: AI와 MetaTrader를 연결하는 표준 브리지

모델 컨텍스트 프로토콜(MCP)은 AI 에이전트가 애플리케이션 데이터 및 함수에 연결하는 데 사용되는 개방형 표준입니다. MetaTrader의 경우 이는 터미널과 MetaEditor가 단순히 채팅창이 열려 있는 창이 아니라 전문적인 도구를 제공하는 도구라는 것을 의미합니다. 모델은 플랫폼에 대한 추상적인 설명을 받는 대신 특정 작업을 위한 제어된 프로그래밍 인터페이스를 받게 됩니다.

MetaEditor에서 에이전트는 작업 공간에 대한 정보를 검색하고 파일과 텍스트를 검색하고 소스 코드를 읽고 편집하고 새 프로그램을 만들고 구문을 검사하고 개별 파일을 컴파일하고 프로젝트를 빌드할 수 있습니다. 터미널에서는 시장 데이터, 열린 차트, 계정 매개변수, 포지션, 주문 및 거래 내역에 접근할 수 있습니다. 개별 MCP 서버는 분석을 위해 공개 시세, 뉴스 및 기타 데이터와 같은 외부 소스를 추가할 수 있습니다.

이 아키텍처는 양방향으로 작동합니다. 내장된 AI 어시스턴트는 MetaTrader 및 MetaEditor MCP 도구를 사용하지만 동일한 서버가 OpenAI Codex, Claude Code 및 기타 솔루션을 포함하여 프로토콜과 호환되는 외부 에이전트 시스템에 연결될 수도 있습니다. 따라서 사용자는 단일 인터페이스나 모델에 얽매이지 않습니다: 플랫폼은 도구를 제공하고, 에이전트는 주어진 작업에 따라 선택됩니다.

이 시스템은 OpenAI, Anthropic, Gemini, DeepSeek, Ollama 및 기타 호환 가능한 제공업체에 대한 사용자 고유의 API 키를 지원합니다. MQL5.community 계정으로 로그인하는 사용자의 경우 무료 MQL5 Lite 플랜이 자동으로 활성화됩니다. AI 어시스턴트 설정은 터미널과 MetaEditor 간에 동기화됩니다.

트레이딩 터미널의 AI 어시스턴트

MetaTrader 5에 내장된 어시스턴트는 터미널 자체의 컨텍스트 내에서 작동합니다. 이 도구는 특정 금융 상품의 현재 상황을 설명하고 과거 시세를 검토하고 종합시세에서 금융 상품을 확인하고 미결제 포지션 및 거래 내역을 분석하고 위험한 거래를 식별하고 보고서를 생성할 수 있습니다.

AI 어시스턴트가 MetaTrader 5의 거래 내역을 분석합니다.


네트워크 도구가 연결되면 에이전트는 단말기의 내부 데이터와 외부 정보를 결합할 수 있습니다. 발표에서 시연된 시나리오 중 하나는 어시스턴트가 특정 금융 상품에 대한 최신 뉴스를 검색하고 자료를 단계별로 검토하고 시세와 비교하는 모습을 보여주었습니다. 이는 더 이상 참조 소스에 대한 단일의 요청이 아니라 에이전트가 필요한 컨텍스트 요소를 스스로 수집하는 다단계 분석이라는 것을 보여줍니다.

트레이딩의 운영은 별도의 통제를 받습니다. 설정에서 해당 기능을 완전히 비활성화하거나 허용하거나 수동 확인을 요구하도록 설정할 수 있습니다. 네트워크 요청과 명령줄 작업은 별도로 제어될 수도 있습니다. 어시스턴트가 권장하는 것은 참고용일 뿐입니다: 매매와 관련한 최종 결정과 책임은 사용자에게 있습니다.

MetaEditor의 AI 어시스턴트

MetaEditor에서 에이전트는 자연어 설명으로부터 새로운 MQL5 프로그램을 생성하고 기존 프로젝트를 분석하고 오류를 찾고 수정 사항을 제안하고 코드를 리팩토링하고 코드의 가독성을 개선하고 복잡한 알고리즘을 설명할 수 있습니다. 첫 번째 버전과의 주요 차이점은 결과가 채팅 텍스트에만 국한되지 않는다는 것입니다: 에이전트는 파일을 생성하거나 수정하고 컴파일을 실행하고 결과를 확인할 수 있습니다.

AI 어시스턴트가 MetaEditor에서 MQL5 프로그램을 생성하고 컴파일합니다.


대규모 코드베이스에서 이는 특히 필수적입니다. 어시스턴트는 여러 파일에서 식별자의 정의와 사용 사례를 검색하고 관련된 인클루드 모듈을 읽고 프로젝트 구조를 고려하여 일련의 작업으로 작업을 수행할 수 있습니다. 요청 내역은 탐색기의 "채팅" 탭에 저장되므로 에이전트와의 협업은 일회성 코딩 제안이 아닌 프로젝트의 일부가 됩니다.

빌드 6060은 에디터 자체도 개선하여 이제 코드 블록을 접을 수 있고 선택한 식별자가 있는 모든 항목이 강조 표시됩니다. 이러한 기능들은 인공지능과 직접적인 관련은 없지만 대규모 프로젝트를 분석하고 유지 관리하는 동일한 시나리오를 도와줍니다.

코드 작성부터 "개발-테스트-개선" 주기까지

가장 중요한 개발 영역은 전략 테스터와 관련된 부분입니다. 공개 테스트 스레드의 답변은 타겟 자동화 워크플로를 설명합니다:

  1. 트레이더의 요구사항에 기반한 전략을 개발;
  2. 테스트 실행 및 매개변수 최적화;
  3. 보고서를 분석, 코드나 설정을 수정, 테스트를 다시 실행;
  4. 결과가 좋지 않을 경우 또는 만족스러운 결과가 나오면 중지;
  5. 최종 버전과 보고서를 사용자에게 제시.

이러한 시나리오는 "인공지능이 수익성 있는 전략을 찾아낼 것"이라는 예상과는 구별되어야 합니다. 에이전트는 엔지니어링 주기를 자동화하고 더 많은 가설을 검증할 수 있지만 과적합, 소스 데이터의 오류, 시장의 불안정성 또는 독립적인 검증의 필요성을 완전히 제거할 수는 없습니다. MCP의 진정한 가치는 다른 곳에 있습니다: 테스터, 컴파일러, 프로젝트 파일 및 최적화 결과를 단일의 제어된 일련의 작업으로 연결할 수 있다는 점입니다.

베타 테스트 기간 동안 이 워크플로는 점진적으로 확장되었으며 개별 고급 전략 테스터 도구가 계속 추가되고 구성되었습니다. 따라서 여기서 설명하는 완전 자율 사이클은 사용자의 개입 없이 모든 복잡한 작업을 수행할 수 있다는 보장이라기보다는 에이전트 시스템 개발의 방향으로 보아야 합니다.

보안: 에이전트에게 무제한 컴퓨터 접근 권한이 아닌 도구를 제공하는 것

에이전트가 수행할 수 있는 작업이 많을수록 명확한 경계를 설정하는 것이 더욱 중요 해집니다. 접근 권한은 명시적으로 권한울 부여하는 원칙에 기반합니다. MQL5 작업 디렉터리는 소스 파일 관련 작업에 사용할 수 있으며 테스터 및 로그 디렉터리는 읽기 전용 액세스로 제한할 수 있습니다. 사용자 프로필 접근 권한은 별도로 활성화됩니다. 매매, 네트워크 접속 및 명령줄 사용 또한 별도의 설정으로 제어됩니다.

PowerShell, Python 및 기타 외부 프로세스와 같은 명령줄 작업은 특히 강력하고 잠재적으로 위험하므로 인터페이스에 명확하게 표시되어 있으며 비활성화할 수 있습니다. 이 모드는 어시스턴트를 범용 에이전트로 전환시키지만 동시에 잠재적인 공격 표면을 넓히게 됩니다.

포럼에서 트레이더들과의 논의를 통해 개발자들은 백업과 버전 관리의 중요성을 강조하기도 했습니다. 에이전트 기반 개발에서 Git은 단순한 편의 기능이 아니라 근본적인 보안 메커니즘입니다. 변경 사항은 눈에 보이고 비교 가능하며 되돌릴 수 있어야 합니다. 여기서 새로운 AI 아키텍처는 MQL5 Algo Forge와 완벽하게 통합됩니다.

프로젝트 지침 및 기술

에이전트가 파일을 보는 것만으로는 충분하지 않습니다; 에이전트는 특정 코드베이스의 규칙도 이해해야 합니다. 이를 위해 MetaEditor 및 MetaTrader용 instruction 파일이 MQL5\Profiles\Agents 디렉터리에 사용됩니다. 사용자는 기본 지침을 자신의 지침으로 대체하여 코딩 스타일, 명명 규칙, 유효성 검사 절차 및 기타 영구적인 요구 사항을 정의할 수 있습니다.

이 파일들은 MQL5 영역 내에 위치해 있습니다. 따라서 Algo Forge내의 프로젝트와 함께 저장할 수 있습니다. 따라서 저장소는 소스 코드와 README 파일뿐만 아니라 AI에 대한 지침, 즉 프로젝트를 빌드하는 방법, 수정해서는 안 되는 파일, 실행할 테스트, 결과를 표시할 형식 등에 대한 정보도 포함할 수 있습니다.

포럼에서 개발자들은 개별 프로젝트 및 스킬에 대한 로컬 지침, 즉 에이전트에서 재사용할 수 있는 특수화된 절차도 도입했습니다. 이는 시스템이 진화하는 방향을 보여줍니다: 일반적인 채팅 기능에서 플랫폼의 도구와 특정 팀의 규칙을 알고 있는 맞춤형 디지털 프로젝트 참여자로 발전.

행렬과 벡터: 심도 있는 선형대수를 위한 MQL5 준비

머신러닝, 통계 및 수치해석 분야에서 클래스, 템플릿 및 외부 통합만으로는 충분하지 않습니다. 벡터, 행렬 및 기본적인 선형대수 연산을 편리하게 다룰 수 있는 방법 또한 필수적입니다.

2022년 1월 28일, MQL5는 행렬 및 벡터 유형을 도입했습니다. 이는 구문론 적인 관점 뿐만 아니라 여러 측면에서 중요한 변화였습니다. 행렬과 벡터는 일반적인 배열이 아니라 고유한 속성과 메서드를 가진 객체로 설계되었습니다.

벡터는 크기를 갖게 되었고 행렬은 행과 열의 차원을 갖게 되었으며 이를 중심으로 별도의 메서드들이 개발되기 시작했습니다. 개발자들은 행렬 생성, 전치, 곱셈, 분해 계산, 연립방정식 풀이, 노름, 랭크 및 기타 수치적 특성 작업과 같은 계산 코드를 작성하는 더욱 자연스러운 방식을 얻게 되었습니다.

이 시점에 이르러 MQL5는 한때 매 틱마다 간단한 Expert Advisor 로직으로 시작했던 언어와는 확연히 달라져 있었습니다. 이제 이 언어에는 수학적 모델을 위한 구조가 포함되었으며 플랫폼은 Python, ONNX, OpenCL 및 클라우드 최적화와 연결될 수 있게 된 것이었습니다.

하지만 진정한 수를 다루는 기반을 위해서는 단순히 편리한 행렬 유형 이상의 것이 필요합니다. 복잡한 방법을 구현할 때 신뢰할 수 있는 검증된 선형 대수 라이브러리가 필요했습니다. 그래서 이후 단계는 OpenBLAS를 통합하는 것이었습니다.

이것이 다음 파트의 주제입니다.


왜 OpenBLAS였을까요?

MQL5에 행렬, 벡터, 복소수, ONNX, 머신러닝 시나리오가 등장하면서 다음과 같은 질문은 불가피해졌습니다: 이후 어떤 수학적 기초가 필요할까?

개별 메서드를 수동으로 작성할 수 있습니다. 행렬에 대한 몇 가지 빠른 연산을 추가할 수 있습니다. 곱셈, 분해, 연립방정식 풀이에만 집중할 수도 있습니다. 하지만 이러한 접근 방식은 개발, 테스트 및 유지 관리가 어려운 서로 다른 함수들의 집합으로 이어지게 되는 경우가 많습니다.

MetaTrader 5와 같은 플랫폼에는 "단순히 빠른 라이브러리" 이상의 것이 필요했습니다. 선형대수학의 표준적인 기초가 필요했습니다: MQL5 메서드를 점진적으로 확장하는 데 적합하고 폭넓고 검증되었으며 이식성이 뛰어난.

OpenBLAS를 선택하기 전에 다른 옵션들도 고려되었습니다: ALGLIB, LIBXSMM, Eigen 및 oneMKL. 각각 장점이 있지만 MQL5의 목표는 단순히 단일 연산 속도를 높이거나 특정 알고리즘 클래스를 지원하는 것보다 더 큰 것이었습니다.

ALGLIB은 다재다능한 수치 계산 도구 모음으로 유명합니다: 최적화, 근사, 선형 대수, 통계 및 기타 알고리즘 등. 하지만 플랫폼 내부의 기반적인 계층 역할을 하는 데 있어서는 피처 세트 뿐만 아니라 라이선스 모델, 라이브러리 에디션, 배포 조건, 통합 예측 가능성 및 장기적인 지원도 중요합니다.

LIBXSMM은 특히 작은 행렬과 딥러닝 기본 요소를 사용하는 문제에서 특수한 밀집 및 희소 행렬 연산에 탁월합니다. 그렇기 때문에 유용한 도구이긴 하지만 활용 범위가 제한적입니다. 특정 유형의 연산에서 최대한의 효과를 얻어야 하는 상황에서는 효과적이지만 광범위한 선형 대수 메서드를 위한 LAPACK 기반의 기초를 대체하는 것은 아닙니다.

Eigen은 행렬, 벡터, 수치 해석 솔버 및 관련 알고리즘을 위한 훌륭한 C++ 템플릿 라이브러리입니다. 하지만 Eigen은 근본적으로 C++ 기반 접근 방식입니다. 헤더 파일만으로 구성된 라이브러리, 템플릿, 표현식 템플릿, 그리고 C++ 코드와의 긴밀한 통합을 특징으로 합니다. MQL5 플랫폼의 내부적인 통합을 위해서는 다른 관점이 필요했습니다: matrix, matrixf, matrixc, matrixcf 메서드를 구현하기 위한 기반이 될 수 있는 안정적인 연산 계층을 구축하는 것이었습니다.

oneMKL도 고려 대상이었습니다. 이는 오랜 역사와 강력한 최적화 기능, 그리고 광범위한 기능을 갖춘 강력한 수학 라이브러리입니다. 하지만 플랫폼에서 중요한 것은 속도만이 아닙니다. 주요 고려 사항에는 이식성, 벤더 종속성 정도, 유통 조건, 통합 제어 권한, 다양한 사용자 구성에서의 동작 예측 가능성 등이 있었습니다.

OpenBLAS가 가장 적합한 절충안임이 분명했습니다. 이 라이브러리는 오픈 소스이며 기본 선형 대수 연산에서 뛰어난 성능을 제공하는 최적화된 BLAS 라이브러리로 더 복잡한 메서드를 구현하기 위한 기반이 됩니다. MQL5의 핵심 요소는 바로 LAPACK 작업에 대한 포괄적인 지원이었습니다: 단순히 빠른 연산 하나만 제공하는 것이 아니라 특이값 분해(SVD), 고유값 계산, 선형 방정식 시스템 풀이, 최소 제곱 문제 해결, 인수분해, 솔루션 정제 등 광범위한 기반을 갖추고 있었습니다.

다시 말해 OpenBLAS를 선택한 것은 장식적으로 한 것이 아니라 엔지니어링 적인 결정이었습니다. 목표는 MQL5를 위한 수학적 방법론을 체계적으로 개발할 수 있는 토대를 마련하는 것이었습니다. 기본적인 행렬 연산부터 점점 더 복잡해지는 수치 알고리즘까지 아우르는 것이 목표였습니다.

MQL5의 OpenBLAS: 행렬부터 완벽한 수치해석 기초까지

2024년 9월 27일, MetaTrader 5 빌드 4570에 네이티브 OpenBLAS가 통합되었습니다. 동시에 MQL5에는 부동 소수점 데이터를 사용한 복소수 계산을 지원하는 새로운 데이터 유형이 추가되었습니다.

  • complexf — float data를 사용하는 복소수;
  • vectorcf — complexf 유형의 요소를 포함하는 벡터;
  • matrixcf — complexf 유형의 요소를 포함하는 행렬.

언뜻 보면 이는 기술적인 세부 사항처럼 보일 수 있습니다. 실제로 이는 미래의 MQL5의 수학적 기능에 있어 중요한 것입니다. MQL5에는 이미 행렬, 벡터, 복소수 및 행렬 메서드가 있었습니다. 하지만 OpenBLAS는 더 완전한 데이터 유형 세트를 필요로 했습니다: 실수 및 복소수 데이터, double 및 float, 그리고 다양한 형태의 행렬과 벡터 등.

이에 따라 MQL5는 단순히 "SVD 방법"메서드"나 고유값 메서드" 이상의 이점을 얻게 됩니다. 이를 통해 다양한 데이터 유형과 다양한 수치 문제에 대한 알고리즘 계열을 구축할 수 있는 기반을 마련할 수 있는 것입니다.

MQL5에서 처음으로 구현된 OpenBLAS 메서드는 특이값 분해 및 고유값 계산과 관련이 있었습니다. 이것은 자연스러운 출발점이었습니다. 특이값 분해(SVD)와 고유값 문제는 수많은 실제 알고리즘의 기초가 됩니다: 안정성 분석 및 차원 축소부터 머신 러닝, 통계, 신호 처리 및 모델 구축에 이르기까지.

SVD에는 여러 알고리즘 변형이 추가되었습니다: 분할 정복, QR, 피벗팅을 사용한 QR, 이분법, 고수준 Jacobi, 저수준 Jacobi 및 이중대각 행렬을 위한 메서드 등. 이는 수치 해석 메서드가 모든 상황에 대해 단 하나의 "최적"인 해를 갖는 경우가 드물기 때문에 중요합니다. 빠른 메서드는 조건이 좋지 않은 데이터에서는 정확도가 떨어질 수 있고 보다 안정적인 접근 방식은 계산 비용이 더 많이 들 수 있습니다. 플랫폼은 개발자에게 선택권을 제공해야 합니다.

고유값 메서드는 다른 유형의 문제를 다룹니다. 이러한 메서드들은 정사각행렬, 대칭행렬 및 에르미트행렬, 시스템 안정성, 스펙트럼 특성, 그리고 통계, 최적화 및 모델링에 사용되는 많은 계산 절차를 분석하는 데 사용됩니다.

MQL5 문서의 OpenBLAS 섹션은 그 이후로 계속 확장되어 왔습니다. 이것은 중요한 지점입니다. OpenBLAS 통합은 일회성 출시가 아니라 지속적인 개발 방향입니다. 행렬 및 벡터 메서드는 matrix, matrixf, matrixc, matrixcf 등 다양한 행렬 유형에 적용 가능한 기능을 점차 더 많이 갖추게 되었습니다.

다음 논리적 단계는 솔루션 개선, 오차 추정, 수치적 안정성 향상 및 추가적인 인수분해 방법을 연구하는 것입니다. 이것이 바로 탄탄한 수학적 기초를 쌓는 방법입니다: "아무것도 없는" 상태에서 "모든 것"으로 바로 넘어가는 것이 아니라 점점 더 많은 표준 LAPACK 문제를 차근차근 다뤄나아가는 것입니다.

MQL 개발자에게 중요한 이유

보통의 트레이더들에게 OpenBLAS는 다소 생소한 개념으로 보일 수 있습니다: 수학자, 엔지니어, 과학 컴퓨팅 전문가들을 위한 라이브러리처럼 느껴질 수 있습니다. 하지만 MQL 생태계 내에서 OpenBLAS의 등장은 매우 실질적인 의미를 지닙니다.

개발자는 MQL5에서 직접 더 복잡한 모델을 구축할 수 있습니다. 단순히 지표를 호출하고, 두 값을 비교하고, 주문을 보내는 대신, 배열, 벡터, 행렬 형태의 데이터를 사용하여 작업할 수 있습니다. 트레이더는 분해를 계산하고 연립방정식을 풀고 안정성을 평가하고 이전에는 파이썬, C++, 또는 타사 라이브러리로 옮겨야 했던 메서드들을 사용할 수 있습니다.

이는 파이썬, ONNX 또는 외부 도구를 쓸모없게 만드는 것이 아닙니다. 오히려 서로를 더욱 효과적으로 보완하기 시작했습니다. 파이썬은 연구, 모델 학습 및 데이터 준비에 매우 적합합니다. ONNX는 학습된 모델을 터미널로 가져오는 데 편리합니다. OpenBLAS는 MQL5에 플랫폼 내에서 계산을 수행해야 하는 경우에 견고한 수치적 기반을 제공합니다.

결과적으로 MetaTrader 5는 사용자가 Expert Advisor로 매매하고 테스트할 뿐만 아니라 완전한 컴퓨팅 워크플로우를 구축할 수 있는 환경으로 점차 발전하고 있습니다.

  • 시장 데이터 검색;
  • 피처와 행렬을 준비;
  • ONNX 모델 사용;
  • 행렬/벡터를 사용하여 수치 계산을 수행;
  • 전략 테스터에서 아이디어 테스트;
  • 최적화 작업을 병렬화;
  • 결과를 Expert Advisor, 지표 또는 서비스에 통합;

따라서 OpenBLAS는 별도의 것이 아니며 앞서 설명한 단계들과 함께 고려되어야 합니다: MQL5, MetaEditor, 파이썬, ONNX, 행렬, 벡터 및 AI 어시스턴트.

에이전트형 AI 어이스턴트, MCP 및 OpenBLAS: 단일 엔지니어링 환경의 세 가지 계층

언뜻 보면 에이전트형 AI 어시스턴트, MCP, 그리고 OpenBLAS는 플랫폼의 서로 다른 부분에 속해 있는 것처럼 보입니다. AI 어시스턴트는 사용자의 의도를 처리하고 MCP는 모델을 도구에 연결하며 OpenBLAS는 수치 알고리즘을 실행합니다. 하지만 이들을 함께 사용하면 일관된 계산 워크플로우를 만듭니다.

AI 어시스턴트는 요청을 이해하고 계획을 수립하고 실행 방안을 선택하고 결과를 해석하는 등 작업을 구체화하고 세분화하는 역할을 담당합니다. MCP는 에이전트에게 터미널, MetaEditor, 프로젝트, 시장, 거래 내역 및 외부 데이터에 대한 제어된 접근 권한을 제공합니다. OpenBLAS, 행렬/벡터 연산, ONNX 및 기타 기술은 MQL5 프로그램이 모델 자체를 구현하는 데 필요한 계산 능력을 제공합니다.

과거에 개발자들은 편집기, 도움말 문서, 포럼, 전략 테스터, 파이썬 노트북, 외부 라이브러리 사이를 수동으로 전환하며 작업해야 했습니다. 이제 이러한 전환 중 일부는 단일 작업이 되었다고 할수 있습니다: 예를 들어 프로젝트 검토, 코드 수정, 프로그램 컴파일, 데이터 준비, 분석 실행 및 보고서 생성 등. 에이전트는 컴파일러, 전략 테스터 또는 수학 라이브러리를 대체하는 것이 아닙니다 — 이들을 연결해주는 역할을 합니다.

그렇기 때문에 MCP는 언어 모델 자체 못지않게 중요합니다. 특화된 도구가 없으면 아무리 강력한 모델이라도 그저 대화 상대에 불과합니다. MCP를 사용하면 사용자가 설정한 권한 범위 내에서 플랫폼 내에서 작업을 수행할 수 있는 능력이 생기게 되는 것입니다.

Algo Forge: 코드가 프로젝트가 되다

현대적인 엔지니어링 환경에서는 진지한 개발 작업에 필수적인 또 다른 요소가 필요합니다. 바로 버전 관리, 변경 이력, 협업, 그리고 프로젝트를 살아있는 저장소로 배포하는 것입니다. MQL 생태계 내에서 MQL5 Algo Forge는 점차 이러한 역할을 맡아왔습니다.

Algo Forge의 전신은 MQL5 Storage로 MetaEditor에 내장된 MQL4/MQL5 소스 코드용 온라인 저장소였는데 이미 중요한 문제를 해결하고 있었습니다. 개발자들은 안전한 저장소에 코드를 저장하고 변경 내역을 확인하고 이전 버전으로 되돌리고 편집기에서 직접 팀 프로젝트를 진행할 수 있었습니다.

하지만 기존 저장소는 Subversion을 기반으로 했으며 더 이상 사용되지 않게 되었습니다. 이 방식의 논리는 소스 코드 저장 및 동기화에는 효과적이었지만 현대 개발 환경에는 더 많은 것이 필요합니다: 로컬 히스토리, 빠른 작업 처리, 실험을 위한 브랜치, 변경 사항 병합, 오프라인 작업, 그리고 단일 프로젝트에서 여러 개발자 간의 투명한 협업 등이 그것입니다.

2025년 6월 6일, MetaTrader 5 빌드 5100은 완전히 재설계된 소스 코드 저장소를 도입했습니다: MQL5 Storage는 Subversion에서 Git으로 전환되었으며 동시에 새로운 온라인 프로젝트 관리 포털인 MQL5 Algo Forge가 출시되었습니다.

이는 중요한 전환점입니다. Code Base가 "바로 사용할 수 있는 예제를 어디서 찾을 수 있나요?"라는 질문에 답했다면 Algo Forge는 이와는 다른 질문에 답합니다. "계속 변화하는 프로젝트를 어떻게 관리해야 할까요?" 복잡한 Expert Advisor 또는 라이브러리는 더 이상 단일 MQ5 파일로만 구성되지 않습니다. 여기에는 파일, 테스트 구성, 매개변수 세트, 모델, 문서, README, 지원 스크립트, 실험 기록 및 여러 개발 분기가 포함될 수 있습니다.

Git은 이러한 종류의 코드를 다루는 방식을 바꿔놓습니다. 개발자는 새로운 아이디어를 위해 별도의 브랜치를 생성하고 전략 테스터에서 테스트하고 변경 사항을 비교하고 이전 상태로 되돌리고 성공적인 실험을 메인 버전에 병합하고 결과를 클라우드 저장소에 푸시할 수 있습니다. 프로젝트 이력은 더 이상 작성자의 기억에 의지하거나 "final_new_2"와 같은 이름의 폴더에 보관되지 않습니다. 그것은 IDE 자체의 일부가 됩니다.

Algo Forge는 여기에 소셜 기능을 추가합니다. 개발자는 공개 프로젝트를 탐색하고 저자를 팔로우하고 팀을 만들고 프로젝트를 포크하고 저장소를 복제하고 파일 커밋 및 브랜치를 보고 문서를 작성하고 프로젝트를 온라인으로 공유할 수 있습니다. MQL 생태계에서 이는 개별 소스 코드 파일을 공유하는 방식에서 벗어나 본격적인 협업적인 개발 문화로 전환하는 것을 의미합니다.

이는 특히 기고글나 교육 자료에 있어서 매우 중요합니다. 기고글에 포함된 코드는 압축 파일이나 첨부 파일에만 존재해서는 안 됩니다. Algo Forge에서 명확한 구조와 README.md 파일을 갖춘 프로젝트로 설정될 수 있으며 변경 이력을 보존하여 독자에게 텍스트뿐 아니라 실제로 작동하는 진입점을 제공합니다. 기고글에서는 개념을 설명하고 저장소에서는 그 개념이 실제로 어떻게 작동하는지를 보여줍니다.

이로써 MetaEditor는 다시 한번 그 역할을 확장하고 있습니다. MetaEditor는 원래 코드를 작성하고 컴파일하는 장소로 시작되었습니다. 그 다음으로는 문서화, 프로젝트, 디버깅, 프로파일링, AI 어시스턴트, 그리고 통합 작업이 있었습니다. 이제 완전한 Git 워크플로의 일부가 되었습니다: 히스토리, 브랜치, 커밋, 동기화 및 협업 등.

이러한 관점에서 Algo Forge는 별도의 "사이드 서비스"가 아니라 동일한 개발 라인의 연장선상에 있는 것입니다. MQL 프로그램은 단일 차트에 대한 간단한 Expert Advisor에서 시작하여 버전 관리, 토론, 팀 개발, 게시 및 수년간 유지 관리가 가능한 엔지니어링 프로젝트로 발전해 왔습니다.

Expert Advisors부터 엔지니어링 환경으로

전체적인 역사를 살펴보면 MQL의 발전 과정은 놀라울 정도로 일관성이 있는 것으로 보입니다.

본격적인 프로그래밍 언어가 존재하기 전에도 Expert Advisor가 먼저 등장했습니다. 그 후 첫 번째 MQL이 등장했습니다. 간단한 설명 페이지, 몇 가지 변수, 그리고 터미널에서 매매 전략을 직접 실행할 수 있는 기능이 포함되어 있었습니다. MQL II는 반복문, 배열, 데이터 유형 및 수학 함수를 도입했습니다. 사용자 맞춤 지표는 Expert Advisor를 넘어 언어의 범위를 확장했습니다.

MetaTrader 4는 터미널, MQL4, MetaEditor, 문서, Expert Advisor, 지표, 스크립트, 라이브러리 및 테스트 기능을 모두 합쳐 하나의 대중 시장 모델로 통합했습니다. MQL4.COM에 커뮤니티, 코드베이스 및 기고글이 추가되었습니다. 챔피언십 대회는 자동화된 트레이딩이 공개적이고 경쟁적이며 대규모로 이루어질 수 있음을 입증했습니다.

MetaTrader 5와 MQL5는 복잡성의 한계를 높였습니다. 객체 지향 프로그래밍, 네이티브 코드, 표준 라이브러리, 새로운 트레이딩 모델, 향상된 전략 테스터, 클라우드 최적화 및 MQL5.community는 이 언어를 더욱 엄격한 엔지니어링 도구로 변화시켰습니다.

MQL5는 MQL4의 발전에 영향을 미쳤습니다: 통합 컴파일러, 통합 MetaEditor, 새로운 언어, 프로그램 보호 기능, 그리고 애플리케이션 마켓이 그 예입니다. 기존의 대중 시장의 제품이 새로운 기술적 기반을 갖추게 된 것이었습니다.

MQL5는 이후 전통적인 Expert Advisor의 범주를 넘어서기 시작했습니다. OpenCL, 사용자 맞춤형 심볼, .NET, 서비스, 네트워크 함수, SQLite, DirectX, Python, ONNX, 행렬 및 벡터. 이 모든 것들이 MQL 프로그램의 가능성을 점차 넓혀주었습니다.

에이전트형 AI 어시스턴트, 모델 컨텍스트 프로토콜(MCP), 그리고 OpenBLAS는 이 이야기에 우연히 추가된 요소들이 아닙니다. 이는 2001년에 이미 드러났던 원칙, 즉 플랫폼 내에서 사용자에게 더 많은 자율성을 부여하는 원칙을 기반으로 하는 논리적인 연장선상에 있습니다.

당시 자율성이란 Expert Advisor 시스템을 작성하고 인간의 개입 없이 매매를 전송할 수 있는 능력을 의미했습니다. 오늘날 이는 훨씬 더 많은 것을 의미합니다. 자연어로 에이전트에게 작업을 부여하고 MCP를 통해 도구에 대한 제어된 액세스 권한을 부여하고 코드를 작성하고 구축하고 외부 머신 러닝 모델을 사용하고 수치 선형 대수를 수행하고 과거 데이터로 시스템을 테스트하고 MetaTrader 인프라에서 시스템을 실행하는 것까지 포함합니다.

버전별 역사가 아니라 아이디어의 역사

MQL의 역사를 날짜, 빌드 번호, 함수 이름의 긴 목록으로 나타내는 것은 쉽습니다. 하지만 그건 핵심을 놓치는 겁니다.

이 이야기는 한 구문이 다른 구문을 대체한 것에 대한 이야기가 아닙니다. 또한 이 이야기는 터미널에 메뉴 항목이 점차 추가되는 과정에 대한 이야기도 아닙니다.

이는 트레이딩 플랫폼이 개발자의 작업을 점차 플랫폼 내부에 통합해 나아가는 과정을 그린 이야기입니다. 먼저 Expert Advisor 실행이 시작되었습니다. 그 다음은 언어였습니다. 그 다음은 에디터였습니다. 그 다음으로는 문서화, 테스트, 코드베이스, 기고글, 챔피언십, 마켓, 클라우드 최적화, 외부 통합, 머신 러닝, AI 어시스턴트, 수치 선형 대수, 그리고 Algo Forge를 통한 프로젝트 관리였습니다.

이러한 점에서 최신 MetaEditor는 단순히 예전의 Expert Advisor를 편집하던 작업창의 후손이 아닙니다. MQL 생태계 전체, 즉 언어, 문서, 프로젝트, 디버깅, 프로파일링, 모델, 수학적 방법, 에이전트 지원, MCP 도구 및 협업 개발을 위한 Git 인프라를 통합하는 지점입니다.

그렇기 때문에 최초의 Expert Advisor 시스템에서 에이전트형 AI 어시스턴트, MCP, 그리고 OpenBLAS에 이르기까지의 여정은 개별적인 사건들의 집합이 아니라 하나의 연속적인 발전 과정으로 보이는 것입니다. MetaQuotes는 처음부터 단순히 시장을 관찰하는 터미널이 아니라 트레이딩 아이디어가 프로그램으로 구현되고 프로그램이 관리 가능한 엔지니어링 프로세스로 발전하는 환경을 구축해 왔습니다.

그러한 아이디어가 MQL의 발전을 계속해서 이끌고 있는 것입니다.

MetaQuotes 소프트웨어 사를 통해 러시아어가 번역됨.
원본 기고글: https://www.mql5.com/ru/articles/22768

최근 코멘트 | 토론으로 가기 (11)
Ryan L Johnson
Ryan L Johnson | 10 8월 2026 에서 21:29
fxsaber #:
그런데 도대체 왜 2001년 버전의 마켓워치에는 시간대가 표시되는 걸까요?!
아마도 대부분의 시간대 변환이 (일광 절약 시간제(DST)로 인해) 궁극적으로 GMT를 기준으로 하기 때문일 것이며, 두 개의 명확한 시간대를 미리 알지 못한 채 시간을 변환하는 것은 어떤 사람들에게는 까다로울 수 있기 때문일 것입니다.
Aleksandr Slavskii
Aleksandr Slavskii | 11 8월 2026 에서 02:21
글이 잘 쓰여 있어서 읽기 편하고 흥미로웠습니다.
Wanateki Solutions LTD
Kelvin Muturi Muigua | 14 8월 2026 에서 14:53
정말 영감을 주는 기사입니다. MetaQuotes 창립자들과 팀, 그리고 MQL 커뮤니티와 개발자들이 함께 걸어온 긴 여정과 비전, 그리고 현명한 노력이 어우러져 진정으로 놀라운 성과를 계속해서 만들어내고 있습니다. MQL의 영원한 번영을 기원합니다.
Vladimir Perervenko
Vladimir Perervenko | 14 8월 2026 에서 18:35

네. 떠올려 보니 흥미로웠네요. 사람의 기억이란 참 묘한 법이죠. 좋은 일은 금방 잊혀지지만, 나쁜 일은 오랫동안 기억에 남곤 하죠. 실제 자금을 걸고 600번째 버전으로 전환하던 그 스트레스 가득했던 과정은 오랫동안 기억에 남았습니다. 게다가 당시 R 언어 통합에 대한 기대가 실현되지 않았던 점도, 솔직히 말해 좀 속상했죠. 물론 지금은 시간이 지나면서 커뮤니티, 터미널, 언어 자체의 발전과 비교하면 사소한 일처럼 느껴집니다.

도입된 AI에 대한 초기 반응과 질문들을 보면 묘한 인상이 듭니다. 제안된 기능들이 현재의 요구를 훨씬 앞서가고 있는 것 같습니다.

행운을 빕니다

Zhan Jin Yin
Zhan Jin Yin | 14 8월 2026 에서 20:46
정말 여운이 남는군요. 그토록 자주 밤을 새우며 야근하던 시절의 추억이 눈앞을 스쳐 지나가는 듯합니다.
새로운 기능: MQL5의 커스텀 인디케이터 새로운 기능: MQL5의 커스텀 인디케이터
MetaTrader5와 MQL5의 새로운 기능 전체를 나열하지는 않겠습니다. 종류도 많은 데다가, 별도의 설명이 필요한 기능들도 있거든요. 객체 지향 프로그래밍을 이용한 코드 작성법 또한 다음에 알아보도록 하겠습니다. 다른 기능들과 함께 설명하기에는 조금 어려운 이야기일 수 있으니까요. 이 글에서는 인디케이터와 인디케이터의 구조, 드로잉 타입과 프로그래밍 디테일을 MQL4와 비교해 볼게요. 초보자 분들께 많은 도움이 되면 좋겠고 기존에 사용하시던 개발자 분들도 뭔가 새로운 걸 얻어 가실 수 있길 바랍니다.
MetaTrader 5: 전략에 맞게 시장을 구축하기 — 렌코/레인지/볼륨, 합성 상품 그리고 사용자 맞춤형 심볼 스트레스 테스트 MetaTrader 5: 전략에 맞게 시장을 구축하기 — 렌코/레인지/볼륨, 합성 상품 그리고 사용자 맞춤형 심볼 스트레스 테스트
이 글은 MetaTrader 5 사용자 맞춤형 심볼의 API를 활용하여 터미널을 시간 독립적인 차트인 렌코 차트, 레인지 차트, 동일 볼륨 차트를 생성하고 합성 금융 상품을 구성하는 데이터 생성기로 변환하는 방법을 보여줍니다. 우리는 플랫폼의 한계를 고려하며 스트레스 테스트(스프레드의 확대, 손절매 수준 변경)를 하기 위한 틱 집계 및 히스토리 수정을 분석할 것입니다. 또한 CiCustomSymbol을 어떻게 다루는지 알아보고 CustomOrder 래퍼를 통해 미리 만들어진 코드로 실제 심볼로 주문을 라우팅하는 방법을 알아볼 것입니다.
새 MetaTrader 와 MQL5를 소개해드립니다 새 MetaTrader 와 MQL5를 소개해드립니다
본 문서는 MetaTrader5의 간략 리뷰입니다. 짧은 시간 내에 시스템의 모든 세부 사항을 안내해드리기는 어렵습니다 - 테스트는 2009.09.09에 시작되었습니다. 이는 상징적인 일자로, 전 이것이 행운의 숫자가 될거라 믿어 의심치않습니다. 제가 새 MetaTrader 5 터미널과 MQL5 베타버전을 받은지 며칠이 지났습니다. 아직 모든 기능을 사용해본 것은 아니지만, 벌써부터 감명깊네요.
MQL5에서의 이벤트 기반 아키텍처: Expert Advisor를 완전한 기능을 갖춘 트레이딩 시스템으로 전환하는 방법 MQL5에서의 이벤트 기반 아키텍처: Expert Advisor를 완전한 기능을 갖춘 트레이딩 시스템으로 전환하는 방법
이 글은 MQL5의 이벤트 기반 아키텍처에 대해 중점적으로 다룹니다. 구체적으로는 단일 구조의 OnTick 모델에서 분산 처리로 전환하는 과정에 대해 설명합니다. 미리 정의된 이벤트와 사용자 정의 이벤트, 서비스 및 프로그램 간의 메시징은 물론 아키텍처적인 오류에 대해서도 살펴보겠습니다. 예시는 지표와 EA 간의 상호 작용을 어떻게 구성하여 부하를 줄이고 가독성을 향상시키며 유지 관리를 간소화하는지 보여줄 것입니다.