'2018/01/04'에 해당되는 글 12건

  1. 2018.01.04 2018.01.04 - 시스템 01호
  2. 2018.01.04 증권사 API를 사용하다보면 생기는 문제 #1 5
시스템 01호2018. 1. 4. 16:30

 

 

 

 

 

'시스템 01호' 카테고리의 다른 글

2018.01.08 - 시스템 01호  (0) 2018.01.08
2018.01.05 - 시스템 01호  (0) 2018.01.05
2018.01.03 - 시스템 01호  (0) 2018.01.03
2018.01.02 - 시스템 01호  (0) 2018.01.02
2017.12.28 - 시스템 01호  (0) 2018.01.02
Posted by 투자의神
증권사 API2018. 1. 4. 05:20

 

 

증권사 API를 이용하여 데이터를 조회하는 부분까지는 충분하게 정리해놨지만 필자가 겪은 여러 문제 상황들에 대해 정리하여 새로이 사용하고자 하는 '신규'분들께 도움이 되고자 글을 작성하게 되었습니다.

 

 

대부분의 API 사용자들은 증권사의 모의서버를 기준으로 각종 데이터를 주고 받아 시뮬레이션하고 모의투자로 로직을 검증하게 됩니다.

 

 

타사의 경우에는 잘 모르겠으나 이베스트 투자증권의 서버는 증권사 자체의 관리 인력에 의해 유지, 보수 되지만 모의투자 서버는 위탁 관리 업체를 통하게 되어 있습니다.

 

 

해마다 위탁 관리 계약이 갱신되는지 혹은 경우(이벤트)가 있을때만 교체 되는지는 알 수 없습니다.

 

 

그리고 실거래 서버와 모의투자 서버는 API를 다룸에 있어서 차이가 있는 부분도 있는데요.

 

 

모의투자 서버를 기준으로 데이터를 조회하거나 주문을 내는 시스템이 어느정도 성과를 예상하고 실거래 서버로 도메인(Domain, hts.ebestsec.co.kr 등)을 변경하면 원치 않는 에러를 마주하는 경우가 아주 많습니다.

 

 

이런 부분들을 수정하고자 "API 질문/답변 게시판"에 문의글을 등록하면 답변을 받기까지 대체로 2~3일은 소요되기에 문제점이 많이 발견된 코드일수록 정상작동 하는 코드로 수정하기까지 제법 많은 시간이 필요합니다.

 

 

시간은 곧 돈이며 비용이기 때문에 생각나는대로 글을 올려보겠습니다.

 

 

첫 시간이므로 간단하게 가보겠습니다.

 

 

증권사 서버와 데이터 송/수신을 하다보면 여러 이유(사용자 PC의 과부하, 사용자 인터넷의 문제, 사용자측 전력 문제, 서버측 과부하, 전체 인터넷망의 문제 등)로 데이터가 유실되는 경우가 있습니다.

 

 

충분히 검증되지 않은 내용은 '항상 거짓 = false' 이다는 전제로 보셔야 하는데 간혹 전혀 의심을 하지 않고 상대는 증권사 서버이니 괜찮겠지라는 막연한 믿음을 가지는 경우를 자주 접하는데요.

 

 

예를 들어 삼성전자의 하루치 체결 데이터를 모두 수신 받았다면 당연히 맞겠지라는 생각보다는 올바르게 수신된 것인지, 누락된 데이터는 없는지 검증 해보셔야 합니다.

 

 

필자가 사용하는 방법으로는 각 모든 체결 데이터의 체결량의 합산치와 맨 마지막에 수신된 데이터의 누적 체결량을 비교해보면 누락된 데이터가 있는지 알 수 있습니다.

 

 

누락된 데이터(필자는 '이빨 빠졌다'라고 표현함)의 이빨을 채워넣으려면 장 마감후 TR조회를 통해서 채워 넣을수도 있고 장중 타 증권사에서도 동시에 데이터를 받음으로써 어느정도 보완책을 마련할 수 있습니다.

 

 

