자동 거래 시스템 구축 방법


트레이딩 시스템 코딩.


Justin Kuepper 저.


자동화 된 거래 시스템은 어떻게 생성됩니까?


이 튜토리얼에서는이 프로세스의 두 번째 및 세 번째 부분에 초점을 맞춰 설명합니다. 여기서 규칙은 거래 소프트웨어가 이해하고 사용할 수있는 코드로 변환됩니다.


장점과 단점.


자동화 된 시스템은 거래에서 감정과 바쁜 업무를 취하므로 전략 및 자금 관리 규칙을 개선하는 데 집중할 수 있습니다. 수익성있는 시스템이 개발되면 중단되거나 시장 상황에 변화가 필요할 때까지 작업을 할 필요가 없습니다. 단점 :


시스템이 올바르게 코딩되고 테스트되지 않으면 큰 손실이 매우 빠르게 발생할 수 있습니다. 때로는 특정 규칙을 코드에 넣는 것이 불가능하기 때문에 자동화 된 거래 시스템을 개발하기가 어렵습니다. 이 자습서에서는 자동화 된 거래 시스템을 계획하고 설계하는 방법, 이 디자인을 컴퓨터가 이해할 수있는 코드로 변환하는 방법, 최적의 성능을 보장하기위한 계획을 테스트하는 방법 및 마지막으로 시스템을 사용하는 방법에 대해 학습합니다.


아니 시간에 무역 로봇을 만드는 방법.


무역 로봇을 만들기 위해서는 무역 시스템이 필요합니다.


금융 시장 거래는 가장 중요한 거래를 포함하여 여러 가지 위험을 포함합니다. 즉, 잘못된 거래 결정을 내릴 위험이 있습니다. 모든 상인의 꿈은 항상 좋은 모양이고 인간의 약점을 두지 않는 두려움, 탐욕과 조급함을 가진 거래 로봇을 찾는 것입니다.


각각의 신규 이민자는 알고리즘 형태로 제시되고 일상적인 작업을 완전히 제거 할 수있는 명확하고 엄격한 거래 시스템을 얻거나 만들고 싶어합니다. 가능한가?


거래 시스템은 시장에 진입하기위한 필수 조건이며 그 시스템은 물론 수익성이 있어야합니다. 신규 이민자가 시장에 올 때, 그들은 대개 파악하기 힘든 대량의 정보에 압도 당한다. 이 경우 도서 및 상인 포럼이 도움을 줄 수 있습니다.


불행히도 모든 저자가 성공적인 거래자는 아니며 모든 성공적인 거래자가 책을 쓰는 것은 아닙니다. 예측을 발행하고 거래 시스템을 교육하는 것보다 자신의 돈을 교환하는 것이 훨씬 어렵 기 때문에 많은 특별한 웹 자원이 소유자를 위해 이익을 얻기 위해서만 만들어집니다.


각 상인은 거래 시스템 생성의 모든 단계를 독립적으로 통과해야합니다. 당신이 거래를하기 위해 어떤 시스템을 사용하는지는 중요하지 않다는 대중적인 의견이 있습니다. 가장 중요한 것은 당신이 그 시스템에 따라 실제로 거래해야한다는 것입니다. 그렇지 않으면 시장에서의 거래가 예측 가능한 결과를 가져다주는 도박으로 변하게됩니다.


무역 로봇 및 Forex.


Forex 시장은 큰 유동성을 가지고 있다고 믿어집니다. 또한 다른 여러 시장과 달리 24 시간 거래가 가능합니다. 따라서 많은 거래자들이 많은 수의 거래 수단을 제공하기 때문에 Forex 시장을 위해 특별히 거래 로봇을 만들려고합니다.


그러나 회의론자들은 모든 통화 쌍이 시장에서 매우 낮은 변동성을 제공하면서 서로 강하게 상호 연관되어 있다고 주장합니다. 그러나 상대방은 각 통화 쌍마다 고유 한 특징이 있으며 낮은 변동성은 큰 레버리지로 보상된다고 응답합니다.


어쨌든, Forex 계기는 무역 로봇을 만들기에 매력적이며 자동화 된 거래의 대부분의 지지자들은 통화 쌍을 연마합니다.


MetaTrader 4 및 MetaTrader 5 거래 터미널은 자동화 된 거래 시스템을 쉽게 개발할 수 있도록 특별히 설계되었지만 동시에 인터페이스는 수동 거래에도 편리합니다.


무역 로봇을 만드는 방법?


자동화 된 거래 시스템을 구축하는 데는 여러 가지 방법이 있습니다. 우리는 몇 가지 중요한 것들만 설명 할 것입니다.


첫 번째 접근법은 수학에 달려 있습니다. 개발자는 여러 가지 요인을 고려하는 일종의 방정식을 만들려고합니다. 이 접근법은 가격 움직임이 사용 가능한 과거 데이터를 사용하여 찾을 수있는 모델에 의해 관리된다는 확고한 신념에 근거합니다.


대부분의 경우, 그러한 접근법을 따르는 추종자는 너무 많은 수학을 알고 있지만 시장에 관심이 없거나 시장에 관심이 없다는 것을 모릅니다. 시장은 그들을위한 지적 게임의 한 유형 인 순수 추상화입니다. 이러한 접근 방식은 일반적으로 수년간의 연구 개발로 이어지는 반면, 자동화 된 자동 거래 시스템의 형태로 확실한 결과는 그리 중요하지 않습니다.


두 번째 접근법은 시장 법을 연구하는 것을 기본으로합니다. 다양한 기술 분석 수치가 차트에 나타날 때 가격이 왜 올라가는지 또는 내려가는 지 이해하려는 시도는 없습니다. 이 접근법의 장점은 수학에 대한 특별한 지식이 필요하지 않으며 시장 추진력에 대한 가정을하지 않는다는 것입니다.


그것은 무역을 공부할 때 가장 분명하고 편리합니다. 그것은 보편적 인 인정을받은 상인들에게 가장 인기가 있습니다. 접근법의 단점은 모든 필요한 기호를 지속적으로 추적해야한다는 것입니다.


