커서가 망쳐놓은 듯

This commit is contained in:
2026-03-17 12:33:30 +09:00
parent 6fc179f598
commit c2b2b711e0
91 changed files with 45391 additions and 2244 deletions

View File

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,108 @@
from typing import Dict, Optional, Any
from kiwoom_rest_api.core.sync_client import make_request
def get_per_analysis(
market_code: str = "0",
access_token: Optional[str] = None,
) -> Dict[str, Any]:
"""
PER/PBR/배당수익률 (KA-STOCK-010)
Args:
market_code: 시장분류코드 (0:전체, 1:코스피, 2:코스닥)
access_token: OAuth 액세스 토큰
Returns:
PER/PBR/배당수익률 데이터
"""
endpoint = "/stock/per"
params = {
"FID_COND_MRKT_DIV_CODE": market_code,
}
return make_request(
endpoint=endpoint,
params=params,
access_token=access_token,
)
def get_rapid_price_change(
market_code: str = "0",
sort_code: str = "1",
access_token: Optional[str] = None,
) -> Dict[str, Any]:
"""
급등락 종목 (KA-STOCK-009)
Args:
market_code: 시장분류코드 (0:전체, 1:코스피, 2:코스닥)
sort_code: 정렬구분 (1:급등, 2:급락)
access_token: OAuth 액세스 토큰
Returns:
급등락 종목 데이터
"""
endpoint = "/stock/rapid"
params = {
"FID_COND_MRKT_DIV_CODE": market_code,
"FID_INPUT_ISCD": sort_code,
}
return make_request(
endpoint=endpoint,
params=params,
access_token=access_token,
)
def get_price_ranges(
stock_code: str,
access_token: Optional[str] = None,
) -> Dict[str, Any]:
"""
가격 매물대 조회 (KA-STOCK-012)
Args:
stock_code: 종목코드 (6자리)
access_token: OAuth 액세스 토큰
Returns:
가격 매물대 데이터
"""
endpoint = "/stock/price-ranges"
params = {
"FID_COND_MRKT_DIV_CODE": "J",
"FID_INPUT_ISCD": stock_code,
}
return make_request(
endpoint=endpoint,
params=params,
access_token=access_token,
)
def get_stock_trend(
stock_code: str,
access_token: Optional[str] = None,
) -> Dict[str, Any]:
"""
주가 이격도 추이 (KA-STOCK-011)
Args:
stock_code: 종목코드 (6자리)
access_token: OAuth 액세스 토큰
Returns:
주가 이격도 데이터
"""
endpoint = "/stock/trend"
params = {
"FID_COND_MRKT_DIV_CODE": "J",
"FID_INPUT_ISCD": stock_code,
}
return make_request(
endpoint=endpoint,
params=params,
access_token=access_token,
)

View File

@@ -0,0 +1,739 @@
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,
)

View File

