자동 거래 시스템

마지막 업데이트: 2022년 3월 6일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
System(SW) Architecture Design

자동매매프로그램,키움증권,무료다운로드

인터넷으로 거래 할때 사용하는 플랫폼(platform)은 수없이 많이 있으나 컴퓨터 프로그램이 자동으로 거래를 할수있게 자동 거래 시스템 지원하는 플랫폼중에 대표적인것으로 MetaQuotes Software Corp.라는 회사에서 만든 Meta Trader 라는 것이 있습니다.현재 버전이 5까지 나와있는데 버전 4가 아직까지는 주로 쓰이고 있습니다.(줄여서 MT4,한글로 메타4라고도 합니다.)

이 플랫폼의 기능중에 아래 사진에서 나오듯 Expert Advisors(시스템 트레이딩-줄여서 EA라고도 함) 라는 기능이 자동 거래 시스템 있는데 이곳에다 팔고 사는 전략을 담은 파일을 저장한후 작동 시키면 컴퓨터가(프로그래밍된 파일의 명령에 의해) 알아서 자동으로 팔고 사는것입니다.

C#과 데이터베이스로 누구나 쉽게 주식 자동매매 시스템 만들기

『C#과 데이터베이스로 누구나 쉽게 주식 자동매매 시스템 만들기』는 증권사에서 제공하는 Open API를 연동하여 주식을 자동으로 거래할 수 있는 자동매매 시스템을 구축하는 방법을 설명합니다. 이 책에서 만드는 자동매매 시스템은 윈도우에서 구동되는 C# 윈폼 프로그램을 만들어 Open API 모듈을 연동하여 구현하고 오라클 DBMS를 연동하여 데이터를 관리합니다.

사실 이 책을 고르게 된 이유는 단순하다. 주식 자동매매 시스템을 만들고 싶다기보다는, 비주얼 스튜디오라는 전설의 통합개발환경(IDE)을 가볍게 배워보고 싶었기 때문이다. 개인적으로 개발할 때는 굳이 무거운 지원 도구가 필요하지 않은 Python이나 Go를 주로 사용하다 보니, 비주얼 스튜디오의 전설적인(?) 자동 거래 시스템 개발환경에 대한 소문은 항상 나를 혹하게 했다.


이 책은 전자책으로 출간되었기 때문에 한빛미디어 홈페이지에서 가볍게 내려받은 후 Visual Studio 2017을 설치했다. 책의 예제는 구버전(VS 2015)으로 구성되어 있지만, 2017을 설치할 때 [.NET 데스크톱 개발] 옵션 체크만 한다면 전혀 무리 없이 진행할 수 있었다.


이 책은 저자가 아주 일관된 단 하나의 목적 - 주식 자동 매매 프로그램 구현 - 만을 위해서 움직인다. 1부에서는 주식 자동매매 시스템을 구축하는 데 필요한 Visual Studio 설치와 Oracle, Oracle Developer, 키움증권 가입 및 API 연동 프로그램 설치 등의 환경 설정을 주로 다룬다. 2부는 윈폼(WinForm) 프로젝트를 생성해서 C#이란 어떤 것이고 앞으로 어떻게 우리는 프로그램을 구성해나갈지 보여주는 일종의 튜토리얼이다. 본격적인 프로그램 구현에 들어가는 자동 거래 시스템 것은 3부부터이다. 프로그래밍 왕초보자도 그대로 따라 하기만 하면 진행에 무리가 없을 정도로 친절한 1~2부와는 달리, 3부부터는 간결한 핵심 로직 설명과 많은 소스 코드가 자리한다. 각 소스코드 내부의 변수/함수/클래스/메서드 등에 대한 세부적인 설명은 거의 없다. 내용의 조건만 살짝 고쳐서 쓰는 게 아니라 나 자신이 자동 거래 시스템 원하는 기능을 더 넣을 수 있도록 수정/보완하려면 별도의 C# 도서를 공부하는 것이 필요하다.


