Files
kis_bot/kiwoom_rest_api/koreanstock/chart.py
2026-03-17 12:33:30 +09:00

739 lines
26 KiB
Python

from kiwoom_rest_api.core.base_api import KiwoomBaseAPI
from typing import Union, Dict, Any, Awaitable
class Chart(KiwoomBaseAPI):
"""한국 주식 섹터 관련 API를 제공하는 클래스"""
def __init__(
self,
base_url: str = None,
token_manager=None,
use_async: bool = False,
resource_url: str = "/api/dostk/chart"
):
"""
Chart 클래스 초기화
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 stockwise_investor_institution_chart_request_ka10060(
self,
dt: str,
stk_cd: str,
amt_qty_tp: str,
trde_tp: str,
unit_tp: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
종목별투자자기관별차트요청 (ka10060)
Args:
dt (str): 일자 (YYYYMMDD)
stk_cd (str): 종목코드
amt_qty_tp (str): 금액수량구분 (1:금액, 2:수량)
trde_tp (str): 매매구분 (0:순매수, 1:매수, 2:매도)
unit_tp (str): 단위구분 (1000:천주, 1:단주)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 종목별투자자기관별차트 데이터
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10060",
}
data = {
"dt": dt,
"stk_cd": stk_cd,
"amt_qty_tp": amt_qty_tp,
"trde_tp": trde_tp,
"unit_tp": unit_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def intraday_investor_trading_chart_request_ka10064(
self,
mrkt_tp: str,
amt_qty_tp: str,
trde_tp: str,
stk_cd: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
장중투자자별매매차트요청 (ka10064)
Args:
mrkt_tp (str): 시장구분 (000:전체, 001:코스피, 101:코스닥)
amt_qty_tp (str): 금액수량구분 (1:금액, 2:수량)
trde_tp (str): 매매구분 (0:순매수, 1:매수, 2:매도)
stk_cd (str): 종목코드
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 장중투자자별매매차트 데이터
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10064",
}
data = {
"mrkt_tp": mrkt_tp,
"amt_qty_tp": amt_qty_tp,
"trde_tp": trde_tp,
"stk_cd": stk_cd,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def stock_tick_chart_request_ka10079(
self,
stk_cd: str,
tic_scope: str,
upd_stkpc_tp: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
주식틱차트조회요청 (ka10079)
Args:
stk_cd (str): 종목코드 (거래소별 종목코드 KRX:039490,NXT:039490_NX,SOR:039490_AL)
tic_scope (str): 틱범위 (1:1틱, 3:3틱, 5:5틱, 10:10틱, 30:30틱)
upd_stkpc_tp (str): 수정주가구분 (0 or 1)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 주식틱차트 데이터
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10079",
}
data = {
"stk_cd": stk_cd,
"tic_scope": tic_scope,
"upd_stkpc_tp": upd_stkpc_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def stock_minute_chart_request_ka10080(
self,
stk_cd: str,
tic_scope: str,
upd_stkpc_tp: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
주식분봉차트조회요청 (ka10080)
Args:
stk_cd (str): 종목코드 (거래소별 종목코드 KRX:039490,NXT:039490_NX,SOR:039490_AL)
tic_scope (str): 틱범위 (1:1분, 3:3분, 5:5분, 10:10분, 15:15분, 30:30분, 45:45분, 60:60분)
upd_stkpc_tp (str): 수정주가구분 (0 or 1)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 주식분봉차트 데이터
- stk_cd (str): 종목코드
- stk_min_pole_chart_qry (list): 주식분봉차트조회 데이터 리스트
- cur_prc (str): 현재가
- trde_qty (str): 거래량
- cntr_tm (str): 체결시간
- open_pric (str): 시가
- high_pric (str): 고가
- low_pric (str): 저가
- upd_stkpc_tp (str): 수정주가구분
- upd_rt (str): 수정비율
- bic_inds_tp (str): 대업종구분
- sm_inds_tp (str): 소업종구분
- stk_infr (str): 종목정보
- upd_stkpc_event (str): 수정주가이벤트
- pred_close_pric (str): 전일종가
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10080",
}
data = {
"stk_cd": stk_cd,
"tic_scope": tic_scope,
"upd_stkpc_tp": upd_stkpc_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def stock_daily_chart_request_ka10081(
self,
stk_cd: str,
base_dt: str,
upd_stkpc_tp: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
주식일봉차트조회요청 (ka10081)
Args:
stk_cd (str): 종목코드 (거래소별 종목코드 KRX:039490,NXT:039490_NX,SOR:039490_AL)
base_dt (str): 기준일자 (YYYYMMDD)
upd_stkpc_tp (str): 수정주가구분 (0 or 1)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 주식일봉차트 데이터
- stk_cd (str): 종목코드
- stk_dt_pole_chart_qry (list): 주식일봉차트조회 데이터 리스트
- cur_prc (str): 현재가
- trde_qty (str): 거래량
- trde_prica (str): 거래대금
- dt (str): 일자
- open_pric (str): 시가
- high_pric (str): 고가
- low_pric (str): 저가
- upd_stkpc_tp (str): 수정주가구분
- upd_rt (str): 수정비율
- bic_inds_tp (str): 대업종구분
- sm_inds_tp (str): 소업종구분
- stk_infr (str): 종목정보
- upd_stkpc_event (str): 수정주가이벤트
- pred_close_pric (str): 전일종가
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10081",
}
data = {
"stk_cd": stk_cd,
"base_dt": base_dt,
"upd_stkpc_tp": upd_stkpc_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def stock_weekly_chart_request_ka10082(
self,
stk_cd: str,
base_dt: str,
upd_stkpc_tp: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
주식주봉차트조회요청 (ka10082)
Args:
stk_cd (str): 종목코드 (거래소별 종목코드 KRX:039490,NXT:039490_NX,SOR:039490_AL)
base_dt (str): 기준일자 (YYYYMMDD)
upd_stkpc_tp (str): 수정주가구분 (0 or 1)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 주식주봉차트 데이터
- stk_cd (str): 종목코드
- stk_stk_pole_chart_qry (list): 주식주봉차트조회 데이터 리스트
- cur_prc (str): 현재가
- trde_qty (str): 거래량
- trde_prica (str): 거래대금
- dt (str): 일자
- open_pric (str): 시가
- high_pric (str): 고가
- low_pric (str): 저가
- upd_stkpc_tp (str): 수정주가구분 (1:유상증자, 2:무상증자, 4:배당락, 8:액면분할, 16:액면병합, 32:기업합병, 64:감자, 256:권리락)
- upd_rt (str): 수정비율
- bic_inds_tp (str): 대업종구분
- sm_inds_tp (str): 소업종구분
- stk_infr (str): 종목정보
- upd_stkpc_event (str): 수정주가이벤트
- pred_close_pric (str): 전일종가
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10082",
}
data = {
"stk_cd": stk_cd,
"base_dt": base_dt,
"upd_stkpc_tp": upd_stkpc_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def stock_monthly_chart_request_ka10083(
self,
stk_cd: str,
base_dt: str,
upd_stkpc_tp: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
주식월봉차트조회요청 (ka10083)
Args:
stk_cd (str): 종목코드 (거래소별 종목코드 KRX:039490,NXT:039490_NX,SOR:039490_AL)
base_dt (str): 기준일자 (YYYYMMDD)
upd_stkpc_tp (str): 수정주가구분 (0 or 1)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 주식월봉차트 데이터
- stk_cd (str): 종목코드
- stk_mth_pole_chart_qry (list): 주식월봉차트조회 데이터 리스트
- cur_prc (str): 현재가
- trde_qty (str): 거래량
- trde_prica (str): 거래대금
- dt (str): 일자
- open_pric (str): 시가
- high_pric (str): 고가
- low_pric (str): 저가
- upd_stkpc_tp (str): 수정주가구분 (1:유상증자, 2:무상증자, 4:배당락, 8:액면분할, 16:액면병합, 32:기업합병, 64:감자, 256:권리락)
- upd_rt (str): 수정비율
- bic_inds_tp (str): 대업종구분
- sm_inds_tp (str): 소업종구분
- stk_infr (str): 종목정보
- upd_stkpc_event (str): 수정주가이벤트
- pred_close_pric (str): 전일종가
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10083",
}
data = {
"stk_cd": stk_cd,
"base_dt": base_dt,
"upd_stkpc_tp": upd_stkpc_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def stock_yearly_chart_request_ka10094(
self,
stk_cd: str,
base_dt: str,
upd_stkpc_tp: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
주식년봉차트조회요청 (ka10094)
Args:
stk_cd (str): 종목코드 (거래소별 종목코드 KRX:039490,NXT:039490_NX,SOR:039490_AL)
base_dt (str): 기준일자 (YYYYMMDD)
upd_stkpc_tp (str): 수정주가구분 (0 or 1)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 주식년봉차트 데이터
- stk_cd (str): 종목코드
- stk_yr_pole_chart_qry (list): 주식년봉차트조회 데이터 리스트
- cur_prc (str): 현재가
- trde_qty (str): 거래량
- trde_prica (str): 거래대금
- dt (str): 일자
- open_pric (str): 시가
- high_pric (str): 고가
- low_pric (str): 저가
- upd_stkpc_tp (str): 수정주가구분 (1:유상증자, 2:무상증자, 4:배당락, 8:액면분할, 16:액면병합, 32:기업합병, 64:감자, 256:권리락)
- upd_rt (str): 수정비율
- bic_inds_tp (str): 대업종구분
- sm_inds_tp (str): 소업종구분
- stk_infr (str): 종목정보
- upd_stkpc_event (str): 수정주가이벤트
- pred_close_pric (str): 전일종가
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10094",
}
data = {
"stk_cd": stk_cd,
"base_dt": base_dt,
"upd_stkpc_tp": upd_stkpc_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def industry_tick_chart_request_ka20004(
self,
inds_cd: str,
tic_scope: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
업종틱차트조회요청 (ka20004)
Args:
inds_cd (str): 업종코드
- 001: 종합(KOSPI)
- 002: 대형주
- 003: 중형주
- 004: 소형주
- 101: 종합(KOSDAQ)
- 201: KOSPI200
- 302: KOSTAR
- 701: KRX100
tic_scope (str): 틱범위 (1:1틱, 3:3틱, 5:5틱, 10:10틱, 30:30틱)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 업종틱차트 데이터
- inds_cd (str): 업종코드
- inds_tic_chart_qry (list): 업종틱차트조회 데이터 리스트
- cur_prc (str): 현재가
- trde_qty (str): 거래량
- cntr_tm (str): 체결시간
- open_pric (str): 시가
- high_pric (str): 고가
- low_pric (str): 저가
- bic_inds_tp (str): 대업종구분
- sm_inds_tp (str): 소업종구분
- stk_infr (str): 종목정보
- pred_close_pric (str): 전일종가
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka20004",
}
data = {
"inds_cd": inds_cd,
"tic_scope": tic_scope,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def industry_minute_chart_request_ka20005(
self,
inds_cd: str,
tic_scope: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
업종분봉조회요청 (ka20005)
Args:
inds_cd (str): 업종코드
- 001: 종합(KOSPI)
- 002: 대형주
- 003: 중형주
- 004: 소형주
- 101: 종합(KOSDAQ)
- 201: KOSPI200
- 302: KOSTAR
- 701: KRX100
tic_scope (str): 틱범위 (1:1분, 3:3분, 5:5분, 10:10분, 15:15분, 30:30분, 45:45분, 60:60분)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 업종분봉차트 데이터
- inds_cd (str): 업종코드
- inds_min_pole_qry (list): 업종분봉조회 데이터 리스트
- cur_prc (str): 현재가
- trde_qty (str): 거래량
- cntr_tm (str): 체결시간
- open_pric (str): 시가
- high_pric (str): 고가
- low_pric (str): 저가
- bic_inds_tp (str): 대업종구분
- sm_inds_tp (str): 소업종구분
- stk_infr (str): 종목정보
- pred_close_pric (str): 전일종가
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka20005",
}
data = {
"inds_cd": inds_cd,
"tic_scope": tic_scope,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def industry_daily_chart_request_ka20006(
self,
inds_cd: str,
base_dt: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
업종일봉조회요청 (ka20006)
Args:
inds_cd (str): 업종코드
- 001: 종합(KOSPI)
- 002: 대형주
- 003: 중형주
- 004: 소형주
- 101: 종합(KOSDAQ)
- 201: KOSPI200
- 302: KOSTAR
- 701: KRX100
base_dt (str): 기준일자 (YYYYMMDD)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 업종일봉차트 데이터
- inds_cd (str): 업종코드
- inds_dt_pole_qry (list): 업종일봉조회 데이터 리스트
- cur_prc (str): 현재가
- trde_qty (str): 거래량
- dt (str): 일자
- open_pric (str): 시가
- high_pric (str): 고가
- low_pric (str): 저가
- trde_prica (str): 거래대금
- bic_inds_tp (str): 대업종구분
- sm_inds_tp (str): 소업종구분
- stk_infr (str): 종목정보
- pred_close_pric (str): 전일종가
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka20006",
}
data = {
"inds_cd": inds_cd,
"base_dt": base_dt,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def industry_weekly_chart_request_ka20007(
self,
inds_cd: str,
base_dt: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
업종주봉조회요청 (ka20007)
Args:
inds_cd (str): 업종코드
- 001: 종합(KOSPI)
- 002: 대형주
- 003: 중형주
- 004: 소형주
- 101: 종합(KOSDAQ)
- 201: KOSPI200
- 302: KOSTAR
- 701: KRX100
base_dt (str): 기준일자 (YYYYMMDD)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 업종주봉차트 데이터
- inds_cd (str): 업종코드
- inds_stk_pole_qry (list): 업종주봉조회 데이터 리스트
- cur_prc (str): 현재가
- trde_qty (str): 거래량
- dt (str): 일자
- open_pric (str): 시가
- high_pric (str): 고가
- low_pric (str): 저가
- trde_prica (str): 거래대금
- bic_inds_tp (str): 대업종구분
- sm_inds_tp (str): 소업종구분
- stk_infr (str): 종목정보
- pred_close_pric (str): 전일종가
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka20007",
}
data = {
"inds_cd": inds_cd,
"base_dt": base_dt,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def industry_monthly_chart_request_ka20008(
self,
inds_cd: str,
base_dt: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
업종월봉조회요청 (ka20008)
Args:
inds_cd (str): 업종코드
- 001: 종합(KOSPI)
- 002: 대형주
- 003: 중형주
- 004: 소형주
- 101: 종합(KOSDAQ)
- 201: KOSPI200
- 302: KOSTAR
- 701: KRX100
base_dt (str): 기준일자 (YYYYMMDD)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 업종월봉차트 데이터
- inds_cd (str): 업종코드
- inds_mth_pole_qry (list): 업종월봉조회 데이터 리스트
- cur_prc (str): 현재가
- trde_qty (str): 거래량
- dt (str): 일자
- open_pric (str): 시가
- high_pric (str): 고가
- low_pric (str): 저가
- trde_prica (str): 거래대금
- bic_inds_tp (str): 대업종구분
- sm_inds_tp (str): 소업종구분
- stk_infr (str): 종목정보
- pred_close_pric (str): 전일종가
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka20008",
}
data = {
"inds_cd": inds_cd,
"base_dt": base_dt,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def industry_yearly_chart_request_ka20019(
self,
inds_cd: str,
base_dt: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
업종년봉조회요청 (ka20019)
Args:
inds_cd (str): 업종코드
- 001: 종합(KOSPI)
- 002: 대형주
- 003: 중형주
- 004: 소형주
- 101: 종합(KOSDAQ)
- 201: KOSPI200
- 302: KOSTAR
- 701: KRX100
base_dt (str): 기준일자 (YYYYMMDD)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 업종년봉차트 데이터
- inds_cd (str): 업종코드
- inds_yr_pole_qry (list): 업종년봉조회 데이터 리스트
- cur_prc (str): 현재가
- trde_qty (str): 거래량
- dt (str): 일자
- open_pric (str): 시가
- high_pric (str): 고가
- low_pric (str): 저가
- trde_prica (str): 거래대금
- bic_inds_tp (str): 대업종구분
- sm_inds_tp (str): 소업종구분
- stk_infr (str): 종목정보
- pred_close_pric (str): 전일종가
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka20019",
}
data = {
"inds_cd": inds_cd,
"base_dt": base_dt,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)