조만간 거래자는 거래 프로세스의 자동화를 고려하기 시작하고 그 단계에서 가장 중요한 문제가 나타납니다 - 거래 규칙을 알고리즘의 형태로 표현하려고 할 때 거래 규칙을 형식화하는 복잡성. 경우에 따라 거래 로봇을 주문하려고하는 거래자는 거래 규칙을 설명 할 수없고 프로그래머와 공통점을 찾을 수 없습니다.


세 번째 접근법은 특별 소프트웨어 및 수학 패키지에서 널리 사용되는 기성 툴을 사용하여 신경 네트워크를 기반으로 한 "블랙 박스"를 만드는 시도에 기반합니다. 인공 지능의 요소로 자동화 된 거래 시스템을 구축하는 것은 새로운 수학자에 대해서도 흥미 진진하고 도전적인 작업입니다. 수학적 배경이나 프로그래밍 경험이 필요하지 않으므로 모든 것이 시각 도구를 사용하여 수행됩니다.


상인은 기술 지표의 기초를 알아야하며, 필요한 가격 데이터를 준비하고 신경망 작업을위한 확실한 패키지를 경험할 수 있어야합니다. 이 접근법의 가장 큰 단점은 신경망 작업을 위해 이러한 특수 도구를 사용하여 얻은 거래 로봇이 실제로 "블랙 박스"라는 것입니다. 거래자는 작동 원리를 알지 못하며, 일반적으로 어떤 시장 단계가 로봇에 가장 문제가되는지를 예측하는 것은 불가능합니다.


프로그래머는 종종 네 번째 접근 방식을 선택합니다. 수동 거래를 위해 시간을 들이지 않고 처음부터 거래 로봇을 만들기 시작합니다. 왜 수동으로 거래합니까? 당신은 몇 달을 보내고 당신의 노력의 이득을 얻을 수 있습니다.


하지만«아무런 고통도없고 이득도 없습니다». 대부분의 경우 프로그래머는 가격 데이터를 얻고 처리하는 차트, 지표의 시각적 표현, 과거 데이터에 대한 전략 테스트의 맞춤식 수단 등 무역 로봇을 만드는 것보다 친숙한 프로그래밍 언어를 사용하여 필요한 모든 인프라를 만들기 시작합니다.


그들은 그 과정에서 많은 경험을 쌓는다. 그러나 대부분의 경우, 그러한 경험으로 인해 최종 목표 인 자동 거래 시스템이 만들어지지 않습니다. 그리고 거래 로봇이 생겨도 수익성이 있다는 보장은 없습니다. 프로그래머가 다른 거래 시스템을 쓰고 싶다면 어떻게해야할까요? 깊은 구조 조정과 새로운 프로그래밍 오류는 필연적입니다.


다섯 번째 접근 방식이 있습니다 - 기성품 매매 시스템을 매매 로봇 형태로 구매하는 것입니다. 이 경우 상인은 운영자 또는 튜너의 역할을합니다. 이 접근법은 많은 시간을 절약하고 (많은 새로운 것을 배울 필요가 없음) 거래자가 자동 ​​거래의 세계로 빠르게 진입 할 수있게 해줍니다.


이 접근법의 가장 큰 단점은 거래 로봇의 작동 원리와 구조를 알지 못한다는 장점 때문입니다. 그리고 판매자가 구현 된 거래 시스템에 대한 자세한 설명을 제공 했더라도 결코 그 안에 확실하지 않습니다.


그러나 언급 된 방법 중 어느 것도 은행 보증금을 제외한 절대 보증을 제공 할 수 없습니다. 그러나 이는 시장 거래에 관심이있는 사람들과 개인 자산을 늘릴 수있는 방법으로는 적합하지 않습니다.


트레이더를위한 자동화 된 트레이딩에 대한 최선의 접근법은 무엇입니까?


서술 된 다섯 가지 접근법은 각각 장점이 있으며 확실한 유형의 상인에 해당합니다. 훌륭한 수학적 배경이없는 첫 번째 접근법 (시장 분석 설명)을 선택하지는 않을 것입니다. 신경망 기반의 거래 로봇을 만드는 것에서 시작하는 일은 거의 없습니다. 그러나이 두 접근법 모두 매우 흥미롭고 훌륭한 지적 운동을 제공합니다.


아래에서 우리는 이미 고전적인 것으로 간주되는 두 번째 방법에 대해서만 논의 할 것입니다. 그것은 자동화 된 거래의 새로운 추종자에 의해 일반적으로 선택되는 접근 방식입니다. 기술 분석은 거래 기본을 학습 할 때 핵심 지식 영역으로 남아 있기 때문입니다.


두 번째 접근법의 또 다른 장점은 수동 거래에 시간을 할애하고 시장 감각을 얻은 후에 이미 기술 분석 도구를 잘 이해할 수 있다는 것입니다. 게다가, 당신은 거래 전략을 프로그래밍하거나 높은 수준의 신경 네트워크를 만들 수있을 것입니다.


무역 로봇 제작의 첫 단계.


자동화 된 거래 시스템을 만들기 위해서는 거래 요청 처리의 모든 복잡함에 대한 프로그래밍 기술과 지식이 필요합니다. 그러나 먼저 무료 Code Base 라이브러리의 로봇을 거래 할 수있는 기성 전문가 전문가 (Expert Advisors)에서 시작할 수 있습니다.


Expert Advisor (거래 로봇)를 다운로드하여 MetaTrader 4 또는 MetaTrader 5 클라이언트 단말기의 Strategy Tester에서 실행하십시오. 강력한 트렌드를 보여주는 내역 간격과 플랫으로 간격을 선택하십시오. Expert Advisor 입력 매개 변수의 최적화를 수행하고이 두 간격에서 차이점을 검사하십시오.


트렌드 간격에 대한 최적의 매개 변수와 일정 간격의 경향에 대한 최적의 매개 변수로 Expert Advisor를 시작하십시오. 거래 결과, 거래 분배 및 기타 통계적 매개 변수의 차이점을 조사하십시오. 결과적으로, 시장 상황이 바뀔 때 거래 시스템의 행동이 얼마나 다를 수 있는지 알 수 있습니다.


역사와 다양한 상징의 다른 부분에서이 방법을 사용하여 몇 가지 표준 거래 전략을 시도하는 것이 좋습니다. 이러한 시운전은 일정 기간 동안 거래 시스템에 적합하지 못하게하고 추세 및 반대 트렌드 시스템에 대한 더 나은 이해를 제공합니다.