책의 중간 정도까지는 소스코드를 장렬하게 타이핑하다가 치다가, 이윽고 귀차니즘에 지배당해서 후반부에는 소스코드 복사/붙여넣기로 프로그램을 완성했다. 전혀 모르고 관심도 역시 높지 않은 내용의 개발이었음에도 그 과정은 쾌적했다. 비주얼 스튜디오와 C#의 궁합은 정말 환상적이었다. 이 정도의 속도, UX 일관성, 편리함은 아주 먼 옛날 C/S 프로그램 시절에 Delphi를 다룰 때나 느껴봤었던 것 같다.


사실 책을 시작하기 전에는 이쪽 분야는 충분히 공부할 시간도 의지도 없는데 괜히 무리했나 후회하는 마음이 약간은 있었지만, 의외로 C#을 잘 몰라도 진행하는 데는 별 무리가 없었다. 물론 이 책의 저자가 다른 프로그래밍 도서처럼 이론을 시시콜콜하게 설명하지 않아서 그런 것 같기도 하다. 어쨌든 이 책은 C#을 전혀 모르는 사람도, 주식을 한 번도 해보지 않은 사람도, 처음부터 끝까지 따라 할 수 있다. 그리고 완성된 프로그램은 정말로 동작한다. 언론에서 자주 자동 거래 시스템 나오는 컴퓨터 프로그램을 이용한 자동화된 주식매매란 어떤 것인지 손으로 만들어가며 맛볼 수 있다. 비록 이 책에는 세세한 코드 설명 같은 건 없지만 무언가를 빨리 배우는 걸 즐기는 사람이 C# 입문서와 함께 공부한다면 굉장한 시너지효과를 낼 수 있을 것 같다. 어쨌든 모르는 분야에 뛰어드는 데는 간단한 무언가를 만들어가면서 몸으로 익숙해지는 것보다 더 좋은 방법이 없기 때문이다.

P.S. 책 내용 중 오타가 꽤 있으므로 도서 출판사 홈페이지의 사용자 오류사항을 꼭 참고해서 반영하자. 아, 그리고 책에 나온 소스코드의 모든 "=="" 기호는 "= box-sizing: border-box; font-family: "Apple SD Gothic Neo",Helvetica,arial,"나눔고딕","Nanum Gothic","맑은 고딕","Malgun Gothic","돋움",Dotum,Tahoma,Geneva,sans-serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; word-break: keep-all;">

가상화폐거래소의 진화, 인공지능 자동거래시스템으로 거래한다.

증권 솔루션 글로벌기업인 ㈜한국금융IT(대표 김현섭)는 한국가상화폐거래소 주식회사를 설립하고 본격적으로 가상화폐거래소 사업에 진출한다. 한국가상화폐거래소는 '대한민국 대표 가상화폐거래소'가 되겠다는 목표를 내걸고 지난 7월에 설립되었다.

한국가상화폐거래소(KOVEX)는 최신 금융트레이딩 기법을 가상화폐 거래에도 적용한 국내 최초의 차세대 거래소이다. 가장 큰 특징은 한국금융IT가 2년 자동 거래 시스템 넘게 연구 개발하여 검증을 거친 ‘인공지능 자동거래시스템’을 적용했다는 것이다. 이 시스템을 통해 365일 24시간 거래되는 가상화폐 거래에서 투자자들이 간단한 설정만으로도 편하게 잠잘 수 있는 투자환경을 제공할 뿐만 아니라 수익률 증대라는 가치를 제공할 것으로 기대하고 있다.

또 다른 특징으로는 이례적으로 증권시스템 개발분야 국내 최고업체들이 개발에 참여했다는 것이다. 23개 증권사에 분석차트 등 솔루션을 공급하고 있는 ㈜한국금융IT가 주축이 되고, 원장개발 전문업체인 ㈜코어플렉스, 자동매매시스템 1위 업체인 아이낸스㈜, 모바일 플랫폼 업체인 아수소프트 등이 참여하여 증권매매시스템과 동일한 수준의 서비스를 제공한다는 것이다.

특히 그간 거래소의 난제였던 실시간 주문처리 등에 있어서 완벽한 실시간 대용량 처리기술로 정확한 실시간 시세제공 및 빠른 주문체결을 기본적으로 제공한다. 이 외에도 한국금융IT의 경쟁력인 전문트레이더와 연계한 소설트레이딩, 글로벌시세 및 투자정보분석정보 제공 서비스, 실시간으로 수익률을 확인할 수 있는 자산평가시스템, 가상화폐 변화를 실시간으로 알려주는 스마트알람서비스 등이 이전에는 없었던 차별화된 한국가상화폐거래소만의 서비스로 적용된다.

