2011년 2월 18일 금요일

실시간 주가 데이터 얻기

제가 얼마전에 올린 주가 데이터 백업하기에 질문을 올린 분이 있어서 정리합니다.

제가 올린 방법은 수작업으로 HTS에서 주가 데이터를 엑셀파일로 저장하는 과정이 필요합니다.

이걸 실시간으로 자기가 만든 DB와 연동하려면

실시간 주가 데이터를 제공하는 측에서 내 프로그램으로 데이터를 보내주던지

아니면 자기 프로그램이 그걸 가져오도록 만들어야겠죠.

자기가 증권회사 HTS 개발팀원이 아니거나 정식 HTS 사용자가 아닌 이상 실시간 주가

데이터를 내 컴퓨터로 증권회사에서 보내 줄리가 없으니 서버측에서 나한테 밀어보내주는

(PUSH) 방식은 기각이고...

그럼 댕겨오는 방법에 대해서만 간단히 상상해보죠.


1) 실시간 주가 데이터는 증권회사 HTS 뿐만 아니라, naver나 yahoo 등과 같은 포탈 사이트

에서도 검색이 가능합니다. 웹 로봇 원리를 이용해서 주기적으로 특정 종목의 주가를 질의하고

그 응답 페이지를 긁어와서 그 페이지에서 원하는 데이터만 파싱할 수 있으면 원하는 수준의

실시간 주가 데이터를 얻을 수 있을 겁니다. 이 방법은 QUE 에서 출간된 Linux Socket

Programmig (Warren G. Gay)에 예제 코드까지 나와 있습니다.


2) 두 번째 방법은 첫 번째 방법과 원리는 비슷하지만 그 대상이 다릅니다. 우선 내가 어떤

증권 회사의 HTS 사용자인 경우 자기가 쓰는 HTS 프로그램을 실행하고 tcpdump 같은

프로그램을 이용해서 증권회사와 HTS 프로그램 간의 프로토콜을 분석합니다. 뭐 간단하게

HTS에서 특정 종목 가격 문의했을때 내 컴퓨터에서 나가는 패킷 까보고, 돌아오는 응답 패킷

까봐서 규칙을 찾아내는겁니다.

이 과정만 재연해서 자기 db 프로그램이 끼어들게 만들 수 있으면 ok. 하지만 이 방법은 거의

해킹하는 방법에 가깝기 때문에 법적인 문제가 생길 수도 있겠네요..


이상입니다..

둘 다 답변이 미흡한 감이 있는데, 원래 제가 하고자 했던 일은 아래 참조 논문에서도 나왔듯이

기계 학습을 이용해서 과거 주가 데이터의 규칙을 찾는 것이었기 때문에 실시간 데이터

분석쪽으로는 고민을 해보지 않았네요..

간단하게 상상해본 두 방법에서 보듯이 가장 좋은 방법은 그냥 실력되면 증권회사 HTS 개발팀에

들어가서 정식 프로토콜 사용권한을 얻는게 정상적인 접근 루트 되겠습니다. 아니면 증권사에서

네이버의 Open API 처럼 공식 서비스를 제공하기 기대하던지요.