다음 단계는 MQL5 마법사 세트에서 이미 존재하는 단순한 신호의 조합을 기반으로보다 복잡한 거래 시스템을 만드는 것입니다. 프로그래밍 방식없이 다른 시스템을 기반으로 한 필터를 사용하여 한 시스템의 잘못된 신호를 정렬하여 거래 직관을 테스트하고 개발할 수 있습니다.


여기서 가장 중요한 것은 지나치지 않는 것입니다. 거래 시스템의 입력 매개 변수가 많을수록 쉽게 맞출 수 있습니다. 최적화와 피팅의 차이점에 대해 많은 논의가있었습니다. 널리 인정되는 해결책은 없습니다. 그러나 테스트 / 최적화 결과를 시각화하고 자신의 상식을 사용하면 도움이 될 수 있습니다.


전체 입력 데이터 세트에서 거래 시스템에 영향을 미치는 가장 중요한 입력 매개 변수를 식별하는 방법을 학습하십시오. 최적화 과정에서 시간이 걸리는 두 번째 매개 변수에는주의를 기울이지 않지만 시스템의 논리에는 영향을 미치지 않습니다. 좋은 거래 시스템은 항상 보조 매개 변수의 작은 자유 동작을 보여 주지만 시장 변화가 크지 않은 경우 극적인 변동성을 나타내지는 않습니다.


테스트 및 최적화 결과를 검토하는 거래 전략을 이해할 때까지이 단계에서 많은 시간을 할애 할 수 있습니다. 표준 시스템의 강점과 약점에 대한 지식을 통해 자신의 거래 로봇을 만들 때 더 잘 준비 할 수 있습니다.


무역 로봇 프로그래밍.


MQL4 또는 MQL5 프로그래밍 언어를 배우고 배우고 있다고 가정하면 MetaTrader 클라이언트 터미널에 대한 첫 번째 전문가 고문을 작성할 준비가되었습니다. 여기에 몇 가지 사례가 있습니다.


첫째, 프로그래밍 복잡성을 더 잘 이해할 수 있도록 기사에 설명 된 기성품 트레이딩 로봇 몇 가지를 살펴볼 수 있습니다.


둘째, 해결되지 않은 문제가있는 경우 MQL4munity 또는 MQL5munity에 대한 질문을 할 수 있습니다. 숙련 된 커뮤니티 참여자는 일반적으로 신규 이머전자가이 주제에 진실한 관심을 보이는 것을 돕습니다.


셋째, 필요한 프로그램을 독자적으로 작성할 수없는 경우 임원 서비스의 숙제 또는 전문가 고문 또는 지시자를 주문할 수 있습니다. 그러나 프리랜서 서비스를 통해 주문을하더라도 개발자와 공통된 언어를 찾기위한 전략 테스트에 대한 아이디어가 있어야합니다.


게다가 프로그래밍 언어에 대한 기본 지식을 통해 작업이 이미 완료된 후 사소한 픽스와 변경 사항을 코드에 구현할 수 있습니다. 어쨌든 프로그래머에게 당신이 마주 치는 모든 작은 문제를 해결할 것을 부르는 것이 너무 편리하지 않을 것이다. 스스로를 고치는 것이 훨씬 쉽고 빠를 것입니다.


휠을 재발견 할 필요가 없습니다.


자신의 거래 전략을 찾는 방법, 또는 최소한 검색 방향에 초점을 맞추어야하는 방향은 무엇입니까? 모든 거래자는 자신의 거래 시스템을 보호합니다. 모든 신규 이민자는 수익성있는 시스템을 만들거나 기성품을 얻고 자합니다. 동시에 얻은 해결책은 진정한 거래 시스템에 대한 신규 이념과 비교하여 너무 단순한 것처럼 보입니다.


전 세계 육군 남자들은 과도한 비밀 수준에 노출되어 있습니다. 다음과 같은 것을 포함하여 많은 농담이 있습니다 : "군대의 비밀은 당신이 공부하고있는 것에 있지 않습니다. 장교는 군대 학교 학생들에게 말합니다. 그러나 정확히 당신이 그것을 공부하고 있다는 사실에 말입니다." 트레이딩 시스템의 상황은 충분히 유사합니다. 대부분의 트레이더는 트레일 링 스톱 (Trailing Stop)을 추가하거나 트렌드 지표에서 확인서를 추가하는 등 사소한 수정을 통해 간단하고 잘 알려진 트레이딩 아이디어를 사용합니다.


참가자들이 비밀 거래 시스템을 개발하거나 개선하기위한 노력에 동참하는 제한된 접근성을 갖춘 많은 상인 포럼이 있습니다. 가장 흥미로운 점은 그러한 시스템에는 특별한 것이 전혀 포함되어 있지 않다는 것입니다. 일반적으로 잘 알려진 아이디어 ( "트렌드와의 거래"와 같은)가 기본으로 사용됩니다. 그런 다음 일반인에게 알려지지 않은 새로운 지표로 완성되었습니다.


따라서 거래 로봇 소스 코드를 쉽게 가져 와서 다양한 기호 및 시간대와 함께 올바르게 사용할 수 있습니다. 또 다른 인기있는 말은 여기에 언급 될 수 있습니다 : "당신은 고양이를 좋아하지 않습니까? 당신은 단지 그들을 요리하는 방법을 모른다!" 믿기는 어렵지만 실제로 새로운 것을 개발할 확률은 매우 적습니다. 여기서 가장 중요한 것은 사용 가능한 재료를 사용하여 시스템을 만드는 것입니다. 일부 천재들은 NASA 연구소의 비밀 시스템에 접근 할 수 있다고 생각하지 마십시오. 그것은 성배의 비밀입니다.


소수만이 그것을 통해 만들 것입니다.


문자 그대로 팔의 범위 내에 있다면, 왜 아무도 거래 아이디어를 사용하지 않는 이유는 무엇입니까? 대답은 아마도 인간의 심리에 있습니다. 많은 은행 및 대규모 투자 펀드의 직원은 엄격한 규칙에 따라 거래를 수행하고 제한된 수량 내에서 거래가 이루어집니다. 그러나 몇 가지 이유로 인해 소수의 기관 투자자 만이 회사를 떠나 자신의 돈으로 거래를 시작합니다.


