트레이딩

[키움API] KOA StudioSA 톺아보기 - 조건 검색

성민석 2023. 7. 21. 15:49

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

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

 

지난 포스팅에는 키움API와 관련된 주문과 잔고처리에 대해서 알려드렸습니다.

2023.07.21 - [트레이딩] - [키움API] 주문과 잔고처리 (2) - 잔고처리

 

[키움API] 주문과 잔고처리 (2) - 잔고처리

안녕하세요 성민석입니다. 오늘은 키움증권 API와 관련된 기본 설명과 동작을 설명드릴 예정입니다. 기본적으로 KOA StudioSA에서 제공해주는 내용을 바탕으로 글을 작성해나갈 예정입니다. 여기서

minsuk-sung.tistory.com

이번 포스팅에서는 키움증권API를 이용하여 조건검색 내용에 대해서 알려드리겠습니다. 조건검색을 처음에 활용하는 법이 간단해보이면서도 조금 까다롭긴 합니다. 하지만, 한번 익숙해지고 나면 생각보다 어렵지 않으니 금방 따라하실 수 있습니다. 코드보다 흐름을 익히는데 먼저 집중하시면 좋을 것 같습니다.

 


조건검색 개요

OpenAPI에서 제공하는 조건검색 기능은 영웅문4 HTS에서 작성/저장된 조건식을 불러와 사용하는 방식(HTS도 무조건 같이 설치해서 사용해야합니다.)입니다. 조건검색 수식작성이나 조건식 편집 및 저장은 OpenAPI에서 지원하지 않습니다. 영웅문4 HTS를 통해 편집/저장된 사용자 조건식만 사용 가능합니다. 조건검색 전용 함수와 이벤트가 제공됩니다. 이를 이용해서 조건검색과 실시간 조건검색을 사용할 수 있습니다. 

 

※ 조건검색 요청을 반복하는 방법이 아닌, 실시간 조건검색 사용을 권장합니다.

※ 서버에서 실시간조건검색 준비가 완료되는 시점은 07:30 입니다. SendCondition 조건검색 요청은 07:30 이후에 사용해주시기 바랍니다.

※ 실시간으로 편입되는 종목이 순간적으로 편입/이탈을 반복하는 경우, 서버에따라 결과가 일시적으로 HTS 등과 다를 수 있습니다.

 

 

조건검색 사용법

접속(로그인) 후 GetConditionLoad() 함수를 호출하여 영웅문4를 통해 서버에 저장되어 있는 '내조건식' 들을 요청합니다.

 

 

이에 대한 응답으로 OnReceiveConditionVer() 이벤트가 발생합니다. OnReceiveConditionVer() 이벤트 안에서 GetConditionNameList() 함수를 사용하여 '내조건식' 리스트를 얻습니다. 이중 원하는 조건식으로 조건검색 요청 함수 SendCondition() 를 호출합니다. 이에대한 서버의 응답은 OnReceiveTrCondition() 이벤트로 수신됩니다. 실시간 옵션으로 요청한 경우 해당 조건식에 실시간으로 편입(I)/이탈(D) 되는 종목은 OnReceiveRealCondition() 이벤트로 수신됩니다. (솔직히 일회성 조회를 하셔도 실시간으로 처음부터 요청하시는게 좋을 것 같긴 합니다.)

 

제 시스템에서 조건검색이 발생했을 때 로그를 일부 보여드리면 이런 식으로 진행됩니다. 

 

※ GetConditionNameList 로 구한 조건식 이름과 조건식의 고유 번호를 SendCondition 함수 사용시 정확하게 입력해야 합니다.

 

아래와 같은 방식으로 조건검색이 처리됩니다.

1. GetConditionLoad (사용자 호출) → 2. OnReceiveConditionVer (이벤트 발생) → 3. GetConditionNameList (사용자 호출) → 4. SendCondition (사용자 호출) → 5. OnReceiveTrCondition (이벤트 발생) → 6. OnReceiveRealCondition (이벤트 발생) (단, 처음 요청시 실시간으로 요청하지 않으면 해당 이벤트는 발생하지 않습니다.)

 

조건검색 제한

조건검색 요청은 1초당 5회 조회횟수 제한에 포함됩니다. 동일 조건식에 대한 조건검색 요청은 1분에 1회로 제한됩니다. 조건검색 결과가 100종목을 넘게 되면 해당조건은 실시간 조건검색 신호를 수신(이 부분은 스크린넘버랑도 연관이 있습니다. 개발할 때 주의하시길 바랍니다.)할 수 없습니다. 실시간 조건검색은 최대 10개까지 사용 가능합니다.

 

※ 조건검색 제한에대한 자세한 내용은 하단에 추가합니다. 10개 조건검색식을 한번에 모두 조회하는 프로그램이 있으며 조건검색만 요청한다고 가정해서 설명하면 다음과 같습니다.

----------------------------------------------------------------------------------------------------------------------

첫번째 제한조건 : 1초에 5회만 조회가능

두번째 제한조건 : 조건별 1분당 1회로 제한(실시간 조건검색 수신에는 영향없음)

 

09:00:00  조회 시작

1번부터 5번 조건식은 조회성공(첫번째 제한조건, 두번째 제한조건 모두 만족)

6번부터 10번 조건식은 조회실패(첫번째 제한조건)

 

09:00:01 조회 재시작(1초후 재조회)

1번부터 5번 조건식은 조회실패(두번째 제한조건)

6번부터 10번 조건식은 조회성공(첫번째 제한조건, 두번째 제한조건 모두 만족)

 

... ... ...

 

09:01:00 조회시작 (첫조회 1분후)

1번부터 5번 조건식은 조회성공(첫번째 제한조건, 두번째 제한조건 모두 만족)

6번부터 10번 조건식은 조회실패(첫번째 제한조건)

 

09:00:01 조회 재시작(1분 1초후 재조회)

1번부터 5번 조건식은 조회실패(두번째 제한조건)

6번부터 10번 조건식은 조회성공(첫번째 제한조건, 두번째 제한조건 모두 만족)

----------------------------------------------------------------------------------------------------------------------

 


 

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

 

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

 

성민석님의 오픈프로필

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

open.kakao.com

 

728x90
반응형