트레이딩

[키움API] KOA StudioSA 톺아보기 - 기타 함수 (종목정보관련 및 특수함수)

성민석 2023. 7. 22. 16:00

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

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

 

이번 포스팅에서는 키움증권API를 이용하여 이외로 많이 쓰이는 종목정보관련 함수와 특수 함수 내용에 대해서 알려드리겠습니다.

 


종목정보관련 함수

제 경우에는 여기에서 가장 많이 쓰는 함수는 GetCodeListByMarket 함수와 GetMasterCodeName 함수입니다. 선물 시스템의 경우에는 추가적으로 GetFutureList 함수까지 쓰긴 하는데, 솔직히 나머지 함수들은 잘 안 쓰긴 합니다. 제가 신용/미수거래를 안하고 옵션거래도 안 하기 때문에 그럴지 모르겠습니다.

 

GetCodeListByMarket ( BSTR sMarket    // 시장구분값 )

주식 시장별 종목코드 리스트를 ';'로 구분해서 전달합니다.

시장구분값을 "" 공백으로하면 전체시장 코드리스트를 전달합니다. 로그인 한 후에 사용할 수 있는 함수입니다.

(제 경우에는 코스피와 코스닥 전체 종목에 대해서 실시간 데이터 수집할 때, 사용하긴 합니다.)

 

해당 함수에서 지원하는 시장구분값 목록입니다.

0 : 코스피 / 10 : 코스닥 / 3 : ELW / 8 : ETF / 50 : KONEX / 4 :  뮤추얼펀드 / 5 : 신주인수권 / 6 : 리츠 / 9 : 하이얼펀드 / 30 : K-OTC

 

GetMasterCodeName( BSTR strCode    // 종목코드 )

종목코드에 해당하는 종목명을 전달합니다. 로그인 한 후에 사용할 수 있는 함수입니다.

말 그대로 종목코드를 입력하면 종목명을 알려줍니다. 예시) 005930 → 삼성전자

입력시 코드 6글자만 넣어주면 됩니다.

 

GetMasterLastPrice(BSTR strCode    // 종목코드)

입력한 종목의 당일 기준가를 전달합니다. 사실상 전일종가입니다.

로그인 한 후에 사용할 수 있는 함수입니다.

 

아래는 미수거래나 신용거래하실 때 사용하셔야할 함수입니다.

GetMasterStockState(BSTR strCode  // 종목코드)

입력한 종목의 증거금 비율, 거래정지, 관리종목, 감리종목, 투자융의종목, 담보대출, 액면분할, 신용가능 여부를 전달합니다.
로그인 한 후에 사용할 수 있는 함수입니다.

 

 

특수 함수

1. 계좌비밀번호 입력창 출력

OpenAPI.KOA_Functions(_T("ShowAccountWindow"), _T(""));// 계좌비밀번호 입력창을 출력한다.

 

2. 접속서버확인

OpenAPI.KOA_Functions(_T("GetServerGubun"), _T(""));// 접속서버 구분을 알려준다.

1 : 모의투자 접속, 나머지 : 실서버 접속

 

3. 주식종목 시장구분, 종목분류등 정보제공

OpenAPI.KOA_Functions(_T("GetMasterStockInfo"), _T("039490"));

호출결과는 입력한 종목에 대한 대분류, 중분류, 업종구분값을 구분자로 연결한 문자열입니다. 구분자는 '|'와 ';'입니다.

예) OpenAPI.KOA_Functions("GetMasterStockInfo", "039490")을 호출하면 시장구분0|거래소;시장구분1|중형주;업종구분|금융업; 이렇게 결과를 얻을 수 있습니다.

 

4. 조검검색 종목코드와 현재가 수신(실시간 조건검색은 사용할수 없음)

조건검색결과에 종목코드와 그 종목의 현재가를 함께 수신하는 방법이며 실시간 조건검색에서는 사용할 수 없고 오직 조건검색에만 사용할수 있습니다. (1회성 조건검색만 가능합니다.)

OpenAPI.KOA_Functions(_T("SetConditionSearchFlag"), _T("AddPrice")); // 현재가 포함하도록 설정

현재가 포함으로 설정시 OnReceiveTrCondition()이벤트에 "종목코드1^현재가1;종목코드2^현재가2;...종목코드n^현재가n"형식으로 전달됨 (저는 최근 시스템에서 이걸 충분히 활용하고 있습니다. 사실 이게 없을 땐 항상 TR요청을 해야했는데, 이거라도 이제 제공해줘서 너무 좋네요)

OpenAPI.KOA_Functions(_T("SetConditionSearchFlag"), _T("DelPrice")); // 현재가 미포함 (원래상태로 전환)

현재가 미포함시 기존처럼 "종목코드1^종목코드2^...종목코드n" 형식으로 전달므로 설정에 따라 수신데이터 처리방법이 달라져야 하므로 주의하셔야 합니다 이 방법은 실시간 조건검색에서는 사용할 수 없고 수신데이터에 현재가가 포함되므로 데이터처리방법을 달리해야 합니다

 

5. 업종코드목록 획득

OpenAPI.KOA_Functions(_T("GetUpjongCode"), _T("0")); // 업종코드요청

두 번째 인자로 사용할 수 있는 값은 0,1,2,4,7 입니다.

0:코스피, 1: 코스닥, 2:KOSPI200, 4:KOSPI100(KOSPI50), 7:KRX100

 

함수반환값은 "시장구분값,업종코드,업종명|시장구분값,업종코드,업종명|...|시장구분값,업종코드,업종명" 형식입니다.

즉 하나의 업종코드는 입력한 시장구분값과 업종코드 그리고 그 업종명이 쉼표(,)로 구분되며 각 업종코드는 '|'로 구분됩니다.

 

6. 업종이름 획득

OpenAPI.KOA_Functions(_T("GetUpjongNameByCode"), _T("업종코드입력"));

 

7. ETF 투자유의 종목 여부 (2020/9/17 적용)

거래소 제도개선으로 ETF/ETN 종목 중 투자유의 종목을 매수주문하는 경우 경고 메세지 창이 출력되도록 기능이 추가 되었습니다. (경고 창 출력 시 주문을 중지/전송 선택 가능합니다.) 주문 함수를 호출하기 전에 특정 종목이 투자유의종목인지 아래와 같은 방법으로 확인할 수 있습니다.

KOA_Functions("IsOrderWarningETF", "종목코드(6자리)")

투자유의 종목인 경우 "1" 값이 리턴, 그렇지 않은 경우 "0" 값 리턴. (ETF가 아닌 종목을 입력시 "0" 값 리턴.)

 

8. 주식 전종목대상 투자유의 종목 여부 (2020/11/26 적용)

거래소 제도개선으로 주식 종목 중 정리매매/단기과열/투자위험/투자경고 종목을 매수주문하는 경우 경고 메세지 창이 출력되도록 기능이 추가 되었습니다. (경고 창 출력 시 주문을 중지/전송 선택 가능합니다.) 주문 함수를 호출하기 전에 특정 종목이 투자유의종목인지 아래와 같은 방법으로 확인할 수 있습니다.

KOA_Functions("IsOrderWarningStock", "종목코드(6자리)")

리턴 값 - "0":해당없음, "2":정리매매, "3":단기과열, "4":투자위험, "5":투자경고

 

9. 상장주식수 구하기 (2021/4/8 적용)

상장주식수를 구하는 GetMasterListedStockCnt 기존 함수 사용시 (위에 종목정보관련 함수) 특정 종목 데이터가 long형을 Overflow 하는 현상이 있습니다. 이에, 상장주식수를 구하는 기능을 신규 추가 합니다. 사용법은 아래와 같습니다.

KOA_Functions("GetMasterListedStockCntEx", "종목코드(6자리)")

 

10. 종목코드로 Market구분 구하기 (2022/3/3 적용)

종목코드 입력으로 해당 종목이 어느 시장에 포함되어 있는지 구하는 기능 서버와의 통신없이 메모리에 상주하는 값을 사용하므로 횟수제한 등은 없습니다. 사용법은 아래와 같습니다.

KOA_Functions("GetStockMarketKind", "종목코드6자리");

리턴값은 문자형으로 아래와 같습니다. "0":코스피, "10":코스닥, "3":ELW, "8":ETF, "4"/"14":뮤추얼펀드, "6"/"16":리츠, "9"/"19":하이일드펀드, "30":제3시장, "60":ETN

(이게 사실 최근에 생겨서 너무 좋은 것 같습니다. 원래는 직접 개발할 때, 따로 처리를 해둬야 GetCodeListByMarket함수를 이용해야 했었는데)


 

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

 

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

 

성민석님의 오픈프로필

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

open.kakao.com

 

728x90
반응형