그것은 당신이 거래 전략뿐만 아니라 철칙을 따라갈 필요가 있다는 것을 알게되었습니다. 많은 상인들은 책에서 설명한 것과 같은 심리적 문제를 가지고 있다는 사실을 후회하게 느꼈습니다. 상인의 최악의 적을 스스로 깨닫고 나서, 새로 온 사람은 무역 로봇이 심리적 인 부담을 줄이기 위해 생각하기 시작합니다.


주제와 약간 차이가 있지만 20 세기 후반에 여러 시장에서 성공적으로 거래 된 전설적인 거북 상인을 언급해야합니다. "거북이의 길"을 읽으면 상인에게 가장 중요한 것이 자기 기강이며 일부 비밀 시스템이 아니라는 것을 알 수 있습니다. 아아, 대부분의 신규 이민자는 무료로 얻을 수 있다고하더라도 수익성있는 전략을 따를 수 없습니다.


문제는 수동 거래에 완벽하게 부합되는 대부분의 거래 전략은 공식화되거나 프로그래밍 언어로 기록 될 수 없다는 것입니다. 쉽게 공식화 할 수있는 전략 (예 : 두 이동 평균의 교차점 포함)은 너무 간단하고 많은 개선과 개선이 필요하므로 실제로 사용할 수 있습니다. 따라서 단순한 아이디어는 무역 로봇이 잘못된 입력과 오류를 명확하게 볼 수 없도록하는 많은 외부 매개 변수에 의해 점차 복잡해집니다. 거래 로봇 최적화 문제가 발생합니다. 이 프로세스는 특정 이력 간격에 대한 과도한 최적화 및 적합으로 전환해서는 안됩니다.


이 문제를 해결하기 위해 MetaTrader 5 터미널에서 획득 한 시스템 매개 변수를 사용하여 전달 테스트를 수행했습니다. 순방향 테스트 결과가 최적화 섹션에서 얻은 결과와 크게 다르지 않은 경우 거래 로봇이 거래 계정으로 시작한 후 얼마 동안 안정적 일 가능성이 있습니다. 매개 변수 최적화를위한 간격의 길이와 "일정 시간"의 실제 값은 특정 거래 시스템에 따라 다릅니다.


따라서 트레이딩 계좌로 발매하기 전에 거래 로봇을 최적화하는 것은 슬링을 풀어내는 것을 상기시킵니다. 더 조심스럽게 우리는 던지기에서 발사체를 풀어 놓을수록 더 멀리 날고보다 정확한 궤도가 될 것입니다. 철저하게 개발 된 거래 로봇은 피팅 결과 얻은 거래 로봇보다 더 오랜 시간 동안 거래 계좌에 긍정적 인 결과를 유지합니다. 성배는 시장 상황 변화의 순간에 수시로 수행되는 매개 변수의 작업 아이디어 및 올바른 조정이라고 말할 수 있습니다.


이것은 이미 수년간 개최 된 자동 트레이딩 챔피언십의 결과로 설명 될 수 있습니다. 모든 참가자의 제출 된 전문가 고문은 1 월에서 7 월까지의 시간 간격에 대한 자동 테스트를 통과합니다. 자동 테스트를 통과해야하는 주된 요구 사항은 8 개월간의 테스트를 통해 얻은 수익입니다. 그러나 챔피언십을 위해 입국 한 무역 로봇의 절반 이하는 자발적 노동의 몇 개월 후에도 수익이 남습니다.


또한 트레이딩 로봇을 제작하고 조정하여 챔피언십에 참여하고 전문가 조언자의 테스트 결과를 얻을 수 있습니다. 게다가, 참여는 무료이며상은 인상적입니다. 우리는 당신을 거기에서 볼 수 있기를 희망합니다!


결론.


직업적인 intraday 상인은 그들의 컴퓨터에 앉아 많은 시간을 거래를 수행하는 적절한 순간을 기다립니다. 물론, 그들은 항상 좋은 모습을 유지할 수 없습니다.


대부분의 거래자들은 자신의 행동이 자신의 거래 규칙을 위반한다는 결론에 도달했습니다. 모든 거래 시스템이 완전히 공식화 될 수있는 것은 아니지만 그러한 시스템조차도 대부분의 경우 지표, 분석 시스템 및 거짓 신호 필터와 같은 추가 도구를 채택 할 수 있습니다.


MQL4 또는 MQL5 언어 학습과 관련하여 여기서는 특별한 권장 사항을 제시하지 않습니다. 그 주제와 관련하여 유용한 다른 많은 기사가 있기 때문입니다. 이 기사의 목적은 MetaTrader 4 및 MetaTrader 5 터미널에 대한 거래 로봇을 만드는 방법에 대한 초기 아이디어를 제공하는 것이 었습니다.


이 기사가 신규 이민자를위한 시간을 절약하고 자동화 된 거래 시스템을 개발하는 어려운 작업에 올바른 방향을 제시하기를 바랍니다.


MetaQuotes Software Corp. 에서 러시아어로 번역


자동 거래 시스템의 장단점.


거래자와 투자자는 정확한 진입, 퇴출 및 금전 관리 규칙을 컴퓨터가 거래를 실행하고 모니터링 할 수있게 해주는 자동화 된 거래 시스템으로 바꿀 수 있습니다. 전략 자동화의 가장 큰 매력 중 하나는 일정 기준을 충족하면 거래가 자동으로 이루어지기 때문에 감정을 거래에서 제외시킬 수 있다는 것입니다. 이 글에서는 자동화 트레이딩 시스템의 장점과 단점, 그리고 현실을 독자들에게 소개하고 설명합니다. (관련 독서는 프로그램 무역의 힘을 참조하십시오.)


자동화 된 거래 시스템이란 무엇입니까?