@@ -0,0 +1,291 @@
from kiwoom_rest_api.core.base_api import KiwoomBaseAPI
from typing import Union, Dict, Any, Awaitable
class CreditOrder(KiwoomBaseAPI):
"""한국 주식 신용매매 관련 API를 제공하는 클래스"""
def __init__(
self,
base_url: str = None,
token_manager=None,
use_async: bool = False,
resource_url: str = "/api/dostk/crdordr"
):
"""
CreditOrder 클래스 초기화
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 margin_buy_order_request_kt10006(
self,
dmst_stex_tp: str,
stk_cd: str,
ord_qty: str,
trde_tp: str,
ord_uv: str = "",
cond_uv: str = "",
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""신용 매수주문을 요청합니다.
Args:
dmst_stex_tp (str): 국내거래소구분 (KRX, NXT, SOR)
stk_cd (str): 종목코드
ord_qty (str): 주문수량
trde_tp (str): 매매구분 (0:보통, 3:시장가, 5:조건부지정가, 81:장마감후시간외, 61:장시작전시간외, 62:시간외단일가, 6:최유리지정가, 7:최우선지정가, 10:보통(IOC), 13:시장가(IOC), 16:최유리(IOC), 20:보통(FOK), 23:시장가(FOK), 26:최유리(FOK), 28:스톱지정가, 29:중간가, 30:중간가(IOC), 31:중간가(FOK))
ord_uv (str, optional): 주문단가. Defaults to "".
cond_uv (str, optional): 조건단가. Defaults to "".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 신용 매수주문 결과
{
"ord_no": str, # 주문번호
"dmst_stex_tp": str, # 국내거래소구분
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.credit_order.margin_buy_order_request_kt10006(
... dmst_stex_tp="KRX",
... stk_cd="005930",
... ord_qty="1",
... ord_uv="2580",
... trde_tp="0"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt10006",
}
data = {
"dmst_stex_tp": dmst_stex_tp,
"stk_cd": stk_cd,
"ord_qty": ord_qty,
"ord_uv": ord_uv,
"trde_tp": trde_tp,
"cond_uv": cond_uv,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def margin_sell_order_request_kt10007(
self,
dmst_stex_tp: str,
stk_cd: str,
ord_qty: str,
trde_tp: str,
crd_deal_tp: str,
ord_uv: str = "",
crd_loan_dt: str = "",
cond_uv: str = "",
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""신용 매도주문을 요청합니다.
Args:
dmst_stex_tp (str): 국내거래소구분 (KRX, NXT, SOR)
stk_cd (str): 종목코드
ord_qty (str): 주문수량
trde_tp (str): 매매구분 (0:보통, 3:시장가, 5:조건부지정가, 81:장마감후시간외, 61:장시작전시간외, 62:시간외단일가, 6:최유리지정가, 7:최우선지정가, 10:보통(IOC), 13:시장가(IOC), 16:최유리(IOC), 20:보통(FOK), 23:시장가(FOK), 26:최유리(FOK), 28:스톱지정가, 29:중간가, 30:중간가(IOC), 31:중간가(FOK))
crd_deal_tp (str): 신용거래구분 (33:융자, 99:융자합)
ord_uv (str, optional): 주문단가. Defaults to "".
crd_loan_dt (str, optional): 대출일 YYYYMMDD(융자일경우필수). Defaults to "".
cond_uv (str, optional): 조건단가. Defaults to "".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 신용 매도주문 결과
{
"ord_no": str, # 주문번호
"dmst_stex_tp": str, # 국내거래소구분
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.credit_order.margin_sell_order_request_kt10007(
... dmst_stex_tp="KRX",
... stk_cd="005930",
... ord_qty="3",
... ord_uv="6450",
... trde_tp="0",
... crd_deal_tp="99"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt10007",
}
data = {
"dmst_stex_tp": dmst_stex_tp,
"stk_cd": stk_cd,
"ord_qty": ord_qty,
"ord_uv": ord_uv,
"trde_tp": trde_tp,
"crd_deal_tp": crd_deal_tp,
"crd_loan_dt": crd_loan_dt,
"cond_uv": cond_uv,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def margin_modify_order_request_kt10008(
self,
dmst_stex_tp: str,
orig_ord_no: str,
stk_cd: str,
mdfy_qty: str,
mdfy_uv: str,
mdfy_cond_uv: str = "",
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""신용 정정주문을 요청합니다.
Args:
dmst_stex_tp (str): 국내거래소구분 (KRX, NXT, SOR)
orig_ord_no (str): 원주문번호
stk_cd (str): 종목코드
mdfy_qty (str): 정정수량
mdfy_uv (str): 정정단가
mdfy_cond_uv (str, optional): 정정조건단가. Defaults to "".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 신용 정정주문 결과
{
"ord_no": str, # 주문번호
"base_orig_ord_no": str, # 모주문번호
"mdfy_qty": str, # 정정수량
"dmst_stex_tp": str, # 국내거래소구분
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.credit_order.margin_modify_order_request_kt10008(
... dmst_stex_tp="KRX",
... orig_ord_no="0000455",
... stk_cd="005930",
... mdfy_qty="1",
... mdfy_uv="2590"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt10008",
}
data = {
"dmst_stex_tp": dmst_stex_tp,
"orig_ord_no": orig_ord_no,
"stk_cd": stk_cd,
"mdfy_qty": mdfy_qty,
"mdfy_uv": mdfy_uv,
"mdfy_cond_uv": mdfy_cond_uv,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def margin_cancel_order_request_kt10009(
self,
dmst_stex_tp: str,
orig_ord_no: str,
stk_cd: str,
cncl_qty: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""신용 취소주문을 요청합니다.
Args:
dmst_stex_tp (str): 국내거래소구분 (KRX, NXT, SOR)
orig_ord_no (str): 원주문번호
stk_cd (str): 종목코드
cncl_qty (str): 취소수량 ('0' 입력시 잔량 전부 취소)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 신용 취소주문 결과
{
"ord_no": str, # 주문번호
"base_orig_ord_no": str, # 모주문번호
"cncl_qty": str, # 취소수량
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.credit_order.margin_cancel_order_request_kt10009(
... dmst_stex_tp="KRX",
... orig_ord_no="0001615",
... stk_cd="005930",
... cncl_qty="1"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt10009",
}
data = {
"dmst_stex_tp": dmst_stex_tp,
"orig_ord_no": orig_ord_no,
"stk_cd": stk_cd,
"cncl_qty": cncl_qty,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,621 @@
from kiwoom_rest_api.core.base_api import KiwoomBaseAPI
from typing import Union, Dict, Any, Awaitable
class ETF(KiwoomBaseAPI):
"""한국 주식 ETF 관련 API를 제공하는 클래스"""
def __init__(
self,
base_url: str = None,
token_manager=None,
use_async: bool = False,
resource_url: str = "/api/dostk/etf"
):
"""
ETF 클래스 초기화
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 etf_return_rate_request_ka40001(
self,
stock_code: str,
etf_object_index_code: str,
period: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""ETF 수익률을 조회합니다.
Args:
stock_code (str): 종목코드 (6자리)
etf_object_index_code (str): ETF대상지수코드 (3자리)
period (str): 기간
- "0": 1주
- "1": 1달
- "2": 6개월
- "3": 1년
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: ETF 수익률 데이터
{
"etfprft_rt_lst": list, # ETF수익율 리스트
[
{
"etfprft_rt": str, # ETF수익률
"cntr_prft_rt": str, # 체결수익률
"for_netprps_qty": str, # 외인순매수수량
"orgn_netprps_qty": str, # 기관순매수수량
}
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.sector.etf_return_rate_request_ka40001(
... stock_code="069500",
... etf_object_index_code="207",
... period="3"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka40001",
}
data = {
"stk_cd": stock_code,
"etfobjt_idex_cd": etf_object_index_code,
"dt": period,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def etf_stock_info_request_ka40002(
self,
stock_code: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""ETF 종목정보를 조회합니다.
Args:
stock_code (str): 종목코드 (6자리)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: ETF 종목정보 데이터
{
"stk_nm": str, # 종목명
"etfobjt_idex_nm": str, # ETF대상지수명
"wonju_pric": str, # 원주가격
"etftxon_type": str, # ETF과세유형
"etntxon_type": str, # ETN과세유형
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.sector.etf_stock_info_request_ka40002(
... stock_code="069500"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka40002",
}
data = {
"stk_cd": stock_code,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def etf_daily_trend_request_ka40003(
self,
stock_code: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""ETF 일별추이를 조회합니다.
Args:
stock_code (str): 종목코드 (6자리)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: ETF 일별추이 데이터
{
"etfdaly_trnsn": list, # ETF일별추이 리스트
[
{
"cntr_dt": str, # 체결일자
"cur_prc": str, # 현재가
"pre_sig": str, # 대비기호
"pred_pre": str, # 전일대비
"pre_rt": str, # 대비율
"trde_qty": str, # 거래량
"nav": str, # NAV
"acc_trde_prica": str, # 누적거래대금
"navidex_dispty_rt": str, # NAV/지수괴리율
"navetfdispty_rt": str, # NAV/ETF괴리율
"trace_eor_rt": str, # 추적오차율
"trace_cur_prc": str, # 추적현재가
"trace_pred_pre": str, # 추적전일대비
"trace_pre_sig": str, # 추적대비기호
}
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.sector.etf_daily_trend_request_ka40003(
... stock_code="069500"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka40003",
}
data = {
"stk_cd": stock_code,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def etf_overall_market_price_request_ka40004(
self,
tax_type: str = "0",
nav_pre: str = "0",
management_company: str = "0000",
tax_yn: str = "0",
trace_index: str = "0",
exchange_type: str = "1",
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""ETF 전체시세를 조회합니다.
Args:
tax_type (str, optional): 과세유형. Defaults to "0".
- "0": 전체
- "1": 비과세
- "2": 보유기간과세
- "3": 회사형
- "4": 외국
- "5": 비과세해외(보유기간관세)
nav_pre (str, optional): NAV대비. Defaults to "0".
- "0": 전체
- "1": NAV > 전일종가
- "2": NAV < 전일종가
management_company (str, optional): 운용사. Defaults to "0000".
- "0000": 전체
- "3020": KODEX(삼성)
- "3027": KOSEF(키움)
- "3191": TIGER(미래에셋)
- "3228": KINDEX(한국투자)
- "3023": KStar(KB)
- "3022": 아리랑(한화)
- "9999": 기타운용사
tax_yn (str, optional): 과세여부. Defaults to "0".
- "0": 전체
- "1": 과세
- "2": 비과세
trace_index (str, optional): 추적지수. Defaults to "0".
- "0": 전체
exchange_type (str, optional): 거래소구분. Defaults to "1".
- "1": KRX
- "2": NXT
- "3": 통합
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: ETF 전체시세 데이터
{
"etfall_mrpr": list, # ETF전체시세 리스트
[
{
"stk_cd": str, # 종목코드
"stk_cls": str, # 종목분류
"stk_nm": str, # 종목명
"close_pric": str, # 종가
"pre_sig": str, # 대비기호
"pred_pre": str, # 전일대비
"pre_rt": str, # 대비율
"trde_qty": str, # 거래량
"nav": str, # NAV
"trace_eor_rt": str, # 추적오차율
"txbs": str, # 과표기준
"dvid_bf_base": str, # 배당전기준
"pred_dvida": str, # 전일배당금
"trace_idex_nm": str, # 추적지수명
"drng": str, # 배수
"trace_idex_cd": str, # 추적지수코드
"trace_idex": str, # 추적지수
"trace_flu_rt": str, # 추적등락율
}
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.sector.etf_overall_market_price_request_ka40004(
... tax_type="0",
... nav_pre="0",
... management_company="0000",
... tax_yn="0",
... trace_index="0",
... exchange_type="1"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka40004",
}
data = {
"txon_type": tax_type,
"navpre": nav_pre,
"mngmcomp": management_company,
"txon_yn": tax_yn,
"trace_idex": trace_index,
"stex_tp": exchange_type,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def etf_time_segment_trend_request_ka40006(
self,
stock_code: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""ETF 시간대별추이를 조회합니다.
Args:
stock_code (str): 종목코드 (6자리)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: ETF 시간대별추이 데이터
{
"stk_nm": str, # 종목명
"etfobjt_idex_nm": str, # ETF대상지수명
"wonju_pric": str, # 원주가격
"etftxon_type": str, # ETF과세유형
"etntxon_type": str, # ETN과세유형
"etftisl_trnsn": list, # ETF시간대별추이 리스트
[
{
"tm": str, # 시간
"close_pric": str, # 종가
"pre_sig": str, # 대비기호
"pred_pre": str, # 전일대비
"flu_rt": str, # 등락율
"trde_qty": str, # 거래량
"nav": str, # NAV
"trde_prica": str, # 거래대금
"navidex": str, # NAV지수
"navetf": str, # NAVETF
"trace": str, # 추적
"trace_idex": str, # 추적지수
"trace_idex_pred_pre": str, # 추적지수전일대비
"trace_idex_pred_pre_sig": str, # 추적지수전일대비기호
}
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.sector.etf_time_segment_trend_request_ka40006(
... stock_code="069500"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka40006",
}
data = {
"stk_cd": stock_code,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def etf_time_segment_execution_request_ka40007(
self,
stock_code: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""ETF 시간대별체결을 조회합니다.
Args:
stock_code (str): 종목코드 (6자리)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: ETF 시간대별체결 데이터
{
"stk_cls": str, # 종목분류
"stk_nm": str, # 종목명
"etfobjt_idex_nm": str, # ETF대상지수명
"etfobjt_idex_cd": str, # ETF대상지수코드
"objt_idex_pre_rt": str, # 대상지수대비율
"wonju_pric": str, # 원주가격
"etftisl_cntr_array": list, # ETF시간대별체결배열
[
{
"cntr_tm": str, # 체결시간
"cur_prc": str, # 현재가
"pre_sig": str, # 대비기호
"pred_pre": str, # 전일대비
"trde_qty": str, # 거래량
"stex_tp": str, # 거래소구분 (KRX, NXT, 통합)
}
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.sector.etf_time_segment_execution_request_ka40007(
... stock_code="069500"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka40007",
}
data = {
"stk_cd": stock_code,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def etf_datewise_execution_request_ka40008(
self,
stock_code: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""ETF 일자별체결을 조회합니다.
Args:
stock_code (str): 종목코드 (6자리)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: ETF 일자별체결 데이터
{
"cntr_tm": str, # 체결시간
"cur_prc": str, # 현재가
"pre_sig": str, # 대비기호
"pred_pre": str, # 전일대비
"trde_qty": str, # 거래량
"etfnetprps_qty_array": list, # ETF순매수수량배열
[
{
"dt": str, # 일자
"cur_prc_n": str, # 현재가n
"pre_sig_n": str, # 대비기호n
"pred_pre_n": str, # 전일대비n
"acc_trde_qty": str, # 누적거래량
"for_netprps_qty": str, # 외인순매수수량
"orgn_netprps_qty": str, # 기관순매수수량
}
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.sector.etf_datewise_execution_request_ka40008(
... stock_code="069500"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka40008",
}
data = {
"stk_cd": stock_code,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def etf_timewise_execution_request_ka40009(
self,
stock_code: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""ETF 시간대별NAV를 조회합니다.
Args:
stock_code (str): 종목코드 (6자리)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: ETF 시간대별NAV 데이터
{
"etfnavarray": list, # ETFNAV배열
[
{
"nav": str, # NAV
"navpred_pre": str, # NAV전일대비
"navflu_rt": str, # NAV등락율
"trace_eor_rt": str, # 추적오차율
"dispty_rt": str, # 괴리율
"stkcnt": str, # 주식수
"base_pric": str, # 기준가
"for_rmnd_qty": str, # 외인보유수량
"repl_pric": str, # 대용가
"conv_pric": str, # 환산가격
"drstk": str, # DR/주
"wonju_pric": str, # 원주가격
}
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.sector.etf_timewise_execution_request_ka40009(
... stock_code="069500"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka40009",
}
data = {
"stk_cd": stock_code,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def etf_timewise_trend_request_ka40010(
self,
stock_code: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""ETF 시간대별추이를 조회합니다.
Args:
stock_code (str): 종목코드 (6자리)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: ETF 시간대별추이 데이터
{
"etftisl_trnsn": list, # ETF시간대별추이 리스트
[
{
"cur_prc": str, # 현재가
"pre_sig": str, # 대비기호
"pred_pre": str, # 전일대비
"trde_qty": str, # 거래량
"for_netprps": str, # 외인순매수
}
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.sector.etf_timewise_trend_request_ka40010(
... stock_code="069500"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka40010",
}
data = {
"stk_cd": stock_code,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)

View File

@@ -0,0 +1,234 @@
from kiwoom_rest_api.core.base_api import KiwoomBaseAPI
from typing import Union, Dict, Any, Awaitable
class ForeignInstitution(KiwoomBaseAPI):
"""한국 주식 외인 관련 API를 제공하는 클래스"""
def __init__(
self,
base_url: str = None,
token_manager=None,
use_async: bool = False,
resource_url: str = "/api/dostk/frgnistt"
):
"""
ForeignInstitution 클래스 초기화
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 foreign_investor_stockwise_trading_trend_request_ka10008(
self,
stock_code: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""주식 외국인 종목별 매매 동향을 조회합니다.
Args:
stock_code (str): 종목코드 (거래소별 종목코드)
- KRX: 039490
- NXT: 039490_NX
- SOR: 039490_AL
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 주식 외국인 종목별 매매 동향 데이터
{
"stk_frgnr": [
{
"dt": str, # 일자
"close_pric": str, # 종가
"pred_pre": str, # 전일대비
"trde_qty": str, # 거래량
"chg_qty": str, # 변동수량
"poss_stkcnt": str, # 보유주식수
"wght": str, # 비중
"gain_pos_stkcnt": str, # 취득가능주식수
"frgnr_limit": str, # 외국인한도
"frgnr_limit_irds": str, # 외국인한도증감
"limit_exh_rt": str, # 한도소진률
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.foreign_institution.foreign_investor_stockwise_trading_trend_request_ka10008(
... stock_code="005930"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10008",
}
data = {
"stk_cd": stock_code,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def institutional_stock_request_ka10009(
self,
stock_code: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""주식 기관 요청을 조회합니다.
Args:
stock_code (str): 종목코드 (거래소별 종목코드)
- KRX: 039490
- NXT: 039490_NX
- SOR: 039490_AL
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 주식 기관 요청 데이터
{
"date": str, # 날짜
"close_pric": str, # 종가
"pre": str, # 대비
"orgn_dt_acc": str, # 기관기간누적
"orgn_daly_nettrde": str, # 기관일별순매매
"frgnr_daly_nettrde": str, # 외국인일별순매매
"frgnr_qota_rt": str, # 외국인지분율
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.foreign_institution.institutional_stock_request_ka10009(
... stock_code="005930"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10009",
}
data = {
"stk_cd": stock_code,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def institution_foreign_consecutive_trading_status_request_ka10131(
self,
dt: str,
mrkt_tp: str,
netslmt_tp: str = "2",
stk_inds_tp: str = "0",
amt_qty_tp: str = "0",
stex_tp: str = "1",
strt_dt: str = "",
end_dt: str = "",
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""기관외국인연속매매현황을 조회합니다.
Args:
dt (str): 기간 (1:최근일, 3:3일, 5:5일, 10:10일, 20:20일, 120:120일, 0:시작일자/종료일자로 조회)
mrkt_tp (str): 장구분 (001:코스피, 101:코스닥)
netslmt_tp (str, optional): 순매도수구분 (2:순매수(고정값)). Defaults to "2".
stk_inds_tp (str, optional): 종목업종구분 (0:종목(주식),1:업종). Defaults to "0".
amt_qty_tp (str, optional): 금액수량구분 (0:금액, 1:수량). Defaults to "0".
stex_tp (str, optional): 거래소구분 (1:KRX, 2:NXT, 3:통합). Defaults to "1".
strt_dt (str, optional): 시작일자 (YYYYMMDD). Defaults to "".
end_dt (str, optional): 종료일자 (YYYYMMDD). Defaults to "".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 기관외국인연속매매현황 데이터
{
"orgn_frgnr_cont_trde_prst": [
{
"rank": str, # 순위
"stk_cd": str, # 종목코드
"stk_nm": str, # 종목명
"prid_stkpc_flu_rt": str, # 기간중주가등락률
"orgn_nettrde_amt": str, # 기관순매매금액
"orgn_nettrde_qty": str, # 기관순매매량
"orgn_cont_netprps_dys": str, # 기관계연속순매수일수
"orgn_cont_netprps_qty": str, # 기관계연속순매수량
"orgn_cont_netprps_amt": str, # 기관계연속순매수금액
"frgnr_nettrde_qty": str, # 외국인순매매량
"frgnr_nettrde_amt": str, # 외국인순매매액
"frgnr_cont_netprps_dys": str, # 외국인연속순매수일수
"frgnr_cont_netprps_qty": str, # 외국인연속순매수량
"frgnr_cont_netprps_amt": str, # 외국인연속순매수금액
"nettrde_qty": str, # 순매매량
"nettrde_amt": str, # 순매매액
"tot_cont_netprps_dys": str, # 합계연속순매수일수
"tot_cont_nettrde_qty": str, # 합계연속순매매수량
"tot_cont_netprps_amt": str, # 합계연속순매수금액
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.foreign_institution.institution_foreign_consecutive_trading_status_request_ka10131(
... dt="1",
... mrkt_tp="001"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10131",
}
data = {
"dt": dt,
"strt_dt": strt_dt,
"end_dt": end_dt,
"mrkt_tp": mrkt_tp,
"netslmt_tp": netslmt_tp,
"stk_inds_tp": stk_inds_tp,
"amt_qty_tp": amt_qty_tp,
"stex_tp": stex_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)

View File

@@ -0,0 +1,115 @@
from typing import Dict, Optional, Any
from kiwoom_rest_api.core.sync_client import make_request
def get_investor_trend(
stock_code: str,
period: str = "D",
start_date: Optional[str] = None,
end_date: Optional[str] = None,
access_token: Optional[str] = None,
) -> Dict[str, Any]:
"""
투자자별 매매동향 (KA-STOCK-013)
Args:
stock_code: 종목코드 (6자리)
period: 기간분류코드 (D:일봉, W:주봉, M:월봉)
start_date: 조회 시작 날짜 (YYYYMMDD)
end_date: 조회 끝 날짜 (YYYYMMDD)
access_token: OAuth 액세스 토큰
Returns:
투자자별 매매동향 데이터
"""
endpoint = "/stock/investor"
params = {
"FID_COND_MRKT_DIV_CODE": "J",
"FID_INPUT_ISCD": stock_code,
"FID_PERIOD_DIV_CODE": period,
}
if start_date:
params["FID_INPUT_DATE_1"] = start_date
if end_date:
params["FID_INPUT_DATE_2"] = end_date
return make_request(
endpoint=endpoint,
params=params,
access_token=access_token,
)
def get_market_investor_trend(
market_code: str = "0",
period: str = "D",
start_date: Optional[str] = None,
end_date: Optional[str] = None,
access_token: Optional[str] = None,
) -> Dict[str, Any]:
"""
전체 시장별 투자자 매매동향 (KA-STOCK-014)
Args:
market_code: 시장분류코드 (0:전체, 1:코스피, 2:코스닥)
period: 기간분류코드 (D:일봉, W:주봉, M:월봉)
start_date: 조회 시작 날짜 (YYYYMMDD)
end_date: 조회 끝 날짜 (YYYYMMDD)
access_token: OAuth 액세스 토큰
Returns:
시장별 투자자 매매동향 데이터
"""
endpoint = "/stock/investor/market"
params = {
"FID_COND_MRKT_DIV_CODE": market_code,
"FID_PERIOD_DIV_CODE": period,
}
if start_date:
params["FID_INPUT_DATE_1"] = start_date
if end_date:
params["FID_INPUT_DATE_2"] = end_date
return make_request(
endpoint=endpoint,
params=params,
access_token=access_token,
)
def get_program_trading(
market_code: str = "0",
start_date: Optional[str] = None,
end_date: Optional[str] = None,
access_token: Optional[str] = None,
) -> Dict[str, Any]:
"""
프로그램 매매현황 (KA-STOCK-015)
Args:
market_code: 시장분류코드 (0:전체, 1:코스피, 2:코스닥)
start_date: 조회 시작 날짜 (YYYYMMDD)
end_date: 조회 끝 날짜 (YYYYMMDD)
access_token: OAuth 액세스 토큰
Returns:
프로그램 매매현황 데이터
"""
endpoint = "/stock/program"
params = {
"FID_COND_MRKT_DIV_CODE": market_code,
}
if start_date:
params["FID_INPUT_DATE_1"] = start_date
if end_date:
params["FID_INPUT_DATE_2"] = end_date
return make_request(
endpoint=endpoint,
params=params,
access_token=access_token,
)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,317 @@
from kiwoom_rest_api.core.base_api import KiwoomBaseAPI
from typing import Union, Dict, Any, Awaitable
class Order(KiwoomBaseAPI):
"""한국 주식 주문 관련 API를 제공하는 클래스"""
def __init__(
self,
base_url: str = None,
token_manager=None,
use_async: bool = False,
resource_url: str = "/api/dostk/ordr"
):
"""
Order 클래스 초기화
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 stock_buy_order_request_kt10000(
self,
dmst_stex_tp: str,
stk_cd: str,
ord_qty: str,
trde_tp: str,
ord_uv: str = "",
cond_uv: str = "",
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""주식 매수주문을 요청합니다.
Args:
dmst_stex_tp (str): 국내거래소구분 (KRX, NXT, SOR)
stk_cd (str): 종목코드
ord_qty (str): 주문수량
trde_tp (str): 매매구분
- 0: 보통
- 3: 시장가
- 5: 조건부지정가
- 81: 장마감후시간외
- 61: 장시작전시간외
- 62: 시간외단일가
- 6: 최유리지정가
- 7: 최우선지정가
- 10: 보통(IOC)
- 13: 시장가(IOC)
- 16: 최유리(IOC)
- 20: 보통(FOK)
- 23: 시장가(FOK)
- 26: 최유리(FOK)
- 28: 스톱지정가
- 29: 중간가
- 30: 중간가(IOC)
- 31: 중간가(FOK)
ord_uv (str, optional): 주문단가. Defaults to "".
cond_uv (str, optional): 조건단가. Defaults to "".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 주문 응답 데이터
{
"ord_no": str, # 주문번호
"dmst_stex_tp": str, # 국내거래소구분
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.order.stock_buy_order_request_kt10000(
... dmst_stex_tp="KRX",
... stk_cd="005930",
... ord_qty="1",
... trde_tp="3"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt10000",
}
data = {
"dmst_stex_tp": dmst_stex_tp,
"stk_cd": stk_cd,
"ord_qty": ord_qty,
"ord_uv": ord_uv,
"trde_tp": trde_tp,
"cond_uv": cond_uv,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def stock_sell_order_request_kt10001(
self,
dmst_stex_tp: str,
stk_cd: str,
ord_qty: str,
trde_tp: str,
ord_uv: str = "",
cond_uv: str = "",
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""주식 매도주문을 요청합니다.
Args:
dmst_stex_tp (str): 국내거래소구분 (KRX, NXT, SOR)
stk_cd (str): 종목코드
ord_qty (str): 주문수량
trde_tp (str): 매매구분
- 0: 보통
- 3: 시장가
- 5: 조건부지정가
- 81: 장마감후시간외
- 61: 장시작전시간외
- 62: 시간외단일가
- 6: 최유리지정가
- 7: 최우선지정가
- 10: 보통(IOC)
- 13: 시장가(IOC)
- 16: 최유리(IOC)
- 20: 보통(FOK)
- 23: 시장가(FOK)
- 26: 최유리(FOK)
- 28: 스톱지정가
- 29: 중간가
- 30: 중간가(IOC)
- 31: 중간가(FOK)
ord_uv (str, optional): 주문단가. Defaults to "".
cond_uv (str, optional): 조건단가. Defaults to "".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 주문 응답 데이터
{
"ord_no": str, # 주문번호
"dmst_stex_tp": str, # 국내거래소구분
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.order.stock_sell_order_request_kt10001(
... dmst_stex_tp="KRX",
... stk_cd="005930",
... ord_qty="1",
... trde_tp="3"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt10001",
}
data = {
"dmst_stex_tp": dmst_stex_tp,
"stk_cd": stk_cd,
"ord_qty": ord_qty,
"ord_uv": ord_uv,
"trde_tp": trde_tp,
"cond_uv": cond_uv,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def stock_modify_order_request_kt10002(
self,
dmst_stex_tp: str,
orig_ord_no: str,
stk_cd: str,
mdfy_qty: str,
mdfy_uv: str,
mdfy_cond_uv: str = "",
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""주식 정정주문을 요청합니다.
Args:
dmst_stex_tp (str): 국내거래소구분 (KRX, NXT, SOR)
orig_ord_no (str): 원주문번호
stk_cd (str): 종목코드
mdfy_qty (str): 정정수량
mdfy_uv (str): 정정단가
mdfy_cond_uv (str, optional): 정정조건단가. Defaults to "".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 정정주문 응답 데이터
{
"ord_no": str, # 주문번호
"base_orig_ord_no": str, # 모주문번호
"mdfy_qty": str, # 정정수량
"dmst_stex_tp": str, # 국내거래소구분
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.order.stock_modify_order_request_kt10002(
... dmst_stex_tp="KRX",
... orig_ord_no="0000139",
... stk_cd="005930",
... mdfy_qty="1",
... mdfy_uv="199700"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt10002",
}
data = {
"dmst_stex_tp": dmst_stex_tp,
"orig_ord_no": orig_ord_no,
"stk_cd": stk_cd,
"mdfy_qty": mdfy_qty,
"mdfy_uv": mdfy_uv,
"mdfy_cond_uv": mdfy_cond_uv,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def stock_cancel_order_request_kt10003(
self,
dmst_stex_tp: str,
orig_ord_no: str,
stk_cd: str,
cncl_qty: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""주식 취소주문을 요청합니다.
Args:
dmst_stex_tp (str): 국내거래소구분 (KRX, NXT, SOR)
orig_ord_no (str): 원주문번호
stk_cd (str): 종목코드
cncl_qty (str): 취소수량 ('0' 입력시 잔량 전부 취소)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 취소주문 응답 데이터
{
"ord_no": str, # 주문번호
"base_orig_ord_no": str, # 모주문번호
"cncl_qty": str, # 취소수량
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.order.stock_cancel_order_request_kt10003(
... dmst_stex_tp="KRX",
... orig_ord_no="0000140",
... stk_cd="005930",
... cncl_qty="1"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt10003",
}
data = {
"dmst_stex_tp": dmst_stex_tp,
"orig_ord_no": orig_ord_no,
"stk_cd": stk_cd,
"cncl_qty": cncl_qty,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,507 @@
from kiwoom_rest_api.core.base_api import KiwoomBaseAPI
from typing import Union, Dict, Any, Awaitable
class Sector(KiwoomBaseAPI):
"""한국 주식 섹터 관련 API를 제공하는 클래스"""
def __init__(
self,
base_url: str = None,
token_manager=None,
use_async: bool = False,
resource_url: str = "/api/dostk/sect"
):
"""
Sector 클래스 초기화
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 industry_program_trading_request_ka10010(
self,
stock_code: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""업종프로그램매매를 조회합니다.
Args:
stock_code (str): 종목코드 (거래소별 종목코드)
- KRX: 039490
- NXT: 039490_NX
- SOR: 039490_AL
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 업종프로그램매매 데이터
{
"dfrt_trst_sell_qty": str, # 차익위탁매도수량
"dfrt_trst_sell_amt": str, # 차익위탁매도금액
"dfrt_trst_buy_qty": str, # 차익위탁매수수량
"dfrt_trst_buy_amt": str, # 차익위탁매수금액
"dfrt_trst_netprps_qty": str, # 차익위탁순매수수량
"dfrt_trst_netprps_amt": str, # 차익위탁순매수금액
"ndiffpro_trst_sell_qty": str, # 비차익위탁매도수량
"ndiffpro_trst_sell_amt": str, # 비차익위탁매도금액
"ndiffpro_trst_buy_qty": str, # 비차익위탁매수수량
"ndiffpro_trst_buy_amt": str, # 비차익위탁매수금액
"ndiffpro_trst_netprps_qty": str, # 비차익위탁순매수수량
"ndiffpro_trst_netprps_amt": str, # 비차익위탁순매수금액
"all_dfrt_trst_sell_qty": str, # 전체차익위탁매도수량
"all_dfrt_trst_sell_amt": str, # 전체차익위탁매도금액
"all_dfrt_trst_buy_qty": str, # 전체차익위탁매수수량
"all_dfrt_trst_buy_amt": str, # 전체차익위탁매수금액
"all_dfrt_trst_netprps_qty": str, # 전체차익위탁순매수수량
"all_dfrt_trst_netprps_amt": str, # 전체차익위탁순매수금액
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.sector.industry_program_trading_request_ka10010(
... stock_code="005930"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10010",
}
data = {
"stk_cd": stock_code,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def industrywise_investor_net_buy_request_ka10051(
self,
mrkt_tp: str,
amt_qty_tp: str,
stex_tp: str,
base_dt: str = "",
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""업종별투자자순매수를 조회합니다.
Args:
mrkt_tp (str): 시장구분 (코스피:0, 코스닥:1)
amt_qty_tp (str): 금액수량구분 (금액:0, 수량:1)
stex_tp (str): 거래소구분 (1:KRX, 2:NXT, 3:통합)
base_dt (str, optional): 기준일자 (YYYYMMDD). Defaults to "".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 업종별투자자순매수 데이터
{
"inds_netprps": [
{
"inds_cd": str, # 업종코드
"inds_nm": str, # 업종명
"cur_prc": str, # 현재가
"pre_smbol": str, # 대비부호
"pred_pre": str, # 전일대비
"flu_rt": str, # 등락율
"trde_qty": str, # 거래량
"sc_netprps": str, # 증권순매수
"insrnc_netprps": str, # 보험순매수
"invtrt_netprps": str, # 투신순매수
"bank_netprps": str, # 은행순매수
"jnsinkm_netprps": str, # 종신금순매수
"endw_netprps": str, # 기금순매수
"etc_corp_netprps": str, # 기타법인순매수
"ind_netprps": str, # 개인순매수
"frgnr_netprps": str, # 외국인순매수
"native_trmt_frgnr_netprps": str, # 내국인대우외국인순매수
"natn_netprps": str, # 국가순매수
"samo_fund_netprps": str, # 사모펀드순매수
"orgn_netprps": str, # 기관계순매수
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.sector.industrywise_investor_net_buy_request_ka10051(
... mrkt_tp="0",
... amt_qty_tp="0",
... stex_tp="3",
... base_dt="20241107"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10051",
}
data = {
"mrkt_tp": mrkt_tp,
"amt_qty_tp": amt_qty_tp,
"base_dt": base_dt,
"stex_tp": stex_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def industry_current_price_request_ka20001(
self,
mrkt_tp: str,
inds_cd: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""업종현재가를 조회합니다.
Args:
mrkt_tp (str): 시장구분 (0:코스피, 1:코스닥, 2:코스피200)
inds_cd (str): 업종코드
- 001: 종합(KOSPI)
- 002: 대형주
- 003: 중형주
- 004: 소형주
- 101: 종합(KOSDAQ)
- 201: KOSPI200
- 302: KOSTAR
- 701: KRX100
- 나머지 업종코드 참고
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 업종현재가 데이터
{
"cur_prc": str, # 현재가
"pred_pre_sig": str, # 전일대비기호
"pred_pre": str, # 전일대비
"flu_rt": str, # 등락률
"trde_qty": str, # 거래량
"trde_prica": str, # 거래대금
"trde_frmatn_stk_num": str, # 거래형성종목수
"trde_frmatn_rt": str, # 거래형성비율
"open_pric": str, # 시가
"high_pric": str, # 고가
"low_pric": str, # 저가
"upl": str, # 상한
"rising": str, # 상승
"stdns": str, # 보합
"fall": str, # 하락
"lst": str, # 하한
"52wk_hgst_pric": str, # 52주최고가
"52wk_hgst_pric_dt": str, # 52주최고가일
"52wk_hgst_pric_pre_rt": str, # 52주최고가대비율
"52wk_lwst_pric": str, # 52주최저가
"52wk_lwst_pric_dt": str, # 52주최저가일
"52wk_lwst_pric_pre_rt": str, # 52주최저가대비율
"inds_cur_prc_tm": [ # 업종현재가_시간별
{
"tm_n": str, # 시간n
"cur_prc_n": str, # 현재가n
"pred_pre_sig_n": str, # 전일대비기호n
"pred_pre_n": str, # 전일대비n
"flu_rt_n": str, # 등락률n
"trde_qty_n": str, # 거래량n
"acc_trde_qty_n": str, # 누적거래량n
"stex_tp": str, # 거래소구분
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.sector.industry_current_price_request_ka20001(
... mrkt_tp="0",
... inds_cd="001"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka20001",
}
data = {
"mrkt_tp": mrkt_tp,
"inds_cd": inds_cd,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def industrywise_stock_price_request_ka20002(
self,
mrkt_tp: str,
inds_cd: str,
stex_tp: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""업종별주가를 조회합니다.
Args:
mrkt_tp (str): 시장구분 (0:코스피, 1:코스닥, 2:코스피200)
inds_cd (str): 업종코드
- 001: 종합(KOSPI)
- 002: 대형주
- 003: 중형주
- 004: 소형주
- 101: 종합(KOSDAQ)
- 201: KOSPI200
- 302: KOSTAR
- 701: KRX100
- 나머지 업종코드 참고
stex_tp (str): 거래소구분 (1:KRX, 2:NXT, 3:통합)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 업종별주가 데이터
{
"inds_stkpc": [ # 업종별주가
{
"stk_cd": str, # 종목코드
"stk_nm": str, # 종목명
"cur_prc": str, # 현재가
"pred_pre_sig": str, # 전일대비기호
"pred_pre": str, # 전일대비
"flu_rt": str, # 등락률
"now_trde_qty": str, # 현재거래량
"sel_bid": str, # 매도호가
"buy_bid": str, # 매수호가
"open_pric": str, # 시가
"high_pric": str, # 고가
"low_pric": str, # 저가
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.sector.industrywise_stock_price_request_ka20002(
... mrkt_tp="0",
... inds_cd="001",
... stex_tp="1"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka20002",
}
data = {
"mrkt_tp": mrkt_tp,
"inds_cd": inds_cd,
"stex_tp": stex_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def all_industries_index_request_ka20003(
self,
inds_cd: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""전업종지수를 조회합니다.
Args:
inds_cd (str): 업종코드
- 001: 종합(KOSPI)
- 002: 대형주
- 003: 중형주
- 004: 소형주
- 101: 종합(KOSDAQ)
- 201: KOSPI200
- 302: KOSTAR
- 701: KRX100
- 나머지 업종코드 참고
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 전업종지수 데이터
{
"all_inds_idex": [ # 전업종지수
{
"stk_cd": str, # 종목코드
"stk_nm": str, # 종목명
"cur_prc": str, # 현재가
"pre_sig": str, # 대비기호
"pred_pre": str, # 전일대비
"flu_rt": str, # 등락률
"trde_qty": str, # 거래량
"wght": str, # 비중
"trde_prica": str, # 거래대금
"upl": str, # 상한
"rising": str, # 상승
"stdns": str, # 보합
"fall": str, # 하락
"lst": str, # 하한
"flo_stk_num": str, # 상장종목수
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.sector.all_industries_index_request_ka20003(
... inds_cd="001"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka20003",
}
data = {
"inds_cd": inds_cd,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def industry_daily_current_price_request_ka20009(
self,
mrkt_tp: str,
inds_cd: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""업종현재가일별을 조회합니다.
Args:
mrkt_tp (str): 시장구분 (0:코스피, 1:코스닥, 2:코스피200)
inds_cd (str): 업종코드
- 001: 종합(KOSPI)
- 002: 대형주
- 003: 중형주
- 004: 소형주
- 101: 종합(KOSDAQ)
- 201: KOSPI200
- 302: KOSTAR
- 701: KRX100
- 나머지 업종코드 참고
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 업종현재가일별 데이터
{
"cur_prc": str, # 현재가
"pred_pre_sig": str, # 전일대비기호
"pred_pre": str, # 전일대비
"flu_rt": str, # 등락률
"trde_qty": str, # 거래량
"trde_prica": str, # 거래대금
"trde_frmatn_stk_num": str, # 거래형성종목수
"trde_frmatn_rt": str, # 거래형성비율
"open_pric": str, # 시가
"high_pric": str, # 고가
"low_pric": str, # 저가
"upl": str, # 상한
"rising": str, # 상승
"stdns": str, # 보합
"fall": str, # 하락
"lst": str, # 하한
"52wk_hgst_pric": str, # 52주최고가
"52wk_hgst_pric_dt": str, # 52주최고가일
"52wk_hgst_pric_pre_rt": str, # 52주최고가대비율
"52wk_lwst_pric": str, # 52주최저가
"52wk_lwst_pric_dt": str, # 52주최저가일
"52wk_lwst_pric_pre_rt": str, # 52주최저가대비율
"inds_cur_prc_daly_rept": [ # 업종현재가_일별반복
{
"dt_n": str, # 일자n
"cur_prc_n": str, # 현재가n
"pred_pre_sig_n": str, # 전일대비기호n
"pred_pre_n": str, # 전일대비n
"flu_rt_n": str, # 등락률n
"acc_trde_qty_n": str, # 누적거래량n
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.sector.industry_daily_current_price_request_ka20009(
... mrkt_tp="0",
... inds_cd="001"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka20009",
}
data = {
"mrkt_tp": mrkt_tp,
"inds_cd": inds_cd,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)

View File

@@ -0,0 +1,287 @@
from kiwoom_rest_api.core.base_api import KiwoomBaseAPI
from typing import Union, Dict, Any, Awaitable
class SecuritiesLendingAndBorrowing(KiwoomBaseAPI):
"""한국 주식 대차거래 관련 API를 제공하는 클래스"""
def __init__(
self,
base_url: str = None,
token_manager=None,
use_async: bool = False,
resource_url: str = "/api/dostk/slb"
):
"""
SecuritiesLendingAndBorrowing 클래스 초기화
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 stock_lending_trend_request_ka10068(
self,
strt_dt: str = "",
end_dt: str = "",
all_tp: str = "1",
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""대차거래추이를 요청합니다.
Args:
strt_dt (str, optional): 시작일자 (YYYYMMDD). Defaults to "".
end_dt (str, optional): 종료일자 (YYYYMMDD). Defaults to "".
all_tp (str, optional): 전체구분 (1: 전체표시). Defaults to "1".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 대차거래추이 데이터
{
"dbrt_trde_trnsn": list, # 대차거래추이 리스트
[
{
"dt": str, # 일자
"dbrt_trde_cntrcnt": str, # 대차거래체결주수
"dbrt_trde_rpy": str, # 대차거래상환주수
"dbrt_trde_irds": str, # 대차거래증감
"rmnd": str, # 잔고주수
"remn_amt": str, # 잔고금액
}
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.slb.stock_lending_trend_request_ka10068(
... strt_dt="20250401",
... end_dt="20250430",
... all_tp="1"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10068",
}
data = {
"strt_dt": strt_dt,
"end_dt": end_dt,
"all_tp": all_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def top10_stock_lending_request_ka10069(
self,
strt_dt: str,
end_dt: str = "",
mrkt_tp: str = "001",
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""대차거래상위10종목을 요청합니다.
Args:
strt_dt (str): 시작일자 (YYYYMMDD 형식)
end_dt (str, optional): 종료일자 (YYYYMMDD 형식). Defaults to "".
mrkt_tp (str, optional): 시장구분 (001:코스피, 101:코스닥). Defaults to "001".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 대차거래상위10종목 데이터
{
"dbrt_trde_cntrcnt_sum": str, # 대차거래체결주수합
"dbrt_trde_rpy_sum": str, # 대차거래상환주수합
"rmnd_sum": str, # 잔고주수합
"remn_amt_sum": str, # 잔고금액합
"dbrt_trde_cntrcnt_rt": str, # 대차거래체결주수비율
"dbrt_trde_rpy_rt": str, # 대차거래상환주수비율
"rmnd_rt": str, # 잔고주수비율
"remn_amt_rt": str, # 잔고금액비율
"dbrt_trde_upper_10stk": list, # 대차거래상위10종목 리스트
[
{
"stk_nm": str, # 종목명
"stk_cd": str, # 종목코드
"dbrt_trde_cntrcnt": str, # 대차거래체결주수
"dbrt_trde_rpy": str, # 대차거래상환주수
"rmnd": str, # 잔고주수
"remn_amt": str, # 잔고금액
}
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.slb.top10_stock_lending_request_ka10069(
... strt_dt="20241110",
... end_dt="20241125",
... mrkt_tp="001"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10069",
}
data = {
"strt_dt": strt_dt,
"end_dt": end_dt,
"mrkt_tp": mrkt_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def stockwise_lending_trend_request_ka20068(
self,
stk_cd: str,
strt_dt: str = "",
end_dt: str = "",
all_tp: str = "0",
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""종목별 대차거래추이를 요청합니다.
Args:
stk_cd (str): 종목코드
strt_dt (str, optional): 시작일자 (YYYYMMDD). Defaults to "".
end_dt (str, optional): 종료일자 (YYYYMMDD). Defaults to "".
all_tp (str, optional): 전체구분 (0:종목코드 입력종목만 표시). Defaults to "0".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 종목별 대차거래추이 데이터
{
"dbrt_trde_trnsn": list, # 대차거래추이 리스트
[
{
"dt": str, # 일자
"dbrt_trde_cntrcnt": str, # 대차거래체결주수
"dbrt_trde_rpy": str, # 대차거래상환주수
"dbrt_trde_irds": str, # 대차거래증감
"rmnd": str, # 잔고주수
"remn_amt": str, # 잔고금액
}
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.slb.stockwise_lending_trend_request_ka20068(
... stk_cd="005930",
... strt_dt="20250401",
... end_dt="20250430",
... all_tp="0"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka20068",
}
data = {
"stk_cd": stk_cd,
"strt_dt": strt_dt,
"end_dt": end_dt,
"all_tp": all_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def stock_lending_details_request_ka90012(
self,
dt: str,
mrkt_tp: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""대차거래내역을 요청합니다.
Args:
dt (str): 일자 (YYYYMMDD 형식)
mrkt_tp (str): 시장구분 (001:코스피, 101:코스닥)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 대차거래내역 데이터
{
"dbrt_trde_prps": list, # 대차거래내역 리스트
[
{
"stk_nm": str, # 종목명
"stk_cd": str, # 종목코드
"dbrt_trde_cntrcnt": str, # 대차거래체결주수
"dbrt_trde_rpy": str, # 대차거래상환주수
"rmnd": str, # 잔고주수
"remn_amt": str, # 잔고금액
}
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.slb.stock_lending_details_request_ka90012(
... dt="20241101",
... mrkt_tp="101"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka90012",
}
data = {
"dt": dt,
"mrkt_tp": mrkt_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,175 @@
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,
)

View File

@@ -0,0 +1,107 @@
from typing import Dict, Optional, Any
from kiwoom_rest_api.core.sync_client import make_request
def get_trading_volume(
stock_code: str,
access_token: Optional[str] = None,
) -> Dict[str, Any]:
"""
거래량 급증 종목 (KA-STOCK-008)
Args:
stock_code: 종목코드 (6자리)
access_token: OAuth 액세스 토큰
Returns:
거래량 급증 데이터
"""
endpoint = "/stock/volume"
params = {
"FID_COND_MRKT_DIV_CODE": "J",
"FID_INPUT_ISCD": stock_code,
}
return make_request(
endpoint=endpoint,
params=params,
access_token=access_token,
)
def get_execution_price(
stock_code: str,
access_token: Optional[str] = None,
) -> Dict[str, Any]:
"""
체결가 추이 (KA-STOCK-005)
Args:
stock_code: 종목코드 (6자리)
access_token: OAuth 액세스 토큰
Returns:
체결가 추이 데이터
"""
endpoint = "/stock/execution"
params = {
"FID_COND_MRKT_DIV_CODE": "J",
"FID_INPUT_ISCD": stock_code,
}
return make_request(
endpoint=endpoint,
params=params,
access_token=access_token,
)
def get_orderbook(
stock_code: str,
access_token: Optional[str] = None,
) -> Dict[str, Any]:
"""
호가 정보 조회 (KA-STOCK-006)
Args:
stock_code: 종목코드 (6자리)
access_token: OAuth 액세스 토큰
Returns:
호가 정보 데이터
"""
endpoint = "/stock/orderbook"
params = {
"FID_COND_MRKT_DIV_CODE": "J",
"FID_INPUT_ISCD": stock_code,
}
return make_request(
endpoint=endpoint,
params=params,
access_token=access_token,
)
def get_trading_brokers(
stock_code: str,
access_token: Optional[str] = None,
) -> Dict[str, Any]:
"""
거래원 정보 조회 (KA-STOCK-007)
Args:
stock_code: 종목코드 (6자리)
access_token: OAuth 액세스 토큰
Returns:
거래원 정보 데이터
"""
endpoint = "/stock/broker"
params = {
"FID_COND_MRKT_DIV_CODE": "J",
"FID_INPUT_ISCD": stock_code,
}
return make_request(
endpoint=endpoint,
params=params,
access_token=access_token,
)