증권사 API2017. 11. 25. 07:00

 

 

xingAPI 가이드를 위한 가이드 세번째 편입니다.

 

 

독자님들은 지난 두번째 편을 보고 난 뒤에 어떤 프로그래밍 언어를 선택해서 개발을 진행할 것인지 결정하셨나요?

 

 

xingAPI에서는 다양한 언어들을 지원하고 있지만 그 선택은 맹목적으로 편리함만을 추구하거나 빠른속도만을 고집할 이유가 전혀 없습니다.

 

 

프로그래밍 언어의 선택에서 중요한 두가지 요소를 알려드리겠습니다.

○. 원하는 결과물(프로그램)을 최대한 빨리 만들어 볼 수 있는 개발의 생산성

○. 어떤 목적으로 프로그램을 만들것인가의 기준

     (ex. 단순한 매매, 시세데이터 수신, 복잡한 매매, 시뮬레이터 구동 등)

 

 

예로 든 내용들을 기준으로 설명 해드리겠습니다.

 

1. 단순한 매매

: Microsoft Office Excel VBA 만으로 충분히 가능합니다.

 

2. 시세데이터 수신

: Microsoft Office Excel VBA로 가능하지만 Excel 자체가 빠른 처리를 요하는 프로그램이 아니며 메모리 문제로 사용이 불가능한 상태가 될 수 있기에 VBA는 제외하는편이 좋습니다. (이외 언어로 충분히 가능)

 

3. 복잡한 매매

: 2번과 마찬가지입니다.

 

4. 시뮬레이터 구동

: 2번과 마찬가지입니다.

 

어떤 프로그램이든 VBA로 구동하게 되면 Excel (엑셀) 프로그램이 항상 활성화 상태여야 합니다. (전자동 시스템)

 

 

모든면에서라고 할 수는 없겠지만 대체적으로 속도가 빠를수록 프로그래밍 언어를 학습하는데 소요되는 시간은 반비례하게 길어집니다. (예로, 프로그래밍에 대해 아무것도 모르는 사람이 Visual C++ 로 개발하려면 우선 학습에만 최소 1년 이상 소요)

 

 

프로그래밍 언어를 선택하고 어떤 버전의 xingAPI (COM, DLL 중 택일)를 사용할 것인지 결정했다면 이제 본격적으로 시작 해보겠습니다.

 

 

xingAPI를 다운로드 해야 하는데 이 부분은 아래 링크를 참조하여 다운로드 및 설치 하시기 바랍니다.

http://systemtraders.tistory.com/176?category=726546

 

 

xingAPI (증권사 데이터 송수신용 통신 모듈 프로그램)의 내부를 잠시 살펴 보겠습니다.

 

 

* 이후 모든 내용은 이베스트투자증권에서 제공하는 샘플을 설명하기 위해 VBA + COM버전을 기준으로 설명합니다.

 

 

 

 

 

갑자기 어려워 보이는 용어가 튀어나와서 놀래셨나요?

 

 

깊이 알지 못하더라도 크게 상관없는 내용이고 내부적으로 저런 객체들을 제공하며 사용자는 저 범위 내에서 사용할 수 있다고 이해하면 됩니다.

 

 

분명 COM 버전을 선택했는데 파일명이 *.dll 이지요?

xingAPI는 COM버전이라 하더라도 DLL을 사용하게 되어 있습니다.

 

 

DLL은 Dynamic Link Library의 약자로써 쉽게 표현해서 xingAPI에서 제공하는 통신 모듈 프로그램 코드가 저 dll 파일에 들어있다고 이해하면 되고 실제로도 그렇습니다.

 

 

 

 

 

 

이 그림을 보면 필자의 글이 더욱 잘 이해되리라 믿습니다.

 

 

위 *.dll 파일을 독자분들의 프로그램과 연결하여 무언가 원하는 작업을 처리 할 수 있는데 우선 연결하는 과정이 필요합니다.

 

 

우선 엑셀을 구동하여 주시고요.

 

 

 

 

상단 메뉴중 "개발 도구"를 클릭하고 하위 메뉴에서 "Visual Basic" 를 클릭합니다.

 

 

눈치 빠른분들은 VBA가 Visual Basic과도 연관성이 있구나 하실겁니다.

 

 

만약 해당 메뉴가 없다면" Excel 옵션"에서 메뉴를 추가할 수 있습니다.

 

 

 

 

위에서 "Visual Basic"를 클릭하면 별도의 창이 뜨게 될텐데 "도구" > "참조"를 클릭하여 xingAPI와 Excel을 연결하는 첫번째 작업을 할 수 있습니다.

 

 

 

 

 