기계 거래 시스템, 알고리즘 거래, 자동 거래 또는 시스템 거래라고도하는 자동화 된 거래 시스템을 사용하면 거래자가 일단 프로그래밍 된 경우 컴퓨터를 통해 자동으로 실행될 수있는 거래 엔트리 및 ​​출구에 대한 특정 규칙을 설정할 수 있습니다. 무역 진입 및 퇴출 규칙은 이동 평균 교차와 같은 간단한 조건을 기반으로 할 수도 있고 사용자 거래 플랫폼에 특정한 프로그래밍 언어 또는 자격을 갖춘 프로그래머의 전문 지식을 포괄적으로 이해해야하는 복잡한 전략이 될 수 있습니다. 자동화 된 거래 시스템은 일반적으로 직접 액세스 브로커에 연결된 소프트웨어의 사용을 요구하며 특정 규칙은 해당 플랫폼의 독점적 언어로 작성되어야합니다. 예를 들어, TradeStation 플랫폼은 EasyLanguage 프로그래밍 언어를 사용합니다. NinjaTrader 플랫폼은 NinjaScript 프로그래밍 언어를 사용합니다. 그림 1은 거래 세션에서 세 번의 거래를 유발 한 자동화 된 전략의 예를 보여줍니다. (관련 독서는 국제 무역 및 통화 시장 참조)


[자동화 된 거래 시스템은 다양한 기술 지표를 사용하여 진입 점과 종점을 정의 할 수 있습니다. Investopedia의 Technical Analysis 과정에서는 트레이더가 자동화 된 트레이딩 시스템을 구축 할 때 사용할 수있는 이러한 기술 지표 및 차트 패턴에 대한 심층적 인 개요를 제공합니다.]


일부 거래 플랫폼에는 사용자가 일반적으로 사용 가능한 기술 지표 목록에서 선택하여 자동으로 거래 될 수있는 일련의 규칙을 구성 할 수있게 해주는 전략 구축 마법사가 있습니다. 사용자는 예를 들어 50 일 이동 평균이 특정 거래 수단의 5 분 차트에서 200 일 이동 평균을 넘으면 긴 거래가 입력된다는 것을 설정할 수 있습니다. 사용자는 주문 유형 (예 : 시장 또는 한도)과 거래가 트리거 될 때 (예 : 술집이 닫히거나 다음 술집이 열릴 때) 입력하거나 플랫폼의 기본 입력을 사용할 수 있습니다. 그러나 많은 상인들은 자신의 맞춤 지표와 전략을 프로그램하거나 프로그래머와 긴밀하게 협력하여 시스템을 개발합니다. 일반적으로 플랫폼의 마법사를 사용하는 것보다 많은 노력이 필요하지만 유연성이 훨씬 뛰어나 결과가 더 보람을 느낄 수 있습니다. (불행히도 성공을 보장 할 완벽한 투자 전략은 없습니다. 자세한 내용은 기술 지표를 사용하여 트레이딩 전략 개발을 참조하십시오.)


일단 규칙이 수립되면 컴퓨터는 시장을 모니터링하여 거래 전략 사양에 따라 구매 또는 판매 기회를 찾을 수 있습니다. 특정 규칙에 따라 거래가 체결 되 자마자 보호 중지 손실, 후행 정지 및 이익 목표에 대한 주문이 자동으로 생성됩니다. 빠르게 움직이는 시장에서이 순발력 주문은 거래가 상인에 대해 움직이는 경우 작은 손실과 치명적인 손실의 차이를 의미 할 수 있습니다.


자동화 된 트레이딩 시스템의 장점.


컴퓨터가 거래 기회를 위해 시장을 모니터하고 거래를 수행하는 데는 다음과 같은 이점이 많이 있습니다.


감정을 최소화하십시오. 자동화 된 거래 시스템은 거래 프로세스 전반에 걸쳐 감정을 최소화합니다. 감정을 점검함으로써 일반적으로 거래자는 계획을 고수하기가 쉽습니다. 무역 규칙이 충족되면 거래 주문이 자동으로 실행되기 때문에 거래자는 거래를 주저하거나 질문 할 수 없습니다. "방아쇠 당기기"를 두려워하는 상인을 돕는 것 외에도, 자동화 된 거래는 모든 인식 된 기회에서 매매하는 과도한 경향이있는 사람들을 억제 할 수 있습니다.


역행 능력. Backtesting은 과거의 시장 데이터에 거래 규칙을 적용하여 아이디어의 실행 가능성을 결정합니다. 자동화 된 거래를위한 시스템을 설계 할 때 모든 규칙은 절대적이어야하며 해석의 여지가 없어야합니다 (컴퓨터는 추측 할 수 없습니다. 정확히 무엇을해야하는지 알려야합니다). 거래자는 이러한 정확한 규칙 집합을 사용하여 실시간 거래에서 비용이 발생하기 전에 기록 데이터를 테스트 할 수 있습니다. 신중한 백 테스팅을 통해 거래자는 거래 아이디어를 평가하고 미세 조정할 수 있으며 시스템의 기대치 - 상인이 위험 단위당이기거나 상실 할 것으로 예상 할 수있는 평균 금액을 결정할 수 있습니다. (현재 거래 전략을 재정립하는 데 도움이되는 몇 가지 도움말을 제공합니다. 자세한 내용은 Backtesting : 과거 해석을 참조하십시오.)


징계를 유지하십시오. 무역 규칙이 수립되고 무역 집행이 자동으로 수행되기 때문에 변동이 심한 시장에서도 징계가 유지됩니다. 징계는 종종 손실을 두려워하는 것과 같은 감정적 인 요소 또는 무역에서 조금 더 많은 이익을 얻으려는 욕구로 인해 손실됩니다. 자동화 된 거래는 거래 계획이 정확하게 지켜지기 때문에 규율이 유지되도록합니다. 또한 파일럿 오류가 최소화되고 1,000 주를 매도하기위한 명령으로 잘못 입력되지 않습니다.


일관성을 유지하십시오. 거래에서 가장 큰 도전 중 하나는 무역 계획과 무역 계획입니다. 비록 거래 계획이 수익성이있을 가능성이 있다고하더라도, 그 규칙을 무시한 거래자들은 그 시스템이 가질 수있는 기대치를 바꾸고 있습니다. 시간의 100 %를 차지하는 거래 계획과 같은 것이 없습니다 - 손실은 게임의 일부입니다. 그러나 손실은 심리적으로 충격을 줄 수 있으므로 연속으로 2 ~ 3 개의 거래를 상실하는 상인은 다음 거래를 건너 뛸 수 있습니다. 이 다음 무역이 승자가 되었다면, 상인은 이미 그 시스템이 가진 기대를 파괴했다. 자동화 된 거래 시스템을 통해 거래자는 계획을 거래함으로써 일관성을 유지할 수 있습니다. (거래 규칙없이 재앙을 피하는 것은 불가능합니다. 자세한 내용은 10 단계의 성공적인 거래 계획 수립을 참조하십시오.)


