트레이딩

[키움API] KOA StudioSA 톺아보기 - 자주 묻는 질문 (1)

성민석 2023. 7. 24. 09:00

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

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

 

이번 포스팅에서는 후반에 있는 자주 묻는 질문 중 처음 접하는 경우에 대해서 알아보겠습니다.


Q : 어떤 개발언어로 구현해야 하나요?

A : 당사 OpenAPI는 COM방식의 ocx컨트롤로 제공됩니다. ocx컨트롤을 탑재할 수 있다면 개발언어에대해 제한은 없습니다. 모든 개발언어에대한 샘플제공이 어려운 점은 양해 부탁드립니다.

개인적으론 Python을 사용하고 있는데, Python을 사용하게 된다면 PyQt가 거의 유일한 방법일겁니다.

 


 

Q : 구현 및 실행 환경에대한 제한이 있나요?

A : 당사 OpenAPI는 32비트용 ocx로 제공됩니다. 64비트용은 제공되지 않으니 구현시 주의하시기 바랍니다. 64비트 엑셀, 64비트 파이썬, visual studio 2022 환경 등에서 개발이 불가 합니다. 또한 실행시 서버급OS, 한글외 타 언어OS 환경은 지원하지 않습니다.

 

Python으로 32비트 개발 환경 세팅하고 싶다면 아래 포스팅을 참고하세요!

2021.10.01 - [개발] - [개발] 증권사 API를 사용하기 위한 32비트 가상환경 만들기

 

[개발] 증권사 API를 사용하기 위한 32비트 가상환경 만들기

안녕하세요 성민석입니다. 새롭게 블로그를 만들다보니 이전 블로그에서는 다루지 못했던 다양한 컨텐츠를 다뤄보려고 합니다. 제가 지난 1년동안 증권사 API를 사용해보면서 처음에 가장 힘들

minsuk-sung.tistory.com


 

Q : OpenAPI를 설치했는데 바탕화면에 아무것도 안생겨요

A : OpenAPI는 설치시 실행파일이 존재하지 않습니다. 당사 OpenAPI를 사용하여 프로그램(실행파일)을 사용자가 직접 구현해야 합니다. 설치과정은 당사의 OpenAPI 컨트롤을 사용할 수 있도록 PC(레지스트리)에 등록하는 과정이라 여기시면 되겠습니다.

 

직접 실행시키고 싶으시다면, opstarter.exe 라는 실행파일을 누르시면 됩니다.


 

Q : KOA StudioSA 가 뭔가요?

A : KOA스튜디오는 OpenAPI 개발 참고용 프로그램 입니다. OpenAPI가 제공하는 API함수들, 이벤트들의 사용법을 참조 하실 수 있습니다. 이외에도 조회할 수 있는 데이터들을 확인하거나 실제로 조회해볼 수 있습니다. OpenAPI프로그램 구현시 KOA스튜디오에서 조회된 데이터와 비교해볼 수 있습니다. KOA스튜디오는 모의투자 서버로만 접속 가능 합니다. 

 

사실상 여기에 개발에 필요한 모든 내용들이 있습니다.

 


 

Q : 로그인이 실패합니다. 버전처리가 뭔가요?

A : 버전처리는 OpenAPI 실행에 필요한 최신 버전을 다운로드 하는 과정을 말합니다. OpenAPI 로그인창이 다운로드 할 최신버전의 파일을 유무를 확인하여 사용중인 파일보다 최신 파일이 있는 경우 서버에 파일 다운로드를 요청합니다. 이 과정에서 OpenAPI 특성상 프로그램을 먼저 종료해주어야 할 필요가 있습니다. OpenAPI 프로그램이 실행되며 OpenAPI 관련 파일들을 이미 사용하고 있어서 최신 파일로 변경할 수 없게 됩니다. OpenAPI 프로그램을 먼저 종료해달라는 메세지 출력시 로그인창과 메세지창을 그대로 둔채로 KOA스튜디오를 포함하여 실행하셨던 프로그램을 먼저 종료하신뒤 로그인창이 출력한 메세지창 확인을 누루면 버전처리가 정상적으로 진행되고 다음번 버전처리가 있을때까지는 메세지창 출력과 버전처리 과정 없이 접속됩니다. 

 


 

Q : 함수와 이벤트의 차이가 뭔가요? 동작원리를 알고 싶습니다.