위 링크(http://systemtraders.tistory.com/176?category=726546)의 내용대로 잘 따라 하였다면 참조 목록에 뜨는 내용중 "Xing DataSet Lib", "Xing Session Lib"를 선택할 수 있습니다.

 

 

위 내용들중 잘 안되는 부분이 있으면 Comment 남겨주세요.

확인하는대로 Reply 하겠습니다.

 

 

다음 시간에 또 뵙지요.

 

 

<자료 출처 : 이베스트투자증권 (http://ebestsec.co.kr)>

 

 

Posted by 투자의神
시스템 성과 합산2017. 11. 24. 18:00

 

 

 

 

오늘도 시스템은 거래 없이 관망으로 쉬었네요.

 

 

본 글을 작성하면서 잠시 "왜?"라는 생각이 들어서 원인을 찾아보려고 했는데요.

 

 

오늘뿐만 아니라 최근 2주간 거래없이 관망한 이유가 1차적으로는 당월물인 2017년 12월 만기 옵션의 잔존일수가 많이 남은 영향으로 프리미엄이 꽤나 높게 형성되고 있다고 보여집니다.

 

 

옵션은 단순하게 보면 내재가치 + 시간가치 = 옵션의 가격이 되는데 만기일까지 시간이 경과함에 따라 시간가치가 감소하는게 기본적입니다.

 

 

그러므로 현재 만기가 지나고 2주가 지났지만 앞으로 남은 기간이 약 3주나 되기 때문에 시간가치가 많이 감소하지 않았고 이를 시스템이 자체적으로 분석해냈기 때문에 거래 할 타이밍이 아니라고 봤던것이 부차적인 이유라고 판단됩니다.

 

 

옵션만기일은 매월 두번째주 목요일인데 어떤 특정 옵션 만기일로부터 다음 옵션 만기일까지는 명절 및 국경일 등의 공휴일, 28~31일까지의 월말일수, 매달 두번째 목요일이 배치된 주차수(1~3주차에 배치)에 따라 잔존일수가 제각각입니다.

 

 

예를 들어,

2017년 01월 12일이 1월물 옵션의 만기일이고 1월말에 설연휴가 있었으며 월말일은 31일,  다음 만기일은 2월 두번째주 목요일인 2017년 02월 09일이며 당월물로써 거래는 18 거래일.

 

 

2017년 02월 09일이 2월물 옵션의 만기일이고 월중 공휴일이 없었으나 윤년, 윤달의 영향으로 월말일은 28일, 다음 만기일은 3월 두번째 목요일인 2017년 03월 09일이나 3/1절로 공휴일 하루 포함되었고 당월물로써의 거래는 19 거래일.

 

 

2017년 03월 08일이 3월물 옵션의 만기일이고 월중 공휴일이 없었고 월말일은 31일, 다음 만기일은 4월 셋째주인 2017년 04월 13일이고 당월물로써의 거래는 25 거래일.

 

 

앞선 옵션 만기일은 2017년 11월 09일이고 다가오는 만기는 2017년 12월 14일이며 사이에 공휴일이 없으며 당월물로써의 거래는 26 거래일입니다.

 

 

통상 옵션 만기일이 지나고 약 일주일 가량 거래가 없다가 거래를 하는편인데 금월에는 잔존일수가 아직 많이 남았고 옵션의 시간가치가 높은 상태라고 판단되기에 거래가 전무한 상황이며 다음주 마지막 거래일이자 12월 1일에는 잔존일수가 2주 이내 범위에 들어가므로 늦어도 이때쯤은 거래가 되지 않을까 싶은 생각입니다만, 나중일은 나중 가봐야 아는것이므로 필자도 정확히는 모릅니다.

 

 

단순히 시스템이 한동안 거래 없이 놀면서 관망 일수가 역대 최장일을 갱신하는 이유가 뭔가 간단히 적어 보려다가 글이 장황해졌네요.

 

 

연구 목적으로 개발하여 사용하고 있는 프로그램중에는 향후 지수가 어떻게 움직일지 연산해서 결과를 보여주는 것이 있는데 조만간 큰 흐름이 나올것으로 기대되는 값을 보여주고 있으니 언젠가 거래에 참여하리라 생각합니다.

 

 

"뉴스 검색기"를 통해 알게 된 독자분 한분께서 날씨도 추운데 멀리서 이곳까지 방문 해주셔서 함께 식사자리를 가졌는데 열심히 경청하다보니 밥먹으러 가서 밥한술 제대로 못 뜨고 나왔네요.

 

 

듣고보니 너무나 구구절절하고 안타까운 사연을 가진분이라 이야기를 듣는 내내 가슴이 아프더군요.

 

 

필자의 블로그를 방문하는 모든분들이 각자 노력한 만큼의 결과를 시장으로부터 취하기를 바랍니다.

 

 

사무실은 언제나 열려있고 사전에 연락주고 방문하시면 각자의 사연을 청취하고 가능한 범위내에서 도움을 드리려고 하오니 언제든 연락 주시고 딱히 할 이야기가 없더라도 오셔서 따뜻한 차 한잔 드시고 가세요.

 

 

주말 잘 보내세요.

 

 

Posted by 투자의神
시스템 03호2017. 11. 24. 17:30

 

 

 

 

Posted by 투자의神
시스템 02호2017. 11. 24. 17:00

 

 

 

 

Posted by 투자의神
시스템 01호2017. 11. 24. 16:30

 

 

 

 

Posted by 투자의神
시스템 성과 합산2017. 11. 23. 19:30

 

 

 

 

오늘에야 거래가 있겠지 생각했는데 원래 거래가 없는 날인것인지 아니면 시장이 별 움직임이 없어서 거래가 없는 것인지는 잘 모르겠습니다.

 

 

정신 없는 나날을 보내다보니 시스템을 관심있게 보지 못하는 것 같습니다.

뭐 안봐도 전혀 상관은 없지만요.

 

 

그런데 이런 부분은 유심히 봐야 할 것 같습니다.

 

 

"V2 7-72 시스템"의 2017년 10월 25일 손익 내용이 기존에는 0원으로써 거래가 없던것으로 기록되어 있었는데 계좌 관련한 블로그를 적으려다가 계산이 안맞다는것을 알게 되었습니다.

 

 

아무리 봐도 그게 그거인것 같아서 거래 내용을 저장하는 데이터베이스 서버와 해당일의 데이터를 보관하고 있는 시뮬레이션 서버 그리고 증권사 거래내역 및 손익내역까지 모조리 다 찾아서 확인 해보니 오기입한게 맞네요.

 

 

큰 금액이든 아니든 누락된 부분이 있으면 안되는데 실수를 했네요.

 

 

유심히 보도록 하겠습니다.

 

 

현재 예약 카테고리 4개를 생성 해두었는데요.

 

 

독자분중 몇분께서 필자의 시스템에 대한 문의를 하셔서 현재 운용중인 시스템중 일부를 추가 공개 할 계획인데 당분간은 바빠서 안되고 조금 더 시일이 걸릴것 같습니다.

 

 

이외 운용중인 시스템에 대해서도 추가 공개 의향은 있지만 너무 발가벗는 느낌이랄까요?

또 블로그 글 포스팅에도 시간적으로 더 많이 할애하기 어려운 상황이기도 하고요.

 

 

충분한 여유를 찾게 되면 더 알차고 많은 내용으로 채워놓고 싶지만 사실 필자도 아는게 별로 없어서 곧 밑천이 드러날까 걱정도 살짝 됩니다.

 

 

시스템이 내일은 거래를 하려나요?

 

 

금일 종가상의 흐름으로는 거래 가능성이 일부 닫힌것도 있고 열려있는것도 있는데 실제 내일 어떤 흐름이 나올지 모르기 때문에 시스템이 거래를 할지 아닐지 모르겠습니다.

 

 

많은 분들이 눈을 똘망똘망 뜨고 기대에 찬 눈빛을 하고 계시니 내일은 "뉴스 검색기" 마무리 작업에 시간을 좀 내볼까 합니다.

 

 

혹 독자분중 수험생이 있다면 노력한 만큼의 결과를 얻기를 기원합니다.

 

 

Posted by 투자의神
시스템 03호2017. 11. 23. 19:00

 

 

 

 

Posted by 투자의神
시스템 02호2017. 11. 23. 18:30

 

 

 

 

Posted by 투자의神
시스템 01호2017. 11. 23. 18:00

 

 

 

 

본 시스템의 손익 내용중 일부가 잘못 기입되어 수정하였으며 수정 내용은 2017년 10월 25일 거래가 없는것으로 기록되어 있다가 \ 429,792 손실이 누락된 것을 확인하고 수정하였습니다.

 

 

Posted by 투자의神
증권사 API2017. 11. 23. 15:30

 

 

xingAPI 가이드를 위한 가이드 두번째편입니다.

(1편에서 너무 빨리 끝냈으니 진도 좀 나가겠습니다.)

 

 

아래는 이베스트투자증권 홈페이지의 xingAPI 페이지에서 안내하고 있는 내용입니다.

 

 

 

xingAPI는 그 자체로 무언가를 할 수 없고 증권사와 독자님들이 만든 프로그램의 사이에서 데이터를 주거니 받거니 할 수 있게 해주는 일종의 통신모듈입니다.

 

 

 

 

 

각자의 프로그램에서 증권사 서버로 언제 어떤 데이터를 요청할 것인지를 증권사 서버에 전달하는 역할을 담당하며 내부 구조는 다소 복잡해보이지만 사실 제대로 보면 정말 복잡하긴 합니다.

 

 

xingAPI 그 자체로는 YesTrader나 TradeStation 등의 툴과 달리 시각적으로 뭔가 보여지는 매매 프로그램이 아니지만 xingAPI를 이용해서 어떤 프로그램을 만드냐에 따라서는 앞서 언급한 프로그램들보다 백만배 이상 유용하게 사용할 수 있고 빠릅니다.

 

 

xingAPI로 증권사에 데이터를 요청하는 창구(도메인 주소)는 hts.ebestsec.co.kr 이기 때문에 도메인 주소에서도 알 수 있다시피 일반적으로 HTS를 통해 증권사에 접속할 때 사용하는 것과 동일하므로 제공되는 데이터도 동일하다고 보면 됩니다. (모의서버의 도메인 주소는 demo.ebestsec.co.kr 입니다.)

 

 

 

 

xingAPI는 크게 2가지 버전으로 나뉘어져 있습니다.

 

 

일반적으로 사용성이 편리하나 속도가 늦다는 COM 버전과 속도는 빠르나 개발하기가 어렵다는 DLL 버전인데요.

 

 

COM은 Component Object Model이라고 Microsoft에서 내놓은 일종의 프로그래밍 표준이며 COM을 지원하는 모든 프로그래밍 언어에서 각 프로세스간 통신 송수신과 동적 오브젝트 생성이 가능합니다.

 

 

위 열거된 프로그래밍 언어중 필자 기준에는 Delphi, C#까지 빠른 범위에 포함된다고 생각됩니다.

 

 

가장 최악은 엑셀VBA이고요.

 

 

프로그래밍 언어를 상대적으로 쉽게 배우고 얼른 써먹으려면 C#, Delphi, Python 쯤에서 고르는게 가장 이상적일 것 같고 C에 대해 깊은 이해도가 있다면 고민할 것도 없이 C++이 낫습니다. (대신 작업량은 필자가 사용하는 C#에 비해 엄청나게 늘어날지도 모릅니다.)

 

 

xingAPI + 독자 개발 프로그램을 통해 시스템 트레이딩이라는 것을 하게 될텐데요.

 

 

시스템 트레이딩이란, "사람의 자의적 판단이나 편견을 배제하고 시간과 공간에 상관없이 일정한 매매 규칙을 일관되게 매매에 적용하는 방법"입니다.

 

 

API 그 자체로는 통신 프로그램에 불과하기 때문에 API = 시스템 트레이딩의 공식은 성립하지 않습니다.

 

 

얼마전 필자는 약 10일간 여행을 다녀왔는데요.

 

 

사무실의 제 자리는 비어있었지만 미리 만들어둔 프로그램이 알아서 거래를 해서 수익을 냈습니다.

 

 

아마도 시스템 트레이딩의 최장점을 손꼽으라면 위의 예와 더불어 급등, 급락의 공포스러운 흐름에서도 감정적으로 몰입하지 않아도 되고 전혀 무신경하게 내버려두어도 된다는 점이리라 생각됩니다.

 

 

또 실제 거래는 손으로 하더라도 "이렇게 이렇게 하면 돈이 벌어질 것 같은데?"라는 아이디어를 검증하는 과정에서도 시스템이 매우 유용하게 사용되어집니다.

 

 

필자는 최근 수년간의 데이터를 모조리 집어넣고 다양한 시뮬레이션을 진행하고 있는데 이 연산 규모는 사람이 도저히 할 수 없을 규모입니다.

 

 

하루에만 1천만건 이상의 데이터가, 1년이면 25억건 이상의 데이터가, 4년이면 100억건의 데이터가 넘게 쌓이는데 이것은 사람이 하나하나 일일이 처리 할 수 없다고 보는게 맞겠죠.

 

 

시스템을 활용한 시뮬레이션 그리고 시스템 트레이딩이라는 것이 활용하기에 따라 상당히 유용한데 잘 활용하기까지의 과정이 다소 험난할 수 있다는 점 알아두시고, 이번편에서는 이 정도의 설명으로 마무리하고 다음편에서는 조금 더 깊이 들어가보도록 하겠습니다.

 

 

<자료 출처 : 이베스트투자증권 (http://ebestsec.co.kr)>

 

 

Posted by 투자의神