향상된 주문 입력 속도. 컴퓨터가 변화하는 시장 상황에 즉각적으로 반응하기 때문에 자동화 된 시스템은 거래 기준이 충족되는 즉시 주문을 생성 할 수 있습니다. 몇 초 전에 무역을 시작하거나 종료하는 것은 무역 결과에 큰 변화를 가져올 수 있습니다. 직책을 입력하자마자 보호 중지 손실 및 이익 목표를 포함하여 다른 모든 주문이 자동으로 생성됩니다. 시장은 빠르게 움직일 수 있으며, 거래가 이익 목표에 도달하거나 주문이 입력되기도 전에 손절매 수준을 지나치게 떨어 뜨리는 것은 사기성입니다. 자동화 된 거래 시스템이이를 방지합니다.


자동화 된 거래 시스템의 단점과 현실.


자동화 된 거래 시스템은 많은 이점을 자랑하지만 상인이 알아야 할 리얼리티와 몇 가지 단점이 있습니다.


기계적 결함. 자동화 된 거래의 이론은 소프트웨어를 설정하고, 규칙을 프로그래밍하고, 거래하는 것을 보면서 간단하게 보입니다. 그러나 실제로는 자동 거래는 정교한 거래 방법이지만 오류는 없습니다. 거래 플랫폼에 따라 무역 주문은 서버가 아닌 컴퓨터에 상주 할 수 있습니다. 이것이 의미하는 바는 인터넷 연결이 끊어지면 주문이 시장에 보내지지 않을 수도 있다는 것입니다. 또한 전략에 의해 생성 된 "이론적 거래"와이를 실제 거래로 전환시키는 주문 입력 플랫폼 구성 요소간에 불일치가있을 수 있습니다. 대부분의 거래자는 자동화 된 거래 시스템을 사용할 때 학습 곡선을 기대해야하며 일반적으로 프로세스가 개선되는 동안 작은 거래 규모로 시작하는 것이 좋습니다.


모니터링. 하루 종일 컴퓨터를 켜고 나가는 것이 좋지만 자동화 된 거래 시스템에서는 모니터링이 필요합니다. 이것은 연결 문제, 전력 손실 또는 컴퓨터 충돌 및 시스템 단점과 같은 기계적 결함 가능성 때문입니다. 자동화 된 거래 시스템은 잘못된 주문, 누락 된 주문 또는 중복 된 주문을 초래할 수있는 이상 현상을 경험할 수 있습니다. 시스템을 모니터링하면 이러한 이벤트를 신속하게 식별하여 해결할 수 있습니다.


거래자는 Strategy Runner와 같은 서버 기반 거래 플랫폼을 통해 자동화 된 거래 시스템을 운영 할 수 있습니다. 이러한 플랫폼은 상용 판매 전략, 마법사가 자체 시스템을 설계 할 수있는 마법사 또는 서버 기반 플랫폼에서 기존 시스템을 호스팅 할 수있는 기능을 제공하는 경우가 많습니다. 유료로 자동 거래 시스템은 모든 주문이 서버에 저장되어 거래를 검색, 실행 및 모니터링 할 수 있으므로 더 빠르고 안정적인 주문 입력이 가능합니다.


다양한 요인에 호소하지만 자동 거래 시스템은 신중하게 거래되는 거래의 대체물로 간주되어서는 안됩니다. 기계적 고장이 발생할 수 있으며 이러한 시스템은 모니터링이 필요합니다. 서버 기반 플랫폼은 기계적 결함의 위험을 최소화하려는 거래자에게 솔루션을 제공 할 수 있습니다. (관련 독서는 초보자를위한 데이 트레이딩 전략을 참조하십시오.)


시작하기 : 완전 자동 거래 시스템 구축.


지난 6 개월 동안 자동화 된 거래 시스템의 전체 기술 스택을 구축하는 프로세스에 중점을 두었습니다. 나는 많은 어려움을 겪었으며 백 테스팅 (Vectorised and Event driven)의 두 가지 다른 방법에 관해 많은 것을 배웠다. 이벤트 중심의 백 테스터 (backteter driven backteter)를 구축하기위한 여정에서, 전략을 수립하고 백 테스트하고 실제 실행을 실행하는 데 필요한 전체 기술 스택에 가까워졌습니다.


문제를 해결할 때 가장 큰 문제는 지식 부족이었습니다. 나는 기술을 구축하기위한 소개 나 나를 인도 할 블로그를 여러 곳에서 보았다. 나는 오늘 당신과 공유 할 몇 가지 자료를 찾았습니다.


초보자 용 :


양적 거래에 익숙하지 않은 독자를 위해 저는 Ernie P. Chan의 책 "Quantitative Trading : 자신의 알고리즘 거래 비즈니스를 구축하는 방법"을 추천 할 것입니다. 이 책은 기본입니다. 그것은 실제로 제가 양적 거래에서 읽은 첫 번째 책입니다. 그리고 심지어는 매우 기초적 이었지만, 당신이 취해야 할 몇 가지 메모가 있습니다.


페이지 81-84에서 Ernie는 소매 수준에서 시스템 아키텍처를 반자동 및 완전 자동화 전략으로 분리하는 방법에 대해 씁니다.


일주일에 몇 번 거래를하려면 반자동 시스템이 적합합니다. Ernie는 Matlab, R 또는 심지어 Excel을 사용하도록 권장합니다. 나는 모든 3 개의 플래트 홈을 사용하고 이것은 나의 통보이다 :


Skip Matlab은 많은 돈이 들고 대학 연구실에서만 액세스 할 수 있습니다. 블로그 나 책과 같은 교육 자료가 많이 없기 때문에 Matlab을 사용하여 전략을 코딩하는 법을 배울 수 있습니다. R에는 전략 수립 방법을 배우기 위해 사용할 수있는 수많은 리소스가 있습니다. 주제를 다루는 내가 가장 좋아하는 블로그는 : Ilya Kipnis가 운영하는 QuantStratTradeR입니다. Microsoft Excel은 프로그래밍 경험이없는 경우 시작할 것입니다. 반자동 거래를 위해 Excel을 사용할 수는 있지만 전체 기술 스택을 구축 할 때는이 트릭을 수행하지 않습니다.