한편, 한국가상화폐거래소는 씽크풀, 핑거 등 7개 법인으로부터 시스템의 경쟁력과 성장 가능성을 평가 받아 이미 1차 투자 유치를 완료했다. 씽크풀이 보유하고 있는 인공지능 로봇 주식투자시스템(라씨)와 핑거의 스마트월렛 기술 등의 제휴를 통해 획기적인 매매방식을 선보일 예정이다. 또한 확보된 자금으로는 블록체인기술력 제휴 및 철옹성의 통합보안시스템 구축 등을 추진하여 완전히 새로운 거래소를 만든다는 계획을 세우고 있다.

한국금융IT의 태국, 인도네시아 진출 경험을 토대로 한국가상화폐거래소 또한 일본, 베트남, 인도네시아 등의 글로벌 시장진출도 준비하고 있다. 이에 따라 개발단계에서부터 글로벌버전을 동시에 준비하고 있으며, 이를 위해 업계 최초로 웹, 모바일, HTS버전을 동시에 오픈하여 투자자에게 편의성을 제공할 뿐만 아니라 국내시장에서 사전에 냉정한 평가를 받겠다는 각오를 갖고 있다.

향후 한국금융IT는 축적된 기술력을 통해 기술지원뿐만 아니라 가상화폐거래소 시장의 패러다임의 변화를 이끄는 차세대 선도자 역할을 한다는 계획이다.

Def's Programming And Life

이전 2019년에 코로나를 초기에 예측하여 얻은 주식 수익은 있지만, 이는 요행에 불과하다고 생각하기에.

글작성일 기준, 2022-06-23 현재 엄청난 인플레, 아니 스태그 플레이션이 세계 경제를 위협하고 있다.

그로인해 코스피 지수는 바닥을 뚫고 내핵에 박힐 지경이고..

자동 거래 시스템

여러가지 요인이 있지만 코로나, 러시아 전쟁, 기후문제 등의 여러 요인이 한번에 겹쳐 이러한 상황을 만들어냈다.

이런 바닥이 어디인지 모르는 상황에서의 주식투자는 마치 88올림픽 성화에 뛰어드는 비둘기 같달까..

하지만 프로그래머는 그렇게 접근하는 생물체가 아닌걸?

사실은 알고있다. 스태그 플레이션에서는 현물투자, 국채등이 강세를 보인다는것을..

진짜로 농담은 여기까지 하고, 본론으로 들어가자.

현재 고점대비 꽤나 주식이 떨어진 시점에 주식매수는 여러 전문가들이 권하고 있다.

그리고 서브프라임 모기지, IMF 사태를 겪었기 때문에 참고할 자료는 많다.

필자는 현재 종목을 설명하고 이걸 사세요! 하기 위해 등장한 것은 아니고..

주식 매수, 매도를 퀀트를 이용해 여러 요소를 이용해 정량적으로 측정하고 이를 파이썬으로 자동화하는 과정을 소개하기 위해 왔다.

이 강좌? 설명? 공유글? 어찌되었던, 이 글들을 진행하기 위해 이 책의 내용을 기반으로 필자의 생각을 더해 얘기하고자 한다.

파이썬 증권 데이터 분석 - YES24

투자 기법과 프로그래밍 기술로 자신만의 퀀트 투자 시스템을 완성하라『파이썬 증권 데이터 분석』은 웹 스크레이핑으로 증권 데이터를 주기적으로 자동 수집, 분석, 자동 매매, 예측하는 전

시스템 트레이딩 만들기

주식 자동매매 프로그램을 만들기 위해 요구사항 분석단계를 거쳐 지난 시간에는 Use Case Diagram 을 그려보면서 내가 만들고자 하는 프로그램이 어떤 기능을 제공해야 하는지를 대략적으로 알아볼 수 있었습니다. 이번에는 좀더 프로그램을 구체화하기 위한 단계로 System Architecture Design 즉, HW/SW 를 나눠서 각각의 영역에서 시스템을 어떻게 설계해야 하는지, 그리고 각각의 시스템을 구성하는 서브시스템은 어떤것들이 있으며 서로 어떤 관계인지를 명세화 하는 단계입니다.

