C 자동매매 소스 - C jadongmaemae soseu

자동매매란?

 

인터넷과 컴퓨터,시스템 환경이 좋아진 요즘은 인터넷만 연결되면 일반 개인은 물론 누구든지 손쉽게 주식,외환,금,은,오일,옥수수등을 팔고 살수가 있게 되었습니다. (거래 종목은 계속 추가가 되고 있습니다.)

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

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

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

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

  • 저자 : 이경오
  • 출간 : 2017-02-24

사실 이 책을 고르게 된 이유는 단순하다. 주식 자동매매 시스템을 만들고 싶다기보다는, 비주얼 스튜디오라는 전설의 통합개발환경(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. 책 내용 중 오타가 꽤 있으므로 도서 출판사 홈페이지의 사용자 오류사항을 꼭 참고해서 반영하자. 아, 그리고 책에 나온 소스코드의 모든 "=="" 기호는 "= ="로 적혀 있으므로, 실제 코드 작성할 때는 해당 기호를 빈칸이 없이 붙여야 한다.

먼저 키움증권에 비대면 증권 계좌는 개인적으로 만들어야 한다. 나는 카카오페이 이벤트 페이지 통해서 비대면 계좌개설 했는데 월 100만원만 거래하면 5만원인가 입금을 받았다.

암튼 키움증권 홈페이지에 가보면 아래와 같이 웹사이트 하단 쪽에 Open API 가 있다. 클릭해보자.

C 자동매매 소스 - C jadongmaemae soseu

아래와 같은 화면에서 설명해주는 대로 절차에 따라 신청하면 된다.

C 자동매매 소스 - C jadongmaemae soseu

신청이 다 완료됐으면... 이제 C#으로 어떻게 개발하지? 라고 맨땅에 헤딩 할 생각은 접으시라. 다행이 C#으로 구현한 샘플 코드가 있다! 땡큐!

C 자동매매 소스 - C jadongmaemae soseu

자료실 탭에 가보면 11번 글에 C# 샘플코드가 있다. 다운 받아서 실행 시켜보자.

C 자동매매 소스 - C jadongmaemae soseu

아래와 같은 기본적인 기능 들이 구현되어 있는 샘플 프로그램이라고 설명되어 있다. 

[기본기능] 로그인 / 로그아웃 / 접속상태 / 계좌조회 


[조회기능] 현재가 / 일봉데이터

[주문기능] 주문

[추가기능] 조건검색 / 실시간 등록 / 해제 / 자동주문

난 이 소스코드를 기본으로 해서 내가 구현하고자 한 기능들을 하나씩 구현해 나갔다. 어떻게 개발했는지 하나하나 설명해 드리고 싶지만... 너무 방대해서 어떻게 설명을 드려야 할지 모르겠다. 사실 어떻게 개발했는지 기억도 안난... 일단 옛날에 개발했던 상태의 프로그램은 아래와 같다.

C 자동매매 소스 - C jadongmaemae soseu

추가된 기능은 아래와 같다.

- 내 계좌평가현황 불러오기

- 목표수익률 설정 / 자동 매도(손절포함)

- 매수 종목 설정시 자동 매수

- 주문 취소 기능

지금 보니 정말 기본 기능만 구현되어 있구만... 흠... 하지만 이 프로그램 개발 할 당시 자동 매수를 딥러닝 LSTM 모델을 사용해 구현했었다. 다음날 상승이라고 예측을 하면 전날 3시에 자동 매수 하게 설정해 놓았는데.... 수익이 나지 않았다 ㅎㅎㅎㅎㅎ 그래서 그냥 손놓고 처박아 놓았던 프로그램... 뜨거운 여름 2개월정도 이 프로그램에 매달렸었던거 같다. LSTM 학습을 CPU로 시키고... 너무 오래 걸려서 딥러닝 전용 서버를 살까 고민도 많이 했던... 그때 안사길 잘했지...

이제 이 프로그램을 기본으로 해서 R.NET을 이용해 R engine을 연결해 퀀트 전략 결과를 연산하고 결과를 받아오는 것을 구현할 것이다. 

다음 글에서....

*방구석지니와 자동매매가 궁금하신 분은 아래 강좌를 수강하시면 무료로 방구석지니를 제공해 드립니다.

https://cafe.naver.com/conerquant/336