175 lines
6.4 KiB
Python
175 lines
6.4 KiB
Python
from kiwoom_rest_api.core.base_api import KiwoomBaseAPI
|
|
from typing import Union, Dict, Any, Awaitable
|
|
|
|
class Theme(KiwoomBaseAPI):
|
|
"""한국 주식 테마 관련 API를 제공하는 클래스"""
|
|
|
|
def __init__(
|
|
self,
|
|
base_url: str = None,
|
|
token_manager=None,
|
|
use_async: bool = False,
|
|
resource_url: str = "/api/dostk/thme"
|
|
):
|
|
"""
|
|
Theme 클래스 초기화
|
|
|
|
Args:
|
|
base_url (str, optional): API 기본 URL
|
|
token_manager: 토큰 관리자 객체
|
|
use_async (bool): 비동기 클라이언트 사용 여부 (기본값: False)
|
|
"""
|
|
super().__init__(
|
|
base_url=base_url,
|
|
token_manager=token_manager,
|
|
use_async=use_async,
|
|
resource_url=resource_url
|
|
)
|
|
|
|
|
|
def theme_group_list_request_ka90001(
|
|
self,
|
|
qry_tp: str,
|
|
date_tp: str,
|
|
flu_pl_amt_tp: str,
|
|
stex_tp: str,
|
|
stk_cd: str = "",
|
|
thema_nm: str = "",
|
|
cont_yn: str = "N",
|
|
next_key: str = "",
|
|
) -> dict:
|
|
"""테마그룹별 조회를 요청합니다.
|
|
|
|
Args:
|
|
qry_tp (str): 검색구분 (0:전체검색, 1:테마검색, 2:종목검색)
|
|
date_tp (str): 날짜구분 n일전 (1일 ~ 99일 날짜입력)
|
|
flu_pl_amt_tp (str): 등락수익구분 (1:상위기간수익률, 2:하위기간수익률, 3:상위등락률, 4:하위등락률)
|
|
stex_tp (str): 거래소구분 (1:KRX, 2:NXT, 3:통합)
|
|
stk_cd (str, optional): 검색하려는 종목코드. Defaults to "".
|
|
thema_nm (str, optional): 검색하려는 테마명. Defaults to "".
|
|
cont_yn (str, optional): 연속조회여부. Defaults to "N".
|
|
next_key (str, optional): 연속조회키. Defaults to "".
|
|
|
|
Returns:
|
|
dict: 테마그룹별 데이터
|
|
{
|
|
"thema_grp": list, # 테마그룹별 리스트
|
|
[
|
|
{
|
|
"thema_grp_cd": str, # 테마그룹코드
|
|
"thema_nm": str, # 테마명
|
|
"stk_num": str, # 종목수
|
|
"flu_sig": str, # 등락기호
|
|
"flu_rt": str, # 등락율
|
|
"rising_stk_num": str, # 상승종목수
|
|
"fall_stk_num": str, # 하락종목수
|
|
"dt_prft_rt": str, # 기간수익률
|
|
"main_stk": str, # 주요종목
|
|
}
|
|
],
|
|
"return_code": int, # 응답코드
|
|
"return_msg": str, # 응답메시지
|
|
}
|
|
|
|
Example:
|
|
>>> from kiwoom_rest_api import KiwoomRestAPI
|
|
>>> api = KiwoomRestAPI()
|
|
>>> result = api.sector.theme_group_list_request_ka90001(
|
|
... qry_tp="0",
|
|
... date_tp="10",
|
|
... flu_pl_amt_tp="1",
|
|
... stex_tp="1"
|
|
... )
|
|
>>> print(result)
|
|
"""
|
|
headers = {
|
|
"cont-yn": cont_yn,
|
|
"next-key": next_key,
|
|
"api-id": "ka90001",
|
|
}
|
|
|
|
data = {
|
|
"qry_tp": qry_tp,
|
|
"stk_cd": stk_cd,
|
|
"date_tp": date_tp,
|
|
"thema_nm": thema_nm,
|
|
"flu_pl_amt_tp": flu_pl_amt_tp,
|
|
"stex_tp": stex_tp,
|
|
}
|
|
|
|
return self._execute_request(
|
|
"POST",
|
|
json=data,
|
|
headers=headers,
|
|
)
|
|
|
|
def theme_component_stocks_request_ka90002(
|
|
self,
|
|
thema_grp_cd: str,
|
|
stex_tp: str,
|
|
date_tp: str = "",
|
|
cont_yn: str = "N",
|
|
next_key: str = "",
|
|
) -> dict:
|
|
"""테마구성종목 조회를 요청합니다.
|
|
|
|
Args:
|
|
thema_grp_cd (str): 테마그룹코드 번호
|
|
stex_tp (str): 거래소구분 (1:KRX, 2:NXT, 3:통합)
|
|
date_tp (str, optional): 날짜구분 1일 ~ 99일 날짜입력. Defaults to "".
|
|
cont_yn (str, optional): 연속조회여부. Defaults to "N".
|
|
next_key (str, optional): 연속조회키. Defaults to "".
|
|
|
|
Returns:
|
|
dict: 테마구성종목 데이터
|
|
{
|
|
"flu_rt": str, # 등락률
|
|
"dt_prft_rt": str, # 기간수익률
|
|
"thema_comp_stk": list, # 테마구성종목 리스트
|
|
[
|
|
{
|
|
"stk_cd": str, # 종목코드
|
|
"stk_nm": str, # 종목명
|
|
"cur_prc": str, # 현재가
|
|
"flu_sig": str, # 등락기호
|
|
"pred_pre": str, # 전일대비
|
|
"flu_rt": str, # 등락율
|
|
"acc_trde_qty": str, # 누적거래량
|
|
"sel_bid": str, # 매도호가
|
|
"sel_req": str, # 매도잔량
|
|
"buy_bid": str, # 매수호가
|
|
"buy_req": str, # 매수잔량
|
|
"dt_prft_rt_n": str, # 기간수익률n
|
|
}
|
|
],
|
|
"return_code": int, # 응답코드
|
|
"return_msg": str, # 응답메시지
|
|
}
|
|
|
|
Example:
|
|
>>> from kiwoom_rest_api import KiwoomRestAPI
|
|
>>> api = KiwoomRestAPI()
|
|
>>> result = api.sector.theme_component_stocks_request_ka90002(
|
|
... thema_grp_cd="100",
|
|
... stex_tp="1",
|
|
... date_tp="2"
|
|
... )
|
|
>>> print(result)
|
|
"""
|
|
headers = {
|
|
"cont-yn": cont_yn,
|
|
"next-key": next_key,
|
|
"api-id": "ka90002",
|
|
}
|
|
|
|
data = {
|
|
"date_tp": date_tp,
|
|
"thema_grp_cd": thema_grp_cd,
|
|
"stex_tp": stex_tp,
|
|
}
|
|
|
|
return self._execute_request(
|
|
"POST",
|
|
json=data,
|
|
headers=headers,
|
|
) |