반자동 프레임 워크 81 페이지.


완전히 자동화 된 거래 시스템은 실시간 데이터 피드를 기반으로 거래를 자동으로 배치하려는 경우에 적합합니다. 나는 C #으로 광산을 코딩했고, QuantConnect는 C #을 사용하고, QuantStart는 파이썬으로 그것을 구축하고, Quantopian은 파이썬을 사용하며, HFT는 C ++을 사용합니다. 자바 또한 인기가 있습니다.


완전히 자동화 된 거래 프레임 워크 84.


1 단계 : 머리를 시작하십시오.


QuantInsti가 제공하는 알고리즘 트레이닝의 이그 제 큐 티브 프로그램을 수행하십시오. 방금 강좌를 시작했는데 첫 번째 강의는 시스템 아키텍처에 관한 것입니다. 제가 여기서 시작했다면 약 3 개월의 연구를 저축했을 것입니다. 강의를 통해 각 구성 요소가 수행해야하는 작업에 대한 자세한 설명뿐 아니라 필요한 각 구성 요소를 살펴 보았습니다. 아래는 프레젠테이션에 사용 된 슬라이드 중 하나의 스크린 샷입니다.


다른 자동 거래 시스템을 평가할 때도이 일반 프레임 워크를 사용할 수 있습니다.


글쓰기를 할 때 나는 강의 3 주 밖에 안 남았지 만, 개업 의사가 폴란드어를 사용하여 양적 헤지 펀드의 시작으로 바뀔 수있는 완전히 자동화 된 거래 전략을 세울 수있을 것이라고 확신합니다. .


참고 : 과정은 기술 스택을 구축하는 데 초점을 맞추지 않습니다.


2 단계 : 기본 이벤트 기반 백 테스터를 코딩합니다.


Michael Hallsmore의 블로그 퀀텀 스타트 & amp; "성공적인 알고리즘 거래"


이 책에는 강력한 이벤트 기반 백 테스터 (backtester)로 작성된 섹션이 있습니다. 그는 언어 선택, 여러 가지 유형의 백 테스팅, 이벤트 기반 백 테스팅의 중요성 및 백 테스터 코딩 방법을 설명하는 여러 장을 통해 독자를 안내합니다.


Michael은 객체 지향 디자인에 필요한 다양한 클래스에 독자를 소개합니다. 그는 또한 독자들에게 증권 마스터 데이터베이스를 구축하도록 가르친다. QuantInsti의 시스템 아키텍처가 어떻게 적용되는지 확인할 수 있습니다.


참고 : 그의 책 "Successful Algorithmic Trading"을 구입해야하며, 그의 블로그는 너무 많은 정보를 남겨 둡니다.


3 단계 : TuringFinance로 돌아갑니다.


EPAT 프로그램 "Successful Algorithmic Trading"읽기 & amp; 원하는 다른 언어로 백 테스터 코딩.


TuringFinance라는 블로그로 이동하여 "Algorithmic Trading System Architecture"라는 제목의 기사를 읽어야합니다. 작성자 : Stuart Gordon Reid. 그는 ISO / IEC / IEEE 42010 시스템의 가이드 라인과 소프트웨어 엔지니어링 아키텍처 설명 표준을 따르는 아키텍처에 대해 설명합니다.


이 게시물은 매우 기술적이며 자신의 아키텍처에 통합해야하는 몇 가지 훌륭한 아이디어가 있습니다.


그의 게시물에서 찍은 스크린 샷.


4 단계 : 오픈 소스 거래 시스템을 연구합니다.


4.1) Quantopian.


콴토 피안 (Quantopian)이이 목록에 추가되어야한다는 것은 말할 것도없이, 나는 (언어 선택 때문에) 자신의 플랫폼을 사용하는 데 많은 시간을 투자하지 않았다는 말을 부끄럽게 여긴다. 콴토 피안은 많은 특혜를 가지고 있지만, 내게 가장 많이 돋보이는 것은 다음과 같습니다.


배우기 쉬운 Python 많은 데이터 세트에 무료로 액세스 할 수 있습니다. 커다란 지역 사회와 대회 저는 그들이 QuantCon을 호스트하는 방법을 좋아합니다!


콴토 피안 (Quantopian)은이 분야의 시장 선두 주자로 퀀트 (Quants)에서 사랑 받고 있습니다! 그들의 오픈 소스 프로젝트는 Zipline이라는 코드 명으로되어 있는데 이것에 대해서는 조금 있습니다 :


"Zipline은 IDE에서 역기를 작동시키는 오픈 소스 엔진입니다. Github에서 코드 저장소를보고 프로젝트에 끌어 오기 요청을 제공 할 수 있습니다. 도움을 구하고 토론을 쉽게 할 수있는 Google 그룹이 있습니다. "


다음은 해당 설명서에 대한 링크입니다.


4.2) QuantConnect.


QuantConnect에 익숙하지 않은 사용자를 위해 완전한 오픈 소스 알고리즘 거래 엔진을 제공합니다. 여기에 링크가 있습니다.


코드를보고 연구하고 & amp; 그들에게 칭찬을 베풀어 라. 그들은 콴토 피안 경쟁자입니다.


이 기회를 빌어 퀀 커넥트 (QuantConnect) 팀이 뇌를 고르도록 해주고 그들이 제공하는 훌륭한 서비스에 감사 드리고 싶습니다.


다음은 해당 설명서에 대한 링크입니다.


끝 맺는 말:


나는이 안내서가 지역 사회 구성원들에게 도움이되기를 바랍니다. 6 개월 전 우리 시스템을 코딩하기 시작했을 때이 통찰력이 있었으면 좋겠습니다.


나는 지역 사회에 손을 내밀어 "좋은 알고리즘 트레이딩 코스는 무엇을 알고 있습니까?"라고 묻습니다. 주제를보고 순위를 매길 수있는 글을 쓰고 싶습니다. 이 게시물에 추가하고자하는 완전 자동화 된 거래 시스템을 구축하기위한 권장 사항이 있습니까?


이 공유:


이 항목을 공유하십시오.


너도 좋아할거야.


