트레이딩

[키움API] KOA StudioSA 톺아보기 - 기본 설명 및 동작

성민석 2021. 10. 7. 14:04

안녕하세요 성민석입니다.

오늘은 키움증권 API와 관련된 기본 설명과 동작을 설명드릴 예정입니다. 기본적으로 KOA StudioSA에서 제공해주는 내용을 바탕으로 글을 작성해나갈 예정입니다. 여기서 제 개인적인 의견이나 첨언이 들어갈 경우 파란색으로 표시하겠습니다.

 

여기서 KOA StudioSA란 무엇일까요? 

  • 당사가 제공하는 TR의 목록과 정보를 간편하게 확인 할 수 있습니다.
  • TR을 테스트할 수 있는 화면을 제공하며, 입력값을 확인 할 수 있습니다.
  • 실시간 DATA의 ID값을 확인할 수 있습니다.
  • 한글 명 검색기능이 있어 원하는 TR을 손쉽게 찾아볼 수 있습니다.

(키움증권 공식 홈페이지 참고)

 

KOS StudioSA를 통해서 API를 직접 사용하지 않아도 몇가지 입력만으로 API의 기능을 확인해보실 수 있습니다. 다만 모의투자 환경으로 접속해야한다는 번거로운 점이 있습니다. 이는 추후 실제투자와 반환되는 값이 다른 API의 경우 심각한 에러를 유발할 수 있으니 참고하시길 바랍니다.

 


기본 설명

기본적으로 키움증권에서의 OpenAPI(Application Programing Interface)를 통해 국내주식상품과 코스피200 선물/옵션을 거래할 수 있습니다. 사용자가 직접 거래/분석프로그램을 개발 할 수 있는 서비스이며 COM형태로 제공합니다. (물론 이외에도 증권사들이 윈도우 환경에서 OCX, COM, DLL 방식으로 API를 제공합니다.) 키움증권에서 제공하는 API의 주요 기능은 시세데이터 (조회데이터와 실시간데이터), 주문기능, 조건검색기능(조회데이터와 실시간데이터)을 제공하며 모두 로그인 이후 가능합니다.


OpenAPI는 보안성과 안정성을 최우선하여 운영되며 데이터의 가공을 최소화하여 사용자에게 원천데이터를 제공하는 것을 원칙으로 합니다. OpenAPI에서 발생되는 주문은 영웅문4 HTS, 영웅문S MTS 등 타매체에서도 확인이 가능하며,
반대로 영웅문4, 영웅문S의 주문에대한 체결신호가 OpenAPI에서 수신됩니다. 하지만 HTS, MTS, API 이렇게 각 매체별로 중복 로그인은 되지만 같은 매체로 중복 로그인은 안된다는 점은 알아두시길 바랍니다. 여기서 아쉬운 점은 64비트 버전의 파이썬이나 엑셀 등에서는 지원하지 않습니다. 

 


기본 동작

OpenAPI 데이터 요청과 데이터 수신 이벤트는 모두 비동기 방식입니다. 이 때 반드시 조회요청한 순서대로 수신되지는 않습니다. 시세조회나 주문 등 함수호출을 통해 서버로 요청하면 서버의 처리 결과를 그에 맞는 이벤트 발생으로 전달합니다. 이벤트 관련된 함수는 일반함수와 구별하기 위해 OnEventConnect (로그인처리완료 관련), OnReceiveTRData (조회요청응답 관련), OnReceiveRealData (실시간시세수신 관련) 등과 같이 앞에 On으로 시작되는 이름을 갖습니다. 

데이터요청과 수신에 대한 몇가지 예시를 보겠습니다.

예시) 조회요청
요청(CommRqData) → 이벤트 발생(OnReceiveTRData) → 데이터 획득(GetCommData)


예시) 조건검색요청
요청(SendCondition) → 이벤트 발생(OnReceiveTrCondition)


예시) 주문요청
요청(SendOrder) → 이벤트 발생(OnReceiveTRData) → 이벤트 발생 (OnReceiveChejanData) → 데이터 획득(GetChejanData)


이렇게 직관적으로 사용자가 어떤 데이터를 요청하고 해당 데이터를 가져오기 오는 방식입니다. 하지만 이 때 이벤트를 임의로 호출해서 사용하는 것은 불가합니다.

 

추가적으로 API와 관련된 몇가지를 적어보겠습니다. 먼저 계좌 번호를 불러올 때 OpenAPI에서는 10자리의 계좌번호가 사용됩니다. 영웅문4 등에서는 끝 2자리를 고객님께 노출하지 않고 8자릿수로 제공됩니다. OpenAPI에서는 계좌의 끝 2자리를 따로 관리하지 않고 사용자가 입력한 그대로의 계좌번호를 사용하도록 설계되어 있습니다. 따라서 데이터 조회 또는 주문시 계좌번호 10자리를 모두 입력해주셔야 합니다.

키움증권 API와 관련해서 가장 중요한 내용 중 하나가 바로 화면번호입니다. 서버에 데이터를 요청하거나, 주문을 발생시킬때 사용합니다. 화면번호는 서버의 결과를 수신할때 어떤 요청에 의한 수신인지를 구별하기 위한 키값의 개념입니다. 0000을 제외한 임의의 숫자(4자리)를 자유롭게 사용하시면 됩니다. 여기서 화면번호 사용시 주의할 점이 있습니다. 같은 화면번호로 데이터 요청을 빠르게 반복하는 경우 데이터의 유효성을 보장할 수 없습니다. 최소한 2개이상의 화면번호를 번갈아가며 또는 매번 새로운 화면번호를 사용하시기 바랍니다. 사용자 프로그램에서 사용할 수 있는 한 화면번호 갯수가 200개로 한정되어 있습니다. (이를 활용하면 한 화면 번호에 200개씩 15개의 화면 번호를 이용하면 실시간으로 전종목에 대한 실시간 체결 / 호가 데이터를 수신할 수 있습니다.) 다만 이 갯수를 넘는 경우 데이터의 유효성을 보장할 수 없습니다. 프로그램 성격상 화면번호 갯수가 200개가 넘어야 하는 경우, 이전에 사용되었던 화면번호를 재사용 하는 방식으로 구현해야 합니다.

 


 

키움증권 API와 관련된 자세한 내용을 확인하고 싶으신 분들은 PDF를 확인해보시면 좋을 것 같습니다.

 

마지막으로 같이 트레이딩하는 분들과 소통하고 싶습니다. 언제든지 트레이딩이나 인공지능과 관련된 내용을 함께 공유하고 토론하고 싶으시다면 아래의 오픈 카카오톡 링크로 연락주세요.
https://open.kakao.com/me/minsuksung

 

성민석님의 오픈프로필

안암에서 인공지능을 연구하고 있습니다

open.kakao.com

 

728x90
반응형