![손쉽게 트레이딩 로봇 만들기](https://c.mql5.com/2/58/0_3_600x314.jpg)
손쉽게 트레이딩 로봇 만들기
트레이딩 로봇을 위한 트레이딩 시스템 구축
시장 거래에는 많은 위험이 따릅니다. 그 중에서도 가장 큰 위험은 잘못된 결정을 내리는 것이죠. 투자자라면 누구나 언제든지 작동 가능하고 두려움, 탐욕, 조바심 같은 우리 인간의 약점을 갖지 않는 자신만의 트레이딩 로봇을 꿈꿉니다.
![손쉽게 트레이딩 로봇 만들기 손쉽게 트레이딩 로봇 만들기](https://c.mql5.com/2/4/sign2.jpg)
초보 투자자들은 알고리즘 형태의 명확하고 엄격한 매매 시스템을 만들어 반복되는 작업에서 완전히 벗어나고 싶어 합니다. 과연 가능한 일일까요?
트레이딩 시스템은 시장 입문에 꼭 필요합니다. 물론 수익성이 보장되는 트레이딩 시스템이어야겠죠. 초보 투자자들은 대개 엄청난 양의 이해하기 어려운 정보를 접하고는 당황합니다. 그럴 경우 관련 도서나 투자자 포럼이 도움이 될 수 있는데요.
안타깝게도 모든 저자가 성공적인 투자자는 아니며, 모든 성공적인 투자자가 저자가 되는 것도 아니지요. 상당수의 온라인 자료들은 자료 제공자에게 수익을 가져다 주도록 되어 있습니다. 시장 전망에 대한 예측을 제공하고 트레이딩 시스템에 대해 가르쳐 주는 편이 직접 투자에 참여하는 것보다 훨씬 쉬우니까요.
투자자라면 트레이딩 시스템 제작 과정의 각 단계를 직접 경험해야 합니다. 그런 말이 있죠. 어떤 트레이딩 시스템을 사용하건 중요한 건 반드시 정해진 시스템을 따르는 거라고요. 정해진 시스템을 따르지 않는 투자는 결과가 뻔한 도박일 뿐입니다.
트레이딩 로봇과 외환
외환 시장은 유동성이 매우 크다고 알려져 있죠. 다른 여러 시장과는 달리 24시간 내내 거래가 가능하기도 하고요. 게다가 다양한 거래 상품을 제공하기 때문에 많은 투자자들이 외환 시장 전용 트레이딩 로봇을 만듭니다.
회의론자들은 각 통화쌍 사이의 높은 상관관계가 시장 내 매우 낮은 유동성을 유발한다고 주장합니다. 반면 각 통화쌍이 고유의 특징을 따르며 낮은 유동성은 높은 레버리지로 커버가 가능하다고 반박하는 사람들도 있습니다.
좌우간 외환 거래에 있어 트레이딩 로봇은 아주 매력적인 옵션이며 실제로 자동 매매 시스템을 이용하는 대부분의 투자자들이 통화쌍을 이용해 거래 기술을 연마합니다.
MetaTrader4 와 MetaTrader5는 간편한 자동 매매 시스템 개발을 위해 고안되었으나 수동 매매에도 매우 편리한 인터페이스입니다.
트레이딩 로봇 구축, 어떻게 시작할까?
자동 매매 시스템 구축에는 여러가지 접근법이 있습니다. 가장 잘 알려진 몇 가지만 소개해 볼까요?
첫 번째 접근법은 수학을 기반으로 합니다. 개발자가 여러 변수를 고려하는 일종의 방정식을 세우는 것이죠. 이러한 접근법의 바탕에는 역사적 데이터로 확인 가능한 특정 모델에 따라 가격 변동이 일어날 것이라는 확고한 믿음이 있습니다.
그러나 이 접근법을 사용하는 사람들의 대다수는 수학에 정통할 뿐이지 정작 시장에 대해서는 무지하거나 관심이 없습니다. 그들에게 시장은 매우 추상적인 개념이자 그저 고도의 지능이 요구되는 게임일 뿐인 것입니다. 그렇기 때문에 첫 번째 접근법을 적용하는 경우 대개 수년에 걸친 연구와 개발이 이루어지지만 실질적인 결과물로서의 자동 매매 시스템은 뒷전이 됩니다.
두 번째 접근법은 시장 법칙을 이용합니다. 이 접근법을 이용하면 여러가지 기술분석이 가능하기 때문에 가격의 상승 또는 하락을 이해하고자 혼자 애쓰지 않아도 됩니다. 특별한 수학적 지식이 필요 없으며 시장의 원동력을 추정할 필요도 없는 것이 장점이죠.
따라서 특히 투자에 대해 공부할 때 사용하기에 가장 명확하고 편리한 방법입니다. 세계적으로 잘 알려진 투자자들 사이에서 가장 인기있는 방법이기도 하죠. 반면 단점도 있는데요. 바로 필요한 모든 심볼을 끊임없이 추적해야 한다는 것입니다.
이로 인해 투자자는 머지않아 매매 과정의 자동화를 고려하게 되는데, 이때 아주 큰 문제가 발생합니다. 거래 규칙을 알고리즘으로 옮기기가 매우 복잡하기 때문입니다. 그렇기 때문에 트레이딩 로봇을 주문하고 싶어도 규칙을 제대로 설명하지 못해 프로그래머와의 상호 이해가 어려워지는 경우도 있습니다.
세 번째 접근법은 특수 소프트웨어와 수학 라이브러리에서 널리 제공되는 도구를 이용해 신경망을 기반으로 하는 일종의 '블랙박스'를 만드는 것입니다. 모든 것이 시각적으로 이루어지는 인공지능 자동 매매 시스템의 구축은 고도의 수학적 능력이나 많은 프로그래밍 경험이 없는 초보 투자자들에게도 매우 흥미로운 도전 과제가 될 것입니다.
이때 투자자는 기본적인 기술적 지표에 대한 이해와 신경망 관련 패키지 사용 경험이 있어야 하고, 필요한 가격 정보 또한 준비할 줄 알아야 합니다. 이 접근법의 가장 큰 문제점은 신경망을 이용한 특수 도구를 통해 만들어진 트레이딩 로봇은 말 그대로 '블랙박스'라는 것입니다. 즉, 투자자는 트레이딩 로봇의 작동 원리를 모를 뿐더러 어떤 시장 국면에서 문제가 발생할지를 예측할 수 없습니다.
프로그래머들은 종종 네 번째 접근법을 택하기도 하는데요. 바로 수동 매매를 생략하고 애초부터 트레이딩 로봇부터 제작하는 것입니다. 뭣 하러 수동 매매를 하냐는 것이죠. 몇 달이면 로봇을 만들어 그간의 노력에 대한 보상을 받기 시작할 수 있는데 말입니다.
그러나 잃는 것이 없으면 얻는 것도 없는 법입니다. 대부분의 경우, 프로그래머들은 곧바로 트레이딩 로봇을 구축하지 않고 먼저 필요한 인프라스트럭쳐를 자신이 사용하기 편한 언어로 구현해 둡니다. 여기에는 가격 정보 획득 및 처리, 각종 차트 및 지표의 시각화 그리고 역사적 데이터 바탕의 맞춤 테스팅 전략 등이 포함됩니다.
그 과정에서 상당한 경험을 쌓게 되죠. 그러나 경험을 쌓았다고 자동 트레이딩 시스템 구축이라는 목표에 가까워진 것은 아닙니다. 트레이딩 로봇이 완성됐다고 하더라도 수익성이 보장되는 것도 아니고요. 그러다가 프로그래머가 트레이딩 시스템을 다시 쓰고 싶어하기라도 하면요? 총체적 재구조화가 필요할 뿐더러 또 따른 프로그래밍 에러가 발생할 수 밖에 없습니다.
물론 다섯 번째 접근법도 있습니다. 트레이딩 로봇 형태인 기존의 트레이딩 시스템을 구입하는 것입니다. 이 경우 투자자는 오퍼레이터 또는 튜너가 됩니다. 이 접근법에서는 투자자가 새롭게 배워야할 내용이 많지 않으므로 시간이 크게 절약될 뿐만 아니라 자동 매매의 세계에 보다 빨리 뛰어들 수 있게 됩니다.
그러나 이러한 장점이 단점을 낳기도 합니다. 투자자가 구조와 작동 원리를 모르는 트레이딩 로봇을 사용하게 되는 것이죠. 판매자가 해당 시스템에 대한 자세한 설명을 제공한다고 해도 결국 완전히 신뢰할 수는 없을 것입니다.
물론, 언급된 접근법 중 완벽한 접근법은 없습니다. 사실 확실성이라면 은행 예금이 최고죠. 그러나 예금은 시장 거래에 관심을 두고 재산을 증식하려는 이들에게 적합한 답은 아닙니다.
투자자에게 가장 적합한 자동 매매 접근법은?
5가지 접근법 모두 각각의 장점이 있고 분명 부합하는 투자자 유형도 있습니다. 수학을 잘 모르는 사람이 첫 번째 접근법(시장 분석적 설명)을 택하지는 않겠죠. 지금 당장 신경망을 기반으로 하는 트레이딩 로봇을 만들지도 않을 겁니다. 그러나 이 두 접근법 모두 꽤 흥미로운 데다가 좋은 지능 훈련 방법이기도 합니다.
지금부터는 이미 전형적인 접근법으로 인식되고 있는 두 번째 접근법에 대해서만 이야기하겠습니다. 기술분석이 기초 트레이딩의 핵심이 되므로 자동 매매를 원하는 투자자들이 일반적으로 선택하는 접근법입니다.
어느 정도의 수동 매매를 통해 시장 감각을 얻고 나면 기술분석 도구에 대한 이해도가 자연스럽게 높아지는 것 또한 장점입니다. 이와 더불어 투자 전략 프로그래밍이나 보다 수준 높은 신경망 구축도 가능해 집니다.
트레이딩 로봇을 향한 걸음마
자동 매매 시스템 구축에는 프로그래밍 기술과 거래 요청 처리 과정의 복잡한 세부 사항에 관한 지식이 필요합니다. 우선은 기존의 엑스퍼트 어드바이저(EA)를 이용해 보세요. EA는 코드베이스 라이브러리에서 무료로 제공하는 트레이딩 로봇입니다.
원하는 EA(트레이딩 로봇)를 다운로드하여 MetaTrader4 또는 MetaTrader5의 전략테스트에서 실행하세요. 히스토리 데이터에서 강력한 추세를 보이는 인터벌과 횡보구간을 나타내는 인터벌을 각각 선택하세요. 그런 다음 EA에서 매개 변수 최적화를 수행하고 선택한 두 인터벌이 어떻게 다른지 살펴 보세요.
추세가 나타난 인터벌에 횡보구간에 최적화된 매개 변수가 적용된 EA와 횡보구간이 보이는 인터벌에 추세에 최적화된 매개 변수가 적용된 EA도 실행해 보세요. 거래 결과, 매도 압력 및 기타 통계 변수들이 어떤 차이를 보이는지 확인하세요. 시장 상황에 따라 트레이딩 시스템의 거래 방식이 얼마나 달라질 수 있는지 알게 될겁니다.
여러 히스토리 데이터와 다양한 심볼을 이용해 몇 가지 기본 투자 전략을 테스트해 보는 게 좋습니다. 이렇게 연습을 하다 보면 추세 및 역추세 시스템에 대한 이해도도 높아지고 차트가 비슷해 보인다고 해서 동일한 트레이딩 시스템을 적용해서는 안된다는 것을 배울 수 있습니다.
그런 다음에는 MQL5 Wizard가 이미 제공 중인 간단한 신호들을 조합해 좀 더 복잡한 트레이딩 시스템을 만들어 봅시다. 프로그래밍 능력이 없어도 다른 시스템을 기반으로 하는 필터를 이용해서 연습을 하다 보면 나쁜 신호를 구별해 내는 시장 통찰력도 키울 수 있습니다.
가장 중요한 건 과최적화하지 않는 것입니다. 입력 변수가 많은 트레이딩 시스템일수록 최적화되기 쉽습니다. 최적화와 피팅의 차이에 대해서는 많은 의견이 있습니다만, 특정한 의견이 널리 수용되는 건 아닙니다. 그래도 테스트 및 최적화 결과를 시각화해 보고 상식도 이용하면 꽤 도움이 됩니다.
여러분의 트레이딩 시스템에 가장 큰 영향을 미치는 입력 변수가 무엇인지 눈으로 확인하세요. 최적화 과정에서는 시간이 걸려도 실제 시스템의 논리에는 영향을 미치지 않는 부차 변수는 신경 쓰지 마세요. 좋은 트레이딩 시스템에서는 부차 변수에 약간의 자유운동이 항상 허락되며 사소한 시장 변화에 변동성이 과한 움직임을 보이지 않습니다.
테스트 및 최적화와 관련된 모든 전략을 완전히 이해할 수 있을 때까지 충분히 시간을 투자하세요. 기본 시스템의 강점과 약점을 알고 있으면 여러분만의 트레이딩 로봇을 만드는 데에도 도움이 되거든요.
트레이딩 로봇 프로그래밍하기
MQL4 또는 MQL5를 배웠거나 배우는 중이고 이제 MetaTrader에서 사용할 첫 엑스퍼트 어드바이저를 쓸 준비가 되었다고 상상해 봅시다. 여러가지 선택지가 있습니다.
첫째로, 여기서 언급되는 기존의 트레이딩 로봇을 사용해 프로그래밍 관련 세부 사항에 대한 이해도를 높일 수 있겠네요.
둘째로, MQL4.커뮤니티 또는 MQL5.커뮤니티에 해결되지 않는 부분에 대한 질문을 남길 수도 있습니다. 대부분의 숙련된 커뮤니티 회원들은 초보자가 진지한 관심을 보이면 도와주고 싶어 하거든요.
셋째로는 구인 서비스를 통해서 엑스퍼트 어드바이저나 인디케이터를 개선하거나 개발해 줄 사람을 찾을 수도 있겠네요. 직접 코딩을 할 줄 모른다면 말입니다. 그렇지만 프리랜서에게 부탁을 한다고 하더라도 서로 말이 통하려면 전략 테스팅에 대해서 좀 알고 있어야 겠죠
게다가 프로그래밍 언어에 대한 기초 지식이 있으면 시스템이 완성된 후에 직접 사소한 부분을 고치거나 바꿀 수도 있잖아요. 작은 문제가 생길 때마다 프로그래머한테 연락할 수는 없으니까요. 직접 고치는 게 훨씬 쉽고 빠를 거예요.
뭐하러 다시 만드나요?
어떻게 해야 나만의 거래 전략을, 아니, 최소한 어느 방향으로 나아가야 할지라도 정할 수 있을까요? 트레이딩 시스템을 가지고 있는 투자자들은 자신의 시스템을 보호하려고 합니다. 초보 투자자들은 수익성이 좋은 시스템을 만들거나 이미 존재하는 시스템을 이용하고 싶어하죠. 그런데, 초보 투자자들의 '진짜' 트레이딩 시스템에 대한 기대에 비하면 기존의 시스템은 너무도 간단해 보입니다.
![어떻게 해야 나만의 거래 전략을, 아니, 최소한 어느 방향으로 나아가야 할지라도 정할 수 있을까요? 어떻게 해야 나만의 거래 전략을, 아니, 최소한 어느 방향으로 나아가야 할지라도 정할 수 있을까요?](https://c.mql5.com/2/4/thief3.jpg)
전 세계 군인들은 비밀 유지를 매우 중요하게 여깁니다. 관련된 조크까지 있을 정도니까요. "군사비밀은 자네들이 공부하는 내용이 아니네. 자네들이 공부하고 있다는 사실 그 자체가 비밀이네."라고 한 교관이 사관학교 학생들에게 말했다죠? 트레이딩 시스템도 비슷합니다. 대부분의 투자자들이 간단하고 잘 알려진 전략들을 약간만 수정하여 사용합니다. 예를 들어, 추적 손절매나 추세 확인 도구들을 더하는 식으로요.
접근이 제한된 포럼에 접속해 비밀리에 트레이딩 시스템 개발 또는 개선 작업을 하는 투자자들도 많습니다. 웃긴 건 그런 시스템들 중에 뭐 특별한 기능을 가진 건 하나도 없다는 거죠. 보통 단순 추세 거래 전략처럼 잘 알려진 전략을 기초로 삼습니다. 그러고 나서 일반인들이 잘 모르는 인디케이터를 더해 좀 더 완벽에 가깝게 만드는 거죠.
그러니까, 이미 존재하는 트레이딩 로봇 소스 코드에 이런 저런 심볼을 더하고 타임프레임을 설정해서 잘 사용하면 되는 겁니다. 여기서 유명한 조크 하나 더. "고양이를 안 좋아한다고? 고양이 요리를 할 줄 몰라서 그래!" 믿기 힘들겠지만 뭔가 완전히 새로운 것을 개발할 확률은 정말 아주 작습니다. 중요한 건 이미 있는 재료들을 활용해서 시스템을 만드는 거예요. 천재들이라고 해서 뭐 나사 연구실의 비밀 시스템에 접속할 수 있는 건 아니잖아요. 이게 제일 큰 비법입니다.
낮은 성공율
그러면, 거래 전략이 눈 앞에 있는데 왜 제대로 쓰는 사람이 없는 거냐고요? 아마 인간의 심리와 관련이 있을 겁니다. 은행과 투자 펀드에는 엄격하게 정해진 거래량과 규칙에 따라 거래를 실행하는 투자자들이 많습니다. 그런데 왜 그런지는 몰라도 회사를 그만 두고 직접 투자하는 사람은 별로 없죠.
그건 바로 투자 전략뿐만 아니라 그 전략을 지키려는 엄격한 규율을 견지해야 하기 때문입니다. 많은 투자자들이 이런 심리 때문에 나중에 후회하곤 합니다. 투자자 최악의 적은 바로 투자자 자신이라는 걸 알고 나면 초보 투자자들은 심리적 부담을 갖지 않는 트레이딩 로봇을 만드는 것에 대해 고민하기 시작하죠.
주제에서는 조금 벗어나지만 20세기 말 여러 시장에서 성공적인 거래를 기록한 아주 전설적인 '거북이 거래자'들에 대한 이야기를 좀 할게요. '터틀의 방식'을 읽어 보면 투자자에게 있어 가장 중요한 것은 트레이딩 시스템이 아니라 바로 자제력이라는 걸 알게 될 겁니다. 안타깝게도 대부분의 초보 투자자들은 수익성이 좋은 전략을 누가 공짜로 알려 줘도 제대로 따르지를 못해요.
여기서 문제는 수동 매매에서는 완벽한 대부분의 투자 전략이 프로그래밍 언어로 옮기기는 정말 힘들다는 겁니다. 쉽게 형식화할 수 있는 전략들(예: 이동평균교차기법)은 너무 간단해서 실제로 사용하려면 상당한 개선과 정제가 필요합니다. 그렇기 때문에 간단한 전략에 외부 변수를 점점 추가해 트레이딩 로봇이 개발자의 눈에는 명확하게 보이는 거짓 값과 에러 등을 피할 수 있게 하는데요. 이때 트레이딩 로봇의 최적화 문제가 발생합니다. 반드시 과최적화 또는 특정 과거 데이터에 기반한 피팅을 하지 않도록 조심해야 합니다.
이러한 문제를 해결하기 위해 MetaTrader5는 기존의 시스템 변수를 이용한 포워드 테스팅을 구현했습니다. 포워드 테스팅 결과가 최적화 섹션에서 얻어진 결과와 크게 다르지 않다면 트레이딩 로봇이 계좌에 적용된 후 얼마 동안은 안정적으로 작동할 수도 있습니다. 매개 변수 최적화 인터벌과 실제 그 '얼마 동안'의 기간은 트레이딩 시스템에 좌우됩니다.
그렇기 때문에 실제 적용을 앞둔 트레이딩 로봇의 최적화 단계는 새총의 줄을 당기는 단계와 비슷하다고나 할까요. 신중하게 조준해서 뒤로 당겼다가 발사하면 더 멀리, 더 정확히 가는 거죠. 피팅을 통해 얻어진 트레이딩 로봇보다 꼼꼼하게 고안된 트레이딩 로봇이 거래 계좌에 더 오랫동안 좋은 결과를 가져다 줄 겁니다. 다시 말해 시장의 변화에 따른 올바른 매개 변수 조정과 제대로 작동하는 전략이 금과옥조가 되는 거죠.
몇 년째 진행 중인 자동 거래 챔피언십의 결과를 봐도 알 수 있습니다. 참가자들이 제출한 엑스퍼트 어드바이저는 1월에서 7월 말까지의 시간 간격을 두고 자동 테스트를 받습니다. 테스트 통과에 있어 가장 중요한 조건은 테스트가 진행되는 8개월 동안의 이익이 됩니다. 그러나 3개월 정도가 지나면 절반도 채 되지 않는 트레이딩 로봇들만이 계속해서 이익을 창출합니다.
챔피언십 참가를 목표로 트레이딩 로봇을 개발하고 개선해서 엑스퍼트 어드바이저에 대한 포워드 테스팅 결과를 받을 수도 있겠네요. 참가비도 없는데 상품은 엄청납니다. 챔피언십에서 만났으면 좋겠네요!
결론
전문 데이트레이더들은 컴퓨터 앞에 몇 시간이고 앉아 계약을 체결할 순간만을 기다립니다. 물론 항상 컨디션이 좋을 수는 없겠죠.
대부분의 투자자들이 결국은 자신이 세운 규칙을 지키지 못합니다. 모든 트레이딩 시스템이 완전히 형식화될 수 있는 건 아니지만 그래도 인디케이터나 분석 시스템 또는 가짜 신호 필터 도구 등을 추가적으로 이용할 수 있습니다.
이미 관련 자료가 많은 MQL4 또는 MQL5 러닝에 관한 특별한 권고는 하지 않습니다. 본문의 목적은 MetaTrader4와 MetaTrader5를 이용한 트레이딩 로봇 구축에 도움을 주는 데에 있습니다.
초보 투자자와 자동 거래 시스템 개발 중 어려움을 겪는 이들에게 도움이 되길 바랍니다.
MetaQuotes 소프트웨어 사를 통해 러시아어가 번역됨.
원본 기고글: https://www.mql5.com/ru/articles/443
![MQL5 간단하게 알아보기](https://c.mql5.com/2/0/fast_MQL5_avatar__1.png)
![후행 중지를 사용하는 수익 창출 알고리즘](https://c.mql5.com/2/0/Profitable_Strategy_Trailing_Stop_MQL5.png)
![MQL5로 하는 트레이드 오퍼레이션 - 어렵지 않아요!](https://c.mql5.com/2/0/egg.png)
![MetaTrader 5 Tester에서의 전략 시각화](https://c.mql5.com/2/0/trade_robot_in_Backtester.png)