위 경우처럼 합산치와 최종 데이터를 비교하여 확인할 수 있는 데이터가 있는가 하면 호가 데이터의 경우에는 언제 어디에서 얼만큼의 누락이 발생되었는지 알 수 없습니다.

 

 

또한 통상의 경우 모의서버와 일반서버는 수신되는 데이터의 수량(갯수)이 일치하지만 필자가 사용하고 있는 VIP 서버는 더 많은 데이터를 내려주는데요.

 

 

그 이유는, VIP 서버는 발생되는 모든 데이터를 개별 건으로 일일이 내려주지만 모의서버와 일반서버의 경우에는 짧은 시간내에 많은 데이터가 발생하면 서버측과 사용자측의 과부하 및 데이터 유실을 막기 위해 어느정도 크기의 덩어리로 뭉쳐서 보내기 때문입니다.

 

 

체결량 기준으로 1, 2, 3, 4, 5의 데이터가 발생될 때 VIP 서버는 1, 2, 3, 4, 5에 대한 5건의 데이터 모두를 수신받을 수 있지만 일반 서버와 모의서버는 VIP 서버와 같을수도 있고 총 합산 기준으로 1 ~ 5건 범위내에서 합산된 데이터를 수신받을 수도 있습니다.

 

 

때문에 모의서버와 일반서버는 부하가 적다는 장점이 있지만 세밀한 데이터를 받아서 처리해야 되는 경우에는 부적합할 수도 있습니다.

 

 

필자는 분석 및 매매에 충분할만큼의 시스템을 갖추고 있어 '과부하'는 고려의 대상이 아니고 보다 세밀한 데이터를 통한 퀀트(Quant) 분석을 하기를 원하므로 VIP 서버를 통해 데이터를 받아 처리하고 있습니다.

 

 

모의서버, 일반서버, VIP 서버는 별도의 차이점이 더 있는데요.

 

 

뉴스 검색기에 사용된 TR중 뉴스 본문을 조회할 수 있는 t3102의 경우를 비교 해보겠습니다.

 

 

 

▲ DevCenter 접속시 '모의서버'를 선택하여 접속하고 t3102 TR의 속성을 조회한 모습입니다.

 

▲ "초당 전송 수"는 1초당 1건이고, "기간 별 제한"은 10분당 200건입니다.

 

▲ 초당 1건을 넘는 조회 요청시 일정 시간동안 패널티를 받게 됩니다.

 

▲ 최근 조회 기준으로 10분내 200건을 넘는 조회 요청시 일정 시간동안 패널티를 받게 됩니다.

 

 

 

▲ DevCenter 접속시 '일반서버'를 선택하여 접속하고 t3102 TR의 속성을 조회한 모습입니다.

 

▲ "초당 전송 수"는 1초당 10건이고, "기간 별 제한"은 없습니다.

 

▲ 초당 10건을 넘는 조회 요청시 일정 시간동안 패널티를 받게 됩니다만 그정도로 뉴스가 폭주하는 경우는 거의 없다시피 하므로 "뉴스 검색기"용도로 적합한 방법이 되겠고 "뉴스 검색기"에서 "모의서버" 접속 항목을 없앤 이유이기도 합니다.

 

▲ 해당 TR의 경우 "기간 별 제한"이 없지만 일반서버로 접속 하였을 시 모든 TR에 적용되는 것이 아니며 이외 대부분의 TR에서는 "기간 별 제한"이 있습니다.

 

▲ VIP 서버의 경우에는 "기간 별 제한"이 사실상 무제한입니다.

 

 

이베스트 투자증권 xing API 사용에 도움이 되기를 바라며 언제가 될 지 모르는 다음편에서 다시 만나 뵙도록 하겠습니다.

 

 

 

Posted by 투자의神