시스템 구성도

System(SW) Architecture Design

일단 주식매매 프로그램이기 때문에 주식거래를 하기위한 증권사 서버(Kiwoon-Api-Server)가 필요하고 해당 서버에 요청을 하는 부분이 필요합니다. 요청하는 부분이 실제 만들어야 하는 프로그램인데, Django 웹 프레임워크를 사용하여 웹기반의 Application 형태로 구현하기로 결정했습니다.

Micro Service Architecture

하나의 단일 서버에 여러가지 기능을 모두 때려박는 형태로 설계하지 않고 여러개의 서비스가 협업하는 형태인 Microservice Architecture 로 설계를 했습니다. 위 그림을 보면 주식매매 및 주식데이터 수집을 위한 트레이딩 서비스, 웹 크롤링을 담당하는 서비스가 존재합니다. 만약 이후에도 새로운 기능이 필요한 경우 기존 서비스에서 지원할수 있는 성격이 아니면 신규 서비스를 등록하는 형태로 구현할 예정입니다. 이런식으로 구성함으로써 전체 시스템을 좀더 견고하게 만들고, 기능(구현)을 각 서비스별로 격리시켜 프로그램 구현 복잡도를 낮추고자 하였습니다. 구현이 분리되고 복잡도가 낮아짐으로써 테스트(단위테스트, Integration테스트)의 구현이 좀더 손쉬워지고, 버전 업데이트시 필요한 기능만 업데이트하여 전체 시스템에 주는 영향도를 최소화하길 기대하고 있습니다.

PC Application vs Web Service

시스템 설계시 PC 기반의 Application(pyQT) 형태로 구현할지, 웹 프레임워크(Django)기반의 Client-Server형태로 구현할지 고민을 많이 했습니다. 최종은 위에서 설명한대로 Django 를 사용하여 웹 서비스 형태로 구현하기로 자동 거래 시스템 결정을 하였는데, 왜 이런 결정을 하게 되었는지 간략히 설명합니다.

구현난이도, 개발속도 보다는 자유도, 확장성, 모바일 친화성

먼저 pyQT를 사용하여 PC App 을 만들었을때의 장점은 주식매매 프로그램의 바이블과 같은 책인 "파이썬으로 배우는 알고리즘 트레이딩"에서 pyQT 기반으로 프로그램을 만들기 때문에 손쉽게 레퍼런스 코드를 구할수 있다는 장점이 있고, pyQT를 사용하면 마우스로 드래그하고 이벤트만 연결하면 UI 를 손쉽게 만들수 있기 때문에 개발속도가 매우 빠를것이라는 기대가 있었습니다.