멋진 기사. 나는 약 6 개월 전에 그것을 가지고 있었으면 좋겠다. 저는 C # 프로그래머이기 때문에 QuantConnect를 사용합니다. 린 (Lean)과 백 테스트 (Back Test)를 로컬에서 다운로드 할 수 있다는 것이 매우 편리하다는 것을 알았습니다. 코드를 뒤적 거리는 것도 가치가 있습니다. 또한 그들은 Tradier와 1 달러 거래를했습니다. 그것은 많은 도움이됩니다. 나는 Tradier의 확산과 처형에 관해서 두드러지지 않습니다. IB가 더 좋을 수도 있습니다.


내가 언급 한 과정을 살펴 보겠습니다.


Quantocracy 또는 RBlogger는 언급하지 않았습니다. 둘 다 매우 귀중한 자원입니다.


백 테스트의 결과를 차트로 나타 내기 위해 당신은 무엇을 사용합니까? OnData 이벤트에서 OHLC와 인디케이터 값을 csv에 기록하고 결과를 차트로 표시하는 데 Excel을 사용하는 것이 정말 지쳤습니다. 차트 파일 패키지를 데이터 파일로 가리키고 그냥 가져 가려고합니다.


틱 스트림 공급 업체가 있습니까?


이벤트 중심 시스템에 대한 한 가지 생각이 있습니다. 이벤트 문제는 비동기적이고 잠복 적이라는 것입니다. 그것은 당신이 중개업에 관여하자 마자 피할 수없는 것처럼 보입니다. 그래서 저는 기능적 프로그래밍의 원칙에 따라 더 많은 스트리밍 시스템을 꿈꿔 왔습니다.


& # 8211; 진드기 또는 바 스트림을 숨 깁니다.


& # 8211; 표시기 계산, 분석 또는 ML 실행 등의 프로세스를 통해 실행하십시오.


& # 8211; 신호를 다시 받으십시오.


& # 8211; 실행을 위해 브로커에게 보냅니다.


그런 다음 별도의 스트림으로


& # 8211; 브로커로부터 응답을받습니다.


물론 문제는 국가입니다. 무역을하기에 충분한 여유가 있습니까? 내 포트폴리오에는 무엇이 있습니까? 그것은 어떻게 실행되고 있습니까? 일반적으로 브로커 API는 해당 내용을 확인하기 위해 쿼리 할 수 ​​있지만 시간이 오래 걸리고 비동기입니다. 나는 또한 Rx 확장을보고있다. 그렇게하면 시스템은 관찰 가능한 패턴을 통해 시스템의 변화에 ​​대응할 수 있습니다.


이벤트는 마우스 클릭에 좋습니다. 대용량 트랜잭션 처리에는 그리 좋지 않습니다.


이것은 내가 자기 물건으로 가져간 접근법과 정확하게 같습니다. 본질적으로 저는 정상적인 & # 8217; 브로커 (IB API)와 대화 할 수있는 이벤트 인 작은 부분을 감싸는 프로그램. 이제 국가 문제에 대해. 두 가지 선택이 있습니다. 브로커에서 상태를 가져 오거나, 다시 채울 때 내부적으로 업데이트를 저장합니다. 즉, 귀하가 귀하의 주를 알고 있거나 두 주 (州)의 원천이 충돌 할 가능성이있는 (불량 데이터 또는 지연)시기가 있음을 의미합니다. 이 부분은 얼마나 빨리 거래를 하느냐에 달려 있습니다. 정말로 빨리 거래하고 나서 상태 충돌이 있거나 일시적으로 상태가 불투명하다면 일시 중지하는 것이 아니라 상태를 알지 않고 계속 진행하는 것보다 낫습니다. 데이터베이스 & # 8216; 잠금 & # 8217;을 사용합니다. 이것에 대처하는 패러다임.


거의 모든 질문에 대해 Reactive Extension (Rx)에 답이 가깝습니다.


Rx가 Ticks에서 Candles로가는 것은 사소한 일입니다.


양초에서 지시약으로가는 것은 쉽지 않습니다.


다른 지표로부터 지표를 작성하는 것은 쉬운 일이 아닙니다.


지표에서 위치를 작성하는 것은 쉬운 일이 아닙니다.


포지션으로부터 (시간이 지남에 따라 유지되는) 포지셔닝을 작성하는 것은 사소한 일입니다.


위험 모델을 시뮬레이션하는 것은 간단합니다.


테스트 또는 라이브 거래는 라이브 스트림의 데이터 또는 시뮬레이션 된 데이터베이스 데이터 재생 사이를 결정하는 것입니다.


실행은 간단합니다.


구현은 C #에서 F #, JavaScript에서 C ++까지 거의 모든 코드에서 가능합니다.


순전히 기능적인 Rx가 GPU에 대규모 parallalizable이기 때문에 최적화는 빨리된다.


물론 연속 최적화의 효과를 최적화하고 백 테스트에 다시 넣는 것은 중요하지 않지만 어쨌든 중요하지 않다는 것을 감안할 때, 나는 그 슬라이드를 😉


순전히 기능적 (또는 이에 가깝다) Rx는 내 의견으로는이 문제의 인프라를 해결할 수있는 유일한 방법이다.


나는 거래하고자하는 시스템을 안다. 나는 이미 알고있는 누군가를 프로그래밍하거나 배울 필요가 없다. 그렇다면 누가 시스템을 사용하여 누가 그것을 사용하고 자동화 할지를 결정할 수 있습니다. 그것을 자동화함으로써, 나는 그것을보고 싶지 않다는 것을 의미합니다. 결과를 일주일에 한 번 훑어보고 내주의를 기울이지 않고 거래가 진행됩니다. 내가 2016 년에 너무 많은 노력을 기울여 규칙을 수립하고 이러한 규칙을 내 중개인에게 적용해야한다는 것이 이상하다고 생각합니다.


콴토 피안 (Quantopian)에 가입 한 다음 커뮤니티 내의 누군가를 찾아서 전략을 세우는 것이 좋습니다. 그들은 IB 중개인 플랫폼에서 귀하를 위해 그것을 구축하고 완전히 자동화 할 수 있습니다.


그래도 당신이 그것을주의 깊게 감시해야한다고 생각하지만, 단지 잊어 버리는 것이 아닙니다.

Comments