커서가 망쳐놓은 듯
This commit is contained in:
0
kiwoom_rest_api/koreanstock/__init__.py
Normal file
0
kiwoom_rest_api/koreanstock/__init__.py
Normal file
2050
kiwoom_rest_api/koreanstock/account.py
Normal file
2050
kiwoom_rest_api/koreanstock/account.py
Normal file
File diff suppressed because it is too large
Load Diff
108
kiwoom_rest_api/koreanstock/analysis.py
Normal file
108
kiwoom_rest_api/koreanstock/analysis.py
Normal 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,
|
||||
)
|
||||
739
kiwoom_rest_api/koreanstock/chart.py
Normal file
739
kiwoom_rest_api/koreanstock/chart.py
Normal 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,
|
||||
)
|
||||
291
kiwoom_rest_api/koreanstock/credit_order.py
Normal file
291
kiwoom_rest_api/koreanstock/credit_order.py
Normal 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,
|
||||
)
|
||||
1113
kiwoom_rest_api/koreanstock/elw.py
Normal file
1113
kiwoom_rest_api/koreanstock/elw.py
Normal file
File diff suppressed because it is too large
Load Diff
621
kiwoom_rest_api/koreanstock/etf.py
Normal file
621
kiwoom_rest_api/koreanstock/etf.py
Normal 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,
|
||||
)
|
||||
234
kiwoom_rest_api/koreanstock/foreign_institution.py
Normal file
234
kiwoom_rest_api/koreanstock/foreign_institution.py
Normal 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,
|
||||
)
|
||||
115
kiwoom_rest_api/koreanstock/investor.py
Normal file
115
kiwoom_rest_api/koreanstock/investor.py
Normal 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,
|
||||
)
|
||||
1111
kiwoom_rest_api/koreanstock/market_condition.py
Normal file
1111
kiwoom_rest_api/koreanstock/market_condition.py
Normal file
File diff suppressed because it is too large
Load Diff
317
kiwoom_rest_api/koreanstock/order.py
Normal file
317
kiwoom_rest_api/koreanstock/order.py
Normal 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,
|
||||
)
|
||||
2311
kiwoom_rest_api/koreanstock/rank_info.py
Normal file
2311
kiwoom_rest_api/koreanstock/rank_info.py
Normal file
File diff suppressed because it is too large
Load Diff
507
kiwoom_rest_api/koreanstock/sector.py
Normal file
507
kiwoom_rest_api/koreanstock/sector.py
Normal 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,
|
||||
)
|
||||
287
kiwoom_rest_api/koreanstock/slb.py
Normal file
287
kiwoom_rest_api/koreanstock/slb.py
Normal 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,
|
||||
)
|
||||
1608
kiwoom_rest_api/koreanstock/stockinfo.py
Normal file
1608
kiwoom_rest_api/koreanstock/stockinfo.py
Normal file
File diff suppressed because it is too large
Load Diff
175
kiwoom_rest_api/koreanstock/theme.py
Normal file
175
kiwoom_rest_api/koreanstock/theme.py
Normal 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,
|
||||
)
|
||||
107
kiwoom_rest_api/koreanstock/trading.py
Normal file
107
kiwoom_rest_api/koreanstock/trading.py
Normal 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,
|
||||
)
|
||||
Reference in New Issue
Block a user