하지만 pyQT는 서비스(서버) 개념이 아니기 때문에 집에 있을때만 사용할 수 있다는 단점이 있습니다. 물론 원격접속 프로그램을 이용하면 밖에서도 제 PC에 접속하여 프로그램을 실행할수 있지만, 원격접속은 반응속도가 느리기도 하고 모바일로 접속하는 경우 키보드/마우스 컨트롤이 어렵기 때문에 사실상 원격으로는 뭔가를 해보기가 쉽지 않습니다. 주식시장이 열리는 9시~3시30분은 항상 회사에 있는데 회사에서 저의 자동매매 프로그램이 제대로 돌고 있는지, 이상은 없는지 체크해보고 문제가 생겨서 원격에서 조정하려면 웹 서비스는 고려사항이 아니라 필수라는 생각이 들었습니다. (아마도 이런 불편함을 느꼈기 때문에 요구사항 분석할때도 ' 외부에서 프로그램을 일부 조작할수 있어야 한다. (프로그램이 뻗으면 Auto-Restart 또는 매뉴얼 shutdown)' 이런 자동 거래 시스템 내용이 포함되지 않았나 싶습니다. 또한 모바일로 접속했을때 모바일에 적합한 페이지 구성을 할수 있기 때문에 이후에 사용성 측면에서도 더 편리할 것으로 생각했습니다.

웹 서비스로 구현하게 되면, pyQT대비 구현의 복잡도는 올라가지만, 이 부분은 개발자로써 역량을 향상시키고 싶기도 했고, 제가 극복해야 하는 영역으로 생각했습니다. 또한 pyQT 대비 자유도가 높기때문에 향후에 다양한 요구사항을 만족시키기에도 적합하다고 생각하였고, 다양한 웹 기반 라이브러리를 사용할 수 있다는 점도 매력적으로 다가왔습니다.

Django 채택

웹 서비스 자동 거래 시스템 형태로 구현하기로 마음을 먹고나서 어떤 웹 프레임워크를 사용해야 할지 또 고민이 되었습니다. 제가 아는 유명한 웹 프레임워크는 Node.js(javascript), Django(python), Flask(python), Spring(java) 정도가 있습니다. 일단 주력 개발언어를 python 으로 정했기 때문에 되도록 한가지 프로그래밍 언어로 개발을 하고 싶어서 Django, Flask 2개로 선택지를 좁혔고, 그중에서도 Django 를 선택한 이유는 Admin 페이지를 기본으로 제공해준다는 장점과 MVC 패턴을 사용하여 코드를 구현할수 있다는 점, 그리고 Django에 대해서 잘 몰라서 이번기회에 배워보고 싶어서 선택하게 되었습니다.

Database

제가 만드는 주식매매 프로그램의 핵심기술은 "매매전략의 검증" 이 될것으로 생각합니다. 흔히 말하는 백테스팅, 자동 거래 시스템 매매시뮬레이션 이 부분이 기술적으로 완벽하게 구현된다면, 다양한 가설(매매전략)을 세우고 이게 시장에서 통하는 전략인지, 시간 구간별, 요일별, 월별 나타나는 특징은 무엇인지 반복적으로 보이는 패턴이 있는지, 주가의 상승 또는 하락에 유의미한 factor는 무엇인지 등등을 손쉽게 알아낼 수 있다고 생각합니다.

일단 데이터 분석을 하려면 데이터를 먼저 수집하고, 다루기 쉬운 형태로 가공하여 저장을 해야 합니다. 주식자동매매를 위한 데이터 관리를 위해 어떤 Database를 사용해야 할지 고민이 되었고, 최종적으로 MongoDB를 사용하기로 했습니다. 왜 MongoDB 를 선택하게 되었는지 그 이유를 간략히 설명합니다.

다양한 형태의 데이터

일단 수집해야 할 데이터의 종류에 대해서 생각해봤습니다.

  1. 주식 데이터 (시세, 거래원, 거래량, 파생데이터 등등)
  2. 기업, 증권 뉴스 (텍스트 데이터)

증권사 api 서버에서 제공하는 주식데이터는 형태로 고정되어 있지만, 해당 정보를 베이스로 하는 여러가지 파생 데이터는 형태가 무한히 확장될 수 있습니다. 익히 알고 있는 파생데이터도 있지만, 나만의 전략, 가설에 사용되는 개인 파생데이터도 존재하기 때문입니다. 또한 증권시장은 언론에서 만들어내는 뉴스에 매우 민감하게 반응하기 때문에 뉴스를 크롤링하고 머신러닝/딥러닝을 적용하여 단어를 부정/긍정으로 구분하고 이를 매매에 반영하고자 한다면 이러한 비정형데이터를 저장할 수 있어야 합니다. 요즘은 SNS또한 파급력이 높기 때문에 경우에 따라서는 facebook, 인스타그램, 트위터의 텍스트 데이터를 파싱해야 할지도 모르겠습니다. 이러한 비정형 데이터를 저장하기 위해 NoSQL Database를 선택해야 했고, NoSQL DB 에서 가장 인기가 많은 MongoDB 를 선택하게 되었습니다. 인기가 많은 자동 거래 시스템 만큼 구글링 했을때 손쉽게 많은 정보를 접할수 있고, Document도 굉장히 잘 되어 있습니다. (영문..ㅠ.ㅠ) 또한 Client Tool 도 여러가지가 존재하고요.

아래는 DB엔진 인기도를 보여주는 db-engines.com의 결과입니다. Document Store type DB중에서는 MongoDB가 1위네요.

database 인기도 순위, MongoDB는 NoSQL에서 1위

자동매매 프로그램의 SW 시스템 아키텍쳐를 설계하고 왜 이렇게 설계하였는지, 어떤 장점이 있고 어떤 제약사항이 있는지 나름대로 고민한 부분들을 쭉 적어봤습니다. 개발경험이 많지 않고 설계는 처음해보는 것이다 보니 서툰부분도 많고 고민의 깊이가 부족한 부분도 많을 수 있습니다. 계속 개발해보면서 경험도 더 쌓고, 책을 보면서 새로운 인사이트도 얻고, 제 블로그를 방문해주시는 분들의 의견도 들어보면서 계속 역량을 쌓아나가야 할것 같습니다.

자동 거래 시스템

기관투자자 전유물로 여겨지던 자동매매 기능을 갖춘 시스템 트레이딩이 개인투자자로 확산되고 있다. 시스템 트레이딩이란 투자자가 일정 매매패턴을 입력하면 자동적으로 주식을 사거나 파는 프로그램방식 투자 기법이다. 주로 대규모 자금을 운용하는 기관투자자들이 사용한다.자동 거래 시스템

21일 우리투자증권은 작년 선보인 상장지수펀드(ETF) 자동매매시스템 `우리 스마트 인베스터`가 6개월만에 1000억원을 돌파했다고 밝혔다. 이 회사가 내놓은 우리 스마트 인베스터는 일종의 시스템 트레이딩이다. 일정 기준에 도달하면 감정 개입 없이 기계적으로 매수도가 이뤄져 주식 투자 실패 요인 가운데 하나인 심리 요인을 배제한다. 금융선진국인 미국에서는 매우 대중적인 매매방식으로 전체 거래량의 50% 이상이 시스템 트레이딩으로 이뤄진다.

우리투자증권 측은 이 서비스가 매월 고정된 일자에 균등한 금액을 투자하는 일반 적립식과는 달리 종합주가지수가 내릴 때 더 많은 금액으로 지수형 ETF를 매수하고 오를 때에는 덜 사는 방식으로 평균 매입가를 낮추는 전략을 활용할 수 자동 거래 시스템 있다고 밝혔다. 고객어음관리계좌(CMA)에 예치된 자금을 시스템을 통해 자동으로 사고판다.

이윤학 우리투자증권 신사업추진센터 부장은 “우리 스마트 인베스터는 일종의 시스템 트레이딩 기법을 활용한 것”이라며 “ETF에 투자함으로써 개별 주식투자에 따른 위험을 최소화하고 매매도 지수 변화에 따라 전략을 짤 수 있다”고 밝혔다.

시스템 트레이딩은 외환과 선물을 중심으로도 확산되고 있다.

삼성선물 외환선물 마진거래 시스템인 `메타트레이더4`, 대신증권 `사이보스 트레이더`, 예스트레이더 등이 대표적이다. 한 업계 관계자는 “최근 시스템 트레이딩과 관련해 증권사 지점에서 고객대상 세미나를 연 결과 수백명의 고객이 몰렸다”며 “강남 고액 자산가를 중심으로 이를 활용한 매매가 활발하다”고 귀띔했다. 그는 “시스템 트레이딩을 통해 단기간 수익을 내기는 어려우나 전략을 세우고 3~4개월 중단기로 투자한다면 지수 대비 초과수익률을 낼 수 있다”고 조언했다.

실제 자동 거래 시스템 일부 증권사에서는 시스템 트레이딩을 통해 자기자본을 매매하면서 상대적으로 높은 수익을 내는 것으로 알려졌다.

다만 최근 일반에 보급된 시스템 트레이딩이 다양한 전략 구사가 힘들고 주식투자에는 다양한 변수가 있다는 점에서 유의해야 한다는 지적도 있다.

이승룡 대신증권 시스템트레이딩부 팀장은 “시스템 트레이딩에는 시장의 수급, 기술적인 차트, 추세를 간파하는 투자자 전략이 가장 중요하다”며 “단순한 기계적인 자동 매매를 통한 시스템 트레이딩이 수익을 낼 것으로 보고 접근하는 것은 위험하다”고 지적했다.


0 개 댓글

답장을 남겨주세요