A : OpenAPI에서 여러 함수와 이벤트가 제공됩니다. 이중 그 이름앞에 "On" 으로 시작하는 것을 이벤트, 외의 것들을 함수로 보시면 되겠습니다. 함수는 사용자가 임의로 호출하여 사용할 수 있고 이벤트는 서버의 응답이 수신되거나 특정한 조건에 부합하는 경우 시스템상에서 자동으로 발생되는 것을 말합니다. 이벤트는 사용자가 필요에따라 임의로 호출하여 사용할 수 없습니다. 예를들어 사용자는 CommRqData() 함수를 사용하여 서버에 특정 데이터를 요청하고 이에대한 서버의 응답이 도착했을때 OnReceiveTrData() 이벤트가 발생됩니다. 함수와 이벤트는 아래와 같이 동작 합니다. 로그인 : CommConnect() 함수 호출 --> 로그인창 출력 --> OnEventConnect() 로그인에 대한 서버응답 이벤트 발생 조건검색 : GetConditionLoad() 서버에 저장된 조건식로드를 위한 함수 호출 --> OnReceiveConditionVer() 서버응답 이벤트 발생 데이터 조회 : CommRqData() 서버에 데이터 요청 함수 호출 --> OnReceiveTrData() 서버응답 이벤트 발생 --> OnReceiveRealData() 실시간 데이터 이벤트 발생 주문 : SendOrder() 서버로 주문 전송 함수 호출 --> OnReceiveTrData() 서버응답 이벤트 발생 --> OnReceiveChejanData() 실시간 주문체결 이벤트 발생

 


 

Q : TR, FID 용어가 무슨뜻인가요?

A : TR(Transaction)은 서버와의 통신단위를 의미 합니다. 특정한 데이터를 요청하고 수신하는 한번의 행위로 보시면 되겠습니다. OpenAPI는 차트데이터를 포함하여 200여가지의 조회서비스를 제공하고 있으며 하나하나를 TR 서비스 라고 명칭합니다. FID(Field  ID)는 데이터 항목마다에 부여된 고유한 ID를 의미 합니다. 한번에 여러 항목의 데이터가 서버와 송수신되면서 특정한 데이터 항목을 식별하기 위해 사용됩니다. 가령 주식체결 실시간시세 데이터가 수신될때 여러가지 항목중 현재가(가격) 데이터 항목은 FID 10번, 거래량 데이터 항목은 FID 15번 입니다. OpenAPI에서 제공되는 TR과 FID 목록은 KOA스튜디오 "TR목록", "실시간목록"에서 각각 확인하실 수 있습니다. 

 


 

Q : 몇 종목까지 조회할 수 있나요?

A : 실시간으로 시세를 수신할때 종목의 수를 제한하지는 않습니다.(이게 사실 좀 애매한 부분입니다. KOA StudioSA 내에선 100종목이라고 하는데 여기선 또 제한없다고 하네요. 화면번호는 200개까지 쓸 수 있으니 200 x 100 = 20,000종목이라 제한 없다고 말하는건지) 다만 너무 많은 종목의 시세를 수신하는 경우 사용자 PC의 부하를 일으킬 수 있으며 이로 인해 사용하시는 OpenAPI 프로그램의 데이터처리 지연현상을 야기할 수 있습니다. 실시간 시세를 건별로 모두 파일 또는 DB에 기록하는 동작을 구현하는 경우 부하/지연 현상을 일으킬 가능성이 높습니다. 이는 사용하시는 프로그램이 어떤 처리로직으로 구현되었는지와 함께 PC(CPU/메모리/네트워크)의 사양에 좌우 됩니다. 실시간시세를 수신하면서 PC의 작업관리자창을 띄워놓고 PC의 부하정도를 확인하시며, 동시에 주문을 발생시켜서 주문에대한 체결내역 수신에 영향을 미치지 않는 정도인지 구현단계에서 프로그램을 검증해보시길 권장드립니다. 

 

뭐가 맞는건지 잘 모르겠습니다.


 

Q : OpenAPI 사용시 별도의 비용이 부과되나요?

A : OpenAPI는 별도의 비용이 부과되지 않습니다. 영웅문4, 영웅문S 와 동일한 매매 수수료(2023.07 기준 0.015%)가 부과됩니다. 

 


 

Q : 한PC에 API 몇개나 띄울수있나요?

A : 제한을 두진 않습니다. OpenAPI는 동일한ID로의 중복접속을 허용하지 않습니다. 동일한 ID로 모의투자 접속과 실거래 서버 접속은 동시에 가능 합니다. 여러개의 접속 ID를 사용하는 경우 ID를 다르게하여 여러번 실행/접속 할 수 있습니다. (실제로 이렇게 하시는 분들도 주변에 계십니다. 사실...TR조회할 때 이렇게 하면 API제한을 조금 덜 받기도 합니다. 하지만 이건 권장하진 않습니다. 어떠한 에러가 초래될지 예상이 안 될 수 있어서, 실매매에선 사용하지 않는게 좋을 것 같습니다.) 다만 여러번 실행된 OpenAPI 프로그램이 구동중 필요한 파일에 동시에 접근하면서 문제가 발생할 수 있습니다. 여러개의 OpenAPI를 동일PC에서 실행하시는 경우에는 충분한 테스트 및 검증과정을 거치시기 바랍니다. 한PC에서 하나의 OpenAPI실행을 권장 드립니다. 


 

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

 

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

 

성민석 (Minsuk Sung)님의 오픈프로필

인공지능을 공부하는 연구자이자 시스템 트레이딩을 하는 트레이더입니다. 

open.kakao.com

 

728x90
반응형