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

2311 lines
82 KiB
Python

from kiwoom_rest_api.core.base_api import KiwoomBaseAPI
from typing import Union, Dict, Any, Awaitable
class RankInfo(KiwoomBaseAPI):
"""한국 주식 랭크 정보 API를 제공하는 클래스"""
def __init__(
self,
base_url: str = None,
token_manager=None,
use_async: bool = False,
resource_url: str = "/api/dostk/rkinfo"
):
"""
RankInfo 클래스 초기화
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 top_order_book_volume_request_ka10020(
self,
mrkt_tp: str,
sort_tp: str,
trde_qty_tp: str,
stk_cnd: str,
crd_cnd: str,
stex_tp: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""호가잔량상위를 조회합니다.
Args:
mrkt_tp (str): 시장구분 (001:코스피, 101:코스닥)
sort_tp (str): 정렬구분
- 1: 순매수잔량순
- 2: 순매도잔량순
- 3: 매수비율순
- 4: 매도비율순
trde_qty_tp (str): 거래량구분
- 0000: 장시작전(0주이상)
- 0010: 만주이상
- 0050: 5만주이상
- 00100: 10만주이상
stk_cnd (str): 종목조건
- 0: 전체조회
- 1: 관리종목제외
- 5: 증100제외
- 6: 증100만보기
- 7: 증40만보기
- 8: 증30만보기
- 9: 증20만보기
crd_cnd (str): 신용조건
- 0: 전체조회
- 1: 신용융자A군
- 2: 신용융자B군
- 3: 신용융자C군
- 4: 신용융자D군
- 9: 신용융자전체
stex_tp (str): 거래소구분 (1:KRX, 2:NXT, 3:통합)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 호가잔량상위 데이터
{
"bid_req_upper": [ # 호가잔량상위
{
"stk_cd": str, # 종목코드
"stk_nm": str, # 종목명
"cur_prc": str, # 현재가
"pred_pre_sig": str, # 전일대비기호
"pred_pre": str, # 전일대비
"trde_qty": str, # 거래량
"tot_sel_req": str, # 총매도잔량
"tot_buy_req": str, # 총매수잔량
"netprps_req": str, # 순매수잔량
"buy_rt": str, # 매수비율
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.top_order_book_volume_request_ka10020(
... mrkt_tp="001",
... sort_tp="1",
... trde_qty_tp="0000",
... stk_cnd="0",
... crd_cnd="0",
... stex_tp="1"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10020",
}
data = {
"mrkt_tp": mrkt_tp,
"sort_tp": sort_tp,
"trde_qty_tp": trde_qty_tp,
"stk_cnd": stk_cnd,
"crd_cnd": crd_cnd,
"stex_tp": stex_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def sudden_increase_order_book_volume_request_ka10021(
self,
mrkt_tp: str,
trde_tp: str,
sort_tp: str,
tm_tp: str,
trde_qty_tp: str,
stk_cnd: str,
stex_tp: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""호가잔량급증을 조회합니다.
Args:
mrkt_tp (str): 시장구분 (001:코스피, 101:코스닥)
trde_tp (str): 매매구분
- 1: 매수잔량
- 2: 매도잔량
sort_tp (str): 정렬구분
- 1: 급증량
- 2: 급증률
tm_tp (str): 시간구분 (분 입력)
trde_qty_tp (str): 거래량구분
- 1: 천주이상
- 5: 5천주이상
- 10: 만주이상
- 50: 5만주이상
- 100: 10만주이상
stk_cnd (str): 종목조건
- 0: 전체조회
- 1: 관리종목제외
- 5: 증100제외
- 6: 증100만보기
- 7: 증40만보기
- 8: 증30만보기
- 9: 증20만보기
stex_tp (str): 거래소구분 (1:KRX, 2:NXT, 3:통합)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 호가잔량급증 데이터
{
"bid_req_sdnin": [ # 호가잔량급증
{
"stk_cd": str, # 종목코드
"stk_nm": str, # 종목명
"cur_prc": str, # 현재가
"pred_pre_sig": str, # 전일대비기호
"pred_pre": str, # 전일대비
"int": str, # 기준률
"now": str, # 현재
"sdnin_qty": str, # 급증수량
"sdnin_rt": str, # 급증률
"tot_buy_qty": str, # 총매수량
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.sudden_increase_order_book_volume_request_ka10021(
... mrkt_tp="001",
... trde_tp="1",
... sort_tp="1",
... tm_tp="30",
... trde_qty_tp="1",
... stk_cnd="0",
... stex_tp="3"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10021",
}
data = {
"mrkt_tp": mrkt_tp,
"trde_tp": trde_tp,
"sort_tp": sort_tp,
"tm_tp": tm_tp,
"trde_qty_tp": trde_qty_tp,
"stk_cnd": stk_cnd,
"stex_tp": stex_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def sudden_increase_order_ratio_request_ka10022(
self,
mrkt_tp: str,
rt_tp: str,
tm_tp: str,
trde_qty_tp: str,
stk_cnd: str,
stex_tp: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""잔량율급증을 조회합니다.
Args:
mrkt_tp (str): 시장구분 (001:코스피, 101:코스닥)
rt_tp (str): 비율구분
- 1: 매수/매도비율
- 2: 매도/매수비율
tm_tp (str): 시간구분 (분 입력)
trde_qty_tp (str): 거래량구분
- 5: 5천주이상
- 10: 만주이상
- 50: 5만주이상
- 100: 10만주이상
stk_cnd (str): 종목조건
- 0: 전체조회
- 1: 관리종목제외
- 5: 증100제외
- 6: 증100만보기
- 7: 증40만보기
- 8: 증30만보기
- 9: 증20만보기
stex_tp (str): 거래소구분 (1:KRX, 2:NXT, 3:통합)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 잔량율급증 데이터
{
"req_rt_sdnin": [ # 잔량율급증
{
"stk_cd": str, # 종목코드
"stk_nm": str, # 종목명
"cur_prc": str, # 현재가
"pred_pre_sig": str, # 전일대비기호
"pred_pre": str, # 전일대비
"int": str, # 기준률
"now_rt": str, # 현재비율
"sdnin_rt": str, # 급증률
"tot_sel_req": str, # 총매도잔량
"tot_buy_req": str, # 총매수잔량
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.sudden_increase_order_ratio_request_ka10022(
... mrkt_tp="001",
... rt_tp="1",
... tm_tp="1",
... trde_qty_tp="5",
... stk_cnd="0",
... stex_tp="3"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10022",
}
data = {
"mrkt_tp": mrkt_tp,
"rt_tp": rt_tp,
"tm_tp": tm_tp,
"trde_qty_tp": trde_qty_tp,
"stk_cnd": stk_cnd,
"stex_tp": stex_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def sudden_increase_trading_volume_request_ka10023(
self,
mrkt_tp: str,
sort_tp: str,
tm_tp: str,
trde_qty_tp: str,
stk_cnd: str,
pric_tp: str,
stex_tp: str,
tm: str = "",
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""거래량급증을 조회합니다.
Args:
mrkt_tp (str): 시장구분
- 000: 전체
- 001: 코스피
- 101: 코스닥
sort_tp (str): 정렬구분
- 1: 급증량
- 2: 급증률
- 3: 급감량
- 4: 급감률
tm_tp (str): 시간구분
- 1: 분
- 2: 전일
trde_qty_tp (str): 거래량구분
- 5: 5천주이상
- 10: 만주이상
- 50: 5만주이상
- 100: 10만주이상
- 200: 20만주이상
- 300: 30만주이상
- 500: 50만주이상
- 1000: 백만주이상
stk_cnd (str): 종목조건
- 0: 전체조회
- 1: 관리종목제외
- 3: 우선주제외
- 11: 정리매매종목제외
- 4: 관리종목,우선주제외
- 5: 증100제외
- 6: 증100만보기
- 13: 증60만보기
- 12: 증50만보기
- 7: 증40만보기
- 8: 증30만보기
- 9: 증20만보기
- 17: ETN제외
- 14: ETF제외
- 18: ETF+ETN제외
- 15: 스팩제외
- 20: ETF+ETN+스팩제외
pric_tp (str): 가격구분
- 0: 전체조회
- 2: 5만원이상
- 5: 1만원이상
- 6: 5천원이상
- 8: 1천원이상
- 9: 10만원이상
stex_tp (str): 거래소구분 (1:KRX, 2:NXT, 3:통합)
tm (str, optional): 시간(분 입력). Defaults to "".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 거래량급증 데이터
{
"trde_qty_sdnin": [ # 거래량급증
{
"stk_cd": str, # 종목코드
"stk_nm": str, # 종목명
"cur_prc": str, # 현재가
"pred_pre_sig": str, # 전일대비기호
"pred_pre": str, # 전일대비
"flu_rt": str, # 등락률
"prev_trde_qty": str, # 이전거래량
"now_trde_qty": str, # 현재거래량
"sdnin_qty": str, # 급증량
"sdnin_rt": str, # 급증률
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.sudden_increase_trading_volume_request_ka10023(
... mrkt_tp="000",
... sort_tp="1",
... tm_tp="2",
... trde_qty_tp="5",
... stk_cnd="0",
... pric_tp="0",
... stex_tp="3"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10023",
}
data = {
"mrkt_tp": mrkt_tp,
"sort_tp": sort_tp,
"tm_tp": tm_tp,
"trde_qty_tp": trde_qty_tp,
"tm": tm,
"stk_cnd": stk_cnd,
"pric_tp": pric_tp,
"stex_tp": stex_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def top_day_over_day_change_rate_request_ka10027(
self,
mrkt_tp: str,
sort_tp: str,
trde_qty_cnd: str,
stk_cnd: str,
crd_cnd: str,
updown_incls: str,
pric_cnd: str,
trde_prica_cnd: str,
stex_tp: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""전일대비 등락률 상위 종목을 조회합니다.
Args:
mrkt_tp (str): 시장구분
- 000: 전체
- 001: 코스피
- 101: 코스닥
sort_tp (str): 정렬구분
- 1: 상승률
- 2: 상승폭
- 3: 하락률
- 4: 하락폭
- 5: 보합
trde_qty_cnd (str): 거래량조건
- 0000: 전체조회
- 0010: 만주이상
- 0050: 5만주이상
- 0100: 10만주이상
- 0150: 15만주이상
- 0200: 20만주이상
- 0300: 30만주이상
- 0500: 50만주이상
- 1000: 백만주이상
stk_cnd (str): 종목조건
- 0: 전체조회
- 1: 관리종목제외
- 4: 우선주+관리주제외
- 3: 우선주제외
- 5: 증100제외
- 6: 증100만보기
- 7: 증40만보기
- 8: 증30만보기
- 9: 증20만보기
- 11: 정리매매종목제외
- 12: 증50만보기
- 13: 증60만보기
- 14: ETF제외
- 15: 스펙제외
- 16: ETF+ETN제외
crd_cnd (str): 신용조건
- 0: 전체조회
- 1: 신용융자A군
- 2: 신용융자B군
- 3: 신용융자C군
- 4: 신용융자D군
- 9: 신용융자전체
updown_incls (str): 상하한포함
- 0: 불 포함
- 1: 포함
pric_cnd (str): 가격조건
- 0: 전체조회
- 1: 1천원미만
- 2: 1천원~2천원
- 3: 2천원~5천원
- 4: 5천원~1만원
- 5: 1만원이상
- 8: 1천원이상
- 10: 1만원미만
trde_prica_cnd (str): 거래대금조건
- 0: 전체조회
- 3: 3천만원이상
- 5: 5천만원이상
- 10: 1억원이상
- 30: 3억원이상
- 50: 5억원이상
- 100: 10억원이상
- 300: 30억원이상
- 500: 50억원이상
- 1000: 100억원이상
- 3000: 300억원이상
- 5000: 500억원이상
stex_tp (str): 거래소구분 (1:KRX, 2:NXT, 3:통합)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 전일대비 등락률 상위 종목 데이터
{
"pred_pre_flu_rt_upper": [ # 전일대비등락률상위
{
"stk_cls": str, # 종목분류
"stk_cd": str, # 종목코드
"stk_nm": str, # 종목명
"cur_prc": str, # 현재가
"pred_pre_sig": str, # 전일대비기호
"pred_pre": str, # 전일대비
"flu_rt": str, # 등락률
"sel_req": str, # 매도잔량
"buy_req": str, # 매수잔량
"now_trde_qty": str, # 현재거래량
"cntr_str": str, # 체결강도
"cnt": str, # 횟수
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.top_day_over_day_change_rate_request_ka10027(
... mrkt_tp="000",
... sort_tp="1",
... trde_qty_cnd="0000",
... stk_cnd="0",
... crd_cnd="0",
... updown_incls="1",
... pric_cnd="0",
... trde_prica_cnd="0",
... stex_tp="3"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10027",
}
data = {
"mrkt_tp": mrkt_tp,
"sort_tp": sort_tp,
"trde_qty_cnd": trde_qty_cnd,
"stk_cnd": stk_cnd,
"crd_cnd": crd_cnd,
"updown_incls": updown_incls,
"pric_cnd": pric_cnd,
"trde_prica_cnd": trde_prica_cnd,
"stex_tp": stex_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def top_expected_execution_change_rate_request_ka10029(
self,
mrkt_tp: str,
sort_tp: str,
trde_qty_cnd: str,
stk_cnd: str,
crd_cnd: str,
pric_cnd: str,
stex_tp: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""예상체결 등락률 상위 종목을 조회합니다.
Args:
mrkt_tp (str): 시장구분
- 000: 전체
- 001: 코스피
- 101: 코스닥
sort_tp (str): 정렬구분
- 1: 상승률
- 2: 상승폭
- 3: 보합
- 4: 하락률
- 5: 하락폭
- 6: 체결량
- 7: 상한
- 8: 하한
trde_qty_cnd (str): 거래량조건
- 0: 전체조회
- 1: 천주이상
- 3: 3천주
- 5: 5천주
- 10: 만주이상
- 50: 5만주이상
- 100: 10만주이상
stk_cnd (str): 종목조건
- 0: 전체조회
- 1: 관리종목제외
- 3: 우선주제외
- 4: 관리종목,우선주제외
- 5: 증100제외
- 6: 증100만보기
- 7: 증40만보기
- 8: 증30만보기
- 9: 증20만보기
- 11: 정리매매종목제외
- 12: 증50만보기
- 13: 증60만보기
- 14: ETF제외
- 15: 스팩제외
- 16: ETF+ETN제외
crd_cnd (str): 신용조건
- 0: 전체조회
- 1: 신용융자A군
- 2: 신용융자B군
- 3: 신용융자C군
- 4: 신용융자D군
- 5: 신용한도초과제외
- 8: 신용대주
- 9: 신용융자전체
pric_cnd (str): 가격조건
- 0: 전체조회
- 1: 1천원미만
- 2: 1천원~2천원
- 3: 2천원~5천원
- 4: 5천원~1만원
- 5: 1만원이상
- 8: 1천원이상
- 10: 1만원미만
stex_tp (str): 거래소구분 (1:KRX, 2:NXT, 3:통합)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 예상체결 등락률 상위 종목 데이터
{
"exp_cntr_flu_rt_upper": [ # 예상체결등락률상위
{
"stk_cd": str, # 종목코드
"stk_nm": str, # 종목명
"exp_cntr_pric": str, # 예상체결가
"base_pric": str, # 기준가
"pred_pre_sig": str, # 전일대비기호
"pred_pre": str, # 전일대비
"flu_rt": str, # 등락률
"exp_cntr_qty": str, # 예상체결량
"sel_req": str, # 매도잔량
"sel_bid": str, # 매도호가
"buy_bid": str, # 매수호가
"buy_req": str, # 매수잔량
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.top_expected_execution_change_rate_request_ka10029(
... mrkt_tp="000",
... sort_tp="1",
... trde_qty_cnd="0",
... stk_cnd="0",
... crd_cnd="0",
... pric_cnd="0",
... stex_tp="3"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10029",
}
data = {
"mrkt_tp": mrkt_tp,
"sort_tp": sort_tp,
"trde_qty_cnd": trde_qty_cnd,
"stk_cnd": stk_cnd,
"crd_cnd": crd_cnd,
"pric_cnd": pric_cnd,
"stex_tp": stex_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def top_trading_volume_today_request_ka10030(
self,
mrkt_tp: str,
sort_tp: str,
mang_stk_incls: str,
crd_tp: str,
trde_qty_tp: str,
pric_tp: str,
trde_prica_tp: str,
mrkt_open_tp: str,
stex_tp: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""당일 거래량 상위 종목을 조회합니다.
Args:
mrkt_tp (str): 시장구분
- 000: 전체
- 001: 코스피
- 101: 코스닥
sort_tp (str): 정렬구분
- 1: 거래량
- 2: 거래회전율
- 3: 거래대금
mang_stk_incls (str): 관리종목포함
- 0: 관리종목 포함
- 1: 관리종목 미포함
- 3: 우선주제외
- 11: 정리매매종목제외
- 4: 관리종목, 우선주제외
- 5: 증100제외
- 6: 증100만보기
- 13: 증60만보기
- 12: 증50만보기
- 7: 증40만보기
- 8: 증30만보기
- 9: 증20만보기
- 14: ETF제외
- 15: 스팩제외
- 16: ETF+ETN제외
crd_tp (str): 신용구분
- 0: 전체조회
- 9: 신용융자전체
- 1: 신용융자A군
- 2: 신용융자B군
- 3: 신용융자C군
- 4: 신용융자D군
- 8: 신용대주
trde_qty_tp (str): 거래량구분
- 0: 전체조회
- 5: 5천주이상
- 10: 1만주이상
- 50: 5만주이상
- 100: 10만주이상
- 200: 20만주이상
- 300: 30만주이상
- 500: 500만주이상
- 1000: 백만주이상
pric_tp (str): 가격구분
- 0: 전체조회
- 1: 1천원미만
- 2: 1천원이상
- 3: 1천원~2천원
- 4: 2천원~5천원
- 5: 5천원이상
- 6: 5천원~1만원
- 10: 1만원미만
- 7: 1만원이상
- 8: 5만원이상
- 9: 10만원이상
trde_prica_tp (str): 거래대금구분
- 0: 전체조회
- 1: 1천만원이상
- 3: 3천만원이상
- 4: 5천만원이상
- 10: 1억원이상
- 30: 3억원이상
- 50: 5억원이상
- 100: 10억원이상
- 300: 30억원이상
- 500: 50억원이상
- 1000: 100억원이상
- 3000: 300억원이상
- 5000: 500억원이상
mrkt_open_tp (str): 장운영구분
- 0: 전체조회
- 1: 장중
- 2: 장전시간외
- 3: 장후시간외
stex_tp (str): 거래소구분 (1:KRX, 2:NXT, 3:통합)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 당일 거래량 상위 종목 데이터
{
"tdy_trde_qty_upper": [ # 당일거래량상위
{
"stk_cd": str, # 종목코드
"stk_nm": str, # 종목명
"cur_prc": str, # 현재가
"pred_pre_sig": str, # 전일대비기호
"pred_pre": str, # 전일대비
"flu_rt": str, # 등락률
"trde_qty": str, # 거래량
"pred_rt": str, # 전일비
"trde_tern_rt": str, # 거래회전율
"trde_amt": str, # 거래금액
"opmr_trde_qty": str, # 장중거래량
"opmr_pred_rt": str, # 장중전일비
"opmr_trde_rt": str, # 장중거래회전율
"opmr_trde_amt": str, # 장중거래금액
"af_mkrt_trde_qty": str, # 장후거래량
"af_mkrt_pred_rt": str, # 장후전일비
"af_mkrt_trde_rt": str, # 장후거래회전율
"af_mkrt_trde_amt": str, # 장후거래금액
"bf_mkrt_trde_qty": str, # 장전거래량
"bf_mkrt_pred_rt": str, # 장전전일비
"bf_mkrt_trde_rt": str, # 장전거래회전율
"bf_mkrt_trde_amt": str, # 장전거래금액
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.top_trading_volume_today_request_ka10030(
... mrkt_tp="000",
... sort_tp="1",
... mang_stk_incls="0",
... crd_tp="0",
... trde_qty_tp="0",
... pric_tp="0",
... trde_prica_tp="0",
... mrkt_open_tp="0",
... stex_tp="3"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10030",
}
data = {
"mrkt_tp": mrkt_tp,
"sort_tp": sort_tp,
"mang_stk_incls": mang_stk_incls,
"crd_tp": crd_tp,
"trde_qty_tp": trde_qty_tp,
"pric_tp": pric_tp,
"trde_prica_tp": trde_prica_tp,
"mrkt_open_tp": mrkt_open_tp,
"stex_tp": stex_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def top_trading_volume_yesterday_request_ka10031(
self,
mrkt_tp: str,
qry_tp: str,
rank_strt: str,
rank_end: str,
stex_tp: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""전일 거래량 상위 종목을 조회합니다.
Args:
mrkt_tp (str): 시장구분
- 000: 전체
- 001: 코스피
- 101: 코스닥
qry_tp (str): 조회구분
- 1: 전일거래량 상위100종목
- 2: 전일거래대금 상위100종목
rank_strt (str): 순위시작 (0 ~ 100 값 중에 조회를 원하는 순위 시작값)
rank_end (str): 순위끝 (0 ~ 100 값 중에 조회를 원하는 순위 끝값)
stex_tp (str): 거래소구분 (1:KRX, 2:NXT, 3:통합)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 전일 거래량 상위 종목 데이터
{
"pred_trde_qty_upper": [ # 전일거래량상위
{
"stk_cd": str, # 종목코드
"stk_nm": str, # 종목명
"cur_prc": str, # 현재가
"pred_pre_sig": str, # 전일대비기호
"pred_pre": str, # 전일대비
"trde_qty": str, # 거래량
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.top_trading_volume_yesterday_request_ka10031(
... mrkt_tp="101",
... qry_tp="1",
... rank_strt="0",
... rank_end="10",
... stex_tp="3"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10031",
}
data = {
"mrkt_tp": mrkt_tp,
"qry_tp": qry_tp,
"rank_strt": rank_strt,
"rank_end": rank_end,
"stex_tp": stex_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def top_trading_value_request_ka10032(
self,
mrkt_tp: str,
mang_stk_incls: str,
stex_tp: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""거래대금 상위 종목을 조회합니다.
Args:
mrkt_tp (str): 시장구분
- 000: 전체
- 001: 코스피
- 101: 코스닥
mang_stk_incls (str): 관리종목포함
- 0: 관리종목 미포함
- 1: 관리종목 포함
stex_tp (str): 거래소구분 (1:KRX, 2:NXT, 3:통합)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 거래대금 상위 종목 데이터
{
"trde_prica_upper": [ # 거래대금상위
{
"stk_cd": str, # 종목코드
"now_rank": str, # 현재순위
"pred_rank": str, # 전일순위
"stk_nm": str, # 종목명
"cur_prc": str, # 현재가
"pred_pre_sig": str, # 전일대비기호
"pred_pre": str, # 전일대비
"flu_rt": str, # 등락률
"sel_bid": str, # 매도호가
"buy_bid": str, # 매수호가
"now_trde_qty": str, # 현재거래량
"pred_trde_qty": str, # 전일거래량
"trde_prica": str, # 거래대금
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.top_trading_value_request_ka10032(
... mrkt_tp="001",
... mang_stk_incls="1",
... stex_tp="3"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10032",
}
data = {
"mrkt_tp": mrkt_tp,
"mang_stk_incls": mang_stk_incls,
"stex_tp": stex_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def top_credit_ratio_request_ka10033(
self,
mrkt_tp: str,
trde_qty_tp: str,
stk_cnd: str,
updown_incls: str,
crd_cnd: str,
stex_tp: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""신용비율 상위 종목을 조회합니다.
Args:
mrkt_tp (str): 시장구분
- 000: 전체
- 001: 코스피
- 101: 코스닥
trde_qty_tp (str): 거래량구분
- 0: 전체조회
- 10: 만주이상
- 50: 5만주이상
- 100: 10만주이상
- 200: 20만주이상
- 300: 30만주이상
- 500: 50만주이상
- 1000: 백만주이상
stk_cnd (str): 종목조건
- 0: 전체조회
- 1: 관리종목제외
- 5: 증100제외
- 6: 증100만보기
- 7: 증40만보기
- 8: 증30만보기
- 9: 증20만보기
updown_incls (str): 상하한포함
- 0: 상하한 미포함
- 1: 상하한포함
crd_cnd (str): 신용조건
- 0: 전체조회
- 1: 신용융자A군
- 2: 신용융자B군
- 3: 신용융자C군
- 4: 신용융자D군
- 9: 신용융자전체
stex_tp (str): 거래소구분 (1:KRX, 2:NXT, 3:통합)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 신용비율 상위 종목 데이터
{
"crd_rt_upper": [ # 신용비율상위
{
"stk_infr": str, # 종목정보
"stk_cd": str, # 종목코드
"stk_nm": str, # 종목명
"cur_prc": str, # 현재가
"pred_pre_sig": str, # 전일대비기호
"pred_pre": str, # 전일대비
"flu_rt": str, # 등락률
"crd_rt": str, # 신용비율
"sel_req": str, # 매도잔량
"buy_req": str, # 매수잔량
"now_trde_qty": str, # 현재거래량
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.top_credit_ratio_request_ka10033(
... mrkt_tp="000",
... trde_qty_tp="0",
... stk_cnd="0",
... updown_incls="1",
... crd_cnd="0",
... stex_tp="3"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10033",
}
data = {
"mrkt_tp": mrkt_tp,
"trde_qty_tp": trde_qty_tp,
"stk_cnd": stk_cnd,
"updown_incls": updown_incls,
"crd_cnd": crd_cnd,
"stex_tp": stex_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def top_foreign_investor_trades_by_period_request_ka10034(
self,
mrkt_tp: str,
trde_tp: str,
dt: str,
stex_tp: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""외국인 기간별 매매 상위 종목을 조회합니다.
Args:
mrkt_tp (str): 시장구분
- 000: 전체
- 001: 코스피
- 101: 코스닥
trde_tp (str): 매매구분
- 1: 순매도
- 2: 순매수
- 3: 순매매
dt (str): 기간
- 0: 당일
- 1: 전일
- 5: 5일
- 10: 10일
- 20: 20일
- 60: 60일
stex_tp (str): 거래소구분 (1:KRX, 2:NXT, 3:통합)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 외국인 기간별 매매 상위 종목 데이터
{
"for_dt_trde_upper": [ # 외인기간별매매상위
{
"rank": str, # 순위
"stk_cd": str, # 종목코드
"stk_nm": str, # 종목명
"cur_prc": str, # 현재가
"pred_pre_sig": str, # 전일대비기호
"pred_pre": str, # 전일대비
"sel_bid": str, # 매도호가
"buy_bid": str, # 매수호가
"trde_qty": str, # 거래량
"netprps_qty": str, # 순매수량
"gain_pos_stkcnt": str, # 취득가능주식수
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.top_foreign_investor_trades_by_period_request_ka10034(
... mrkt_tp="001",
... trde_tp="2",
... dt="0",
... stex_tp="1"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10034",
}
data = {
"mrkt_tp": mrkt_tp,
"trde_tp": trde_tp,
"dt": dt,
"stex_tp": stex_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def top_foreign_consecutive_net_buy_request_ka10035(
self,
mrkt_tp: str,
trde_tp: str,
base_dt_tp: str,
stex_tp: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""외국인 연속 순매매 상위 종목을 조회합니다.
Args:
mrkt_tp (str): 시장구분
- 000: 전체
- 001: 코스피
- 101: 코스닥
trde_tp (str): 매매구분
- 1: 연속순매도
- 2: 연속순매수
base_dt_tp (str): 기준일구분
- 0: 당일기준
- 1: 전일기준
stex_tp (str): 거래소구분 (1:KRX, 2:NXT, 3:통합)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 외국인 연속 순매매 상위 종목 데이터
{
"for_cont_nettrde_upper": [ # 외인연속순매매상위
{
"stk_cd": str, # 종목코드
"stk_nm": str, # 종목명
"cur_prc": str, # 현재가
"pred_pre_sig": str, # 전일대비기호
"pred_pre": str, # 전일대비
"dm1": str, # D-1
"dm2": str, # D-2
"dm3": str, # D-3
"tot": str, # 합계
"limit_exh_rt": str, # 한도소진율
"pred_pre_1": str, # 전일대비1
"pred_pre_2": str, # 전일대비2
"pred_pre_3": str, # 전일대비3
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.top_foreign_consecutive_net_buy_request_ka10035(
... mrkt_tp="000",
... trde_tp="2",
... base_dt_tp="1",
... stex_tp="1"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10035",
}
data = {
"mrkt_tp": mrkt_tp,
"trde_tp": trde_tp,
"base_dt_tp": base_dt_tp,
"stex_tp": stex_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def top_foreign_limit_utilization_increase_request_ka10036(
self,
mrkt_tp: str,
dt: str,
stex_tp: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""외국인 한도소진율 증가 상위 종목을 조회합니다.
Args:
mrkt_tp (str): 시장구분
- 000: 전체
- 001: 코스피
- 101: 코스닥
dt (str): 기간
- 0: 당일
- 1: 전일
- 5: 5일
- 10: 10일
- 20: 20일
- 60: 60일
stex_tp (str): 거래소구분 (1:KRX, 2:NXT, 3:통합)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 외국인 한도소진율 증가 상위 종목 데이터
{
"for_limit_exh_rt_incrs_upper": [ # 외인한도소진율증가상위
{
"rank": str, # 순위
"stk_cd": str, # 종목코드
"stk_nm": str, # 종목명
"cur_prc": str, # 현재가
"pred_pre_sig": str, # 전일대비기호
"pred_pre": str, # 전일대비
"trde_qty": str, # 거래량
"poss_stkcnt": str, # 보유주식수
"gain_pos_stkcnt": str, # 취득가능주식수
"base_limit_exh_rt": str, # 기준한도소진율
"limit_exh_rt": str, # 한도소진율
"exh_rt_incrs": str, # 소진율증가
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.top_foreign_limit_utilization_increase_request_ka10036(
... mrkt_tp="000",
... dt="1",
... stex_tp="1"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10036",
}
data = {
"mrkt_tp": mrkt_tp,
"dt": dt,
"stex_tp": stex_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def top_foreign_broker_trading_request_ka10037(
self,
mrkt_tp: str,
dt: str,
trde_tp: str,
sort_tp: str,
stex_tp: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""외국계 창구 매매 상위 종목을 조회합니다.
Args:
mrkt_tp (str): 시장구분
- 000: 전체
- 001: 코스피
- 101: 코스닥
dt (str): 기간
- 0: 당일
- 1: 전일
- 5: 5일
- 10: 10일
- 20: 20일
- 60: 60일
trde_tp (str): 매매구분
- 1: 순매수
- 2: 순매도
sort_tp (str): 정렬구분
- 1: 금액
- 2: 수량
stex_tp (str): 거래소구분 (1:KRX, 2:NXT, 3:통합)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 외국계 창구 매매 상위 종목 데이터
{
"frgn_wicket_trde_upper": [ # 외국계창구매매상위
{
"rank": str, # 순위
"stk_cd": str, # 종목코드
"stk_nm": str, # 종목명
"cur_prc": str, # 현재가
"pred_pre_sig": str, # 전일대비기호
"pred_pre": str, # 전일대비
"flu_rt": str, # 등락율
"sel_trde_qty": str, # 매도거래량
"buy_trde_qty": str, # 매수거래량
"netprps_trde_qty": str, # 순매수거래량
"netprps_prica": str, # 순매수대금
"trde_qty": str, # 거래량
"trde_prica": str, # 거래대금
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.top_foreign_broker_trading_request_ka10037(
... mrkt_tp="000",
... dt="0",
... trde_tp="1",
... sort_tp="2",
... stex_tp="1"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10037",
}
data = {
"mrkt_tp": mrkt_tp,
"dt": dt,
"trde_tp": trde_tp,
"sort_tp": sort_tp,
"stex_tp": stex_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def broker_ranking_by_stock_request_ka10038(
self,
stk_cd: str,
strt_dt: str,
end_dt: str,
qry_tp: str,
dt: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""종목별 증권사 순위를 조회합니다.
Args:
stk_cd (str): 종목코드 (거래소별 종목코드)
- KRX: 039490
- NXT: 039490_NX
- SOR: 039490_AL
strt_dt (str): 시작일자 (YYYYMMDD 형식)
end_dt (str): 종료일자 (YYYYMMDD 형식)
qry_tp (str): 조회구분
- 1: 순매도순위정렬
- 2: 순매수순위정렬
dt (str): 기간
- 1: 전일
- 4: 5일
- 9: 10일
- 19: 20일
- 39: 40일
- 59: 60일
- 119: 120일
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 종목별 증권사 순위 데이터
{
"rank_1": str, # 순위1
"rank_2": str, # 순위2
"rank_3": str, # 순위3
"prid_trde_qty": str, # 기간중거래량
"stk_sec_rank": [ # 종목별증권사순위
{
"rank": str, # 순위
"mmcm_nm": str, # 회원사명
"buy_qty": str, # 매수수량
"sell_qty": str, # 매도수량
"acc_netprps_qty": str, # 누적순매수수량
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.broker_ranking_by_stock_request_ka10038(
... stk_cd="005930",
... strt_dt="20241106",
... end_dt="20241107",
... qry_tp="2",
... dt="1"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10038",
}
data = {
"stk_cd": stk_cd,
"strt_dt": strt_dt,
"end_dt": end_dt,
"qry_tp": qry_tp,
"dt": dt,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def top_broker_trading_request_ka10039(
self,
mmcm_cd: str,
trde_qty_tp: str,
trde_tp: str,
dt: str,
stex_tp: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""증권사별 매매 상위 종목을 조회합니다.
Args:
mmcm_cd (str): 회원사코드 (ka10102 API로 조회 가능)
trde_qty_tp (str): 거래량구분
- 0: 전체
- 5: 5000주
- 10: 1만주
- 50: 5만주
- 100: 10만주
- 500: 50만주
- 1000: 100만주
trde_tp (str): 매매구분
- 1: 순매수
- 2: 순매도
dt (str): 기간
- 1: 전일
- 5: 5일
- 10: 10일
- 60: 60일
stex_tp (str): 거래소구분
- 1: KRX
- 2: NXT
- 3: 통합
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 증권사별 매매 상위 종목 데이터
{
"sec_trde_upper": [ # 증권사별매매상위
{
"rank": str, # 순위
"stk_cd": str, # 종목코드
"stk_nm": str, # 종목명
"prid_stkpc_flu": str, # 기간중주가등락
"flu_rt": str, # 등락율
"prid_trde_qty": str, # 기간중거래량
"netprps": str, # 순매수
"buy_trde_qty": str, # 매수거래량
"sel_trde_qty": str, # 매도거래량
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.top_broker_trading_request_ka10039(
... mmcm_cd="001",
... trde_qty_tp="0",
... trde_tp="1",
... dt="1",
... stex_tp="3"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10039",
}
data = {
"mmcm_cd": mmcm_cd,
"trde_qty_tp": trde_qty_tp,
"trde_tp": trde_tp,
"dt": dt,
"stex_tp": stex_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def main_trading_brokers_today_request_ka10040(
self,
stk_cd: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""당일 주요 거래원 정보를 조회합니다.
Args:
stk_cd (str): 종목코드
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 당일 주요 거래원 데이터
{
# 매도 거래원 정보 (1~5위)
"sel_trde_ori_irds_1": str, # 매도거래원별증감1
"sel_trde_ori_qty_1": str, # 매도거래원수량1
"sel_trde_ori_1": str, # 매도거래원1
"sel_trde_ori_cd_1": str, # 매도거래원코드1
# ... (2~5위 동일한 패턴)
# 매수 거래원 정보 (1~5위)
"buy_trde_ori_1": str, # 매수거래원1
"buy_trde_ori_cd_1": str, # 매수거래원코드1
"buy_trde_ori_qty_1": str, # 매수거래원수량1
"buy_trde_ori_irds_1": str, # 매수거래원별증감1
# ... (2~5위 동일한 패턴)
# 외국계 거래 정보
"frgn_sel_prsm_sum_chang": str, # 외국계매도추정합변동
"frgn_sel_prsm_sum": str, # 외국계매도추정합
"frgn_buy_prsm_sum": str, # 외국계매수추정합
"frgn_buy_prsm_sum_chang": str, # 외국계매수추정합변동
# 당일 주요 거래원 상세 정보
"tdy_main_trde_ori": [ # 당일주요거래원
{
"sel_scesn_tm": str, # 매도이탈시간
"sell_qty": str, # 매도수량
"sel_upper_scesn_ori": str, # 매도상위이탈원
"buy_scesn_tm": str, # 매수이탈시간
"buy_qty": str, # 매수수량
"buy_upper_scesn_ori": str, # 매수상위이탈원
"qry_dt": str, # 조회일자
"qry_tm": str, # 조회시간
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.main_trading_brokers_today_request_ka10040(
... stk_cd="005930" # 삼성전자
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10040",
}
data = {
"stk_cd": stk_cd,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def top_net_buying_brokers_request_ka10042(
self,
stk_cd: str,
qry_dt_tp: str,
pot_tp: str,
sort_base: str,
strt_dt: str = "",
end_dt: str = "",
dt: str = "",
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""순매수거래원순위를 조회합니다.
Args:
stk_cd (str): 종목코드 (거래소별 종목코드)
- KRX: 039490
- NXT: 039490_NX
- SOR: 039490_AL
qry_dt_tp (str): 조회기간구분
- 0: 기간으로 조회
- 1: 시작일자, 종료일자로 조회
pot_tp (str): 시점구분
- 0: 당일
- 1: 전일
sort_base (str): 정렬기준
- 1: 종가순
- 2: 날짜순
strt_dt (str, optional): 시작일자 (YYYYMMDD 형식). Defaults to "".
end_dt (str, optional): 종료일자 (YYYYMMDD 형식). Defaults to "".
dt (str, optional): 기간
- 5: 5일
- 10: 10일
- 20: 20일
- 40: 40일
- 60: 60일
- 120: 120일
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 순매수거래원순위 데이터
{
"netprps_trde_ori_rank": [ # 순매수거래원순위
{
"rank": str, # 순위
"mmcm_cd": str, # 회원사코드
"mmcm_nm": str, # 회원사명
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.top_net_buying_brokers_request_ka10042(
... stk_cd="005930",
... qry_dt_tp="0",
... pot_tp="0",
... sort_base="1",
... dt="5"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10042",
}
data = {
"stk_cd": stk_cd,
"qry_dt_tp": qry_dt_tp,
"pot_tp": pot_tp,
"sort_base": sort_base,
}
# Optional parameters
if strt_dt:
data["strt_dt"] = strt_dt
if end_dt:
data["end_dt"] = end_dt
if dt:
data["dt"] = dt
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def top_departed_trading_brokers_today_request_ka10053(
self,
stk_cd: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""당일 상위 이탈원 정보를 조회합니다.
Args:
stk_cd (str): 종목코드 (거래소별 종목코드)
- KRX: 039490
- NXT: 039490_NX
- SOR: 039490_AL
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 당일 상위 이탈원 데이터
{
"tdy_upper_scesn_ori": [ # 당일상위이탈원
{
"sel_scesn_tm": str, # 매도이탈시간
"sell_qty": str, # 매도수량
"sel_upper_scesn_ori": str, # 매도상위이탈원
"buy_scesn_tm": str, # 매수이탈시간
"buy_qty": str, # 매수수량
"buy_upper_scesn_ori": str, # 매수상위이탈원
"qry_dt": str, # 조회일자
"qry_tm": str, # 조회시간
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.top_departed_trading_brokers_today_request_ka10053(
... stk_cd="005930" # 삼성전자
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10053",
}
data = {
"stk_cd": stk_cd,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def same_day_net_buying_ranking_request_ka10062(
self,
strt_dt: str,
mrkt_tp: str,
trde_tp: str,
sort_cnd: str,
unit_tp: str,
stex_tp: str,
end_dt: str = "",
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""동일순매매순위를 조회합니다.
Args:
strt_dt (str): 시작일자 (YYYYMMDD 형식)
mrkt_tp (str): 시장구분
- 000: 전체
- 001: 코스피
- 101: 코스닥
trde_tp (str): 매매구분
- 1: 순매수
- 2: 순매도
sort_cnd (str): 정렬조건
- 1: 수량
- 2: 금액
unit_tp (str): 단위구분
- 1: 단주
- 1000: 천주
stex_tp (str): 거래소구분
- 1: KRX
- 2: NXT
- 3: 통합
end_dt (str, optional): 종료일자 (YYYYMMDD 형식). Defaults to "".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 동일순매매순위 데이터
{
"eql_nettrde_rank": [ # 동일순매매순위
{
"stk_cd": str, # 종목코드
"rank": str, # 순위
"stk_nm": str, # 종목명
"cur_prc": str, # 현재가
"pre_sig": str, # 대비기호
"pred_pre": str, # 전일대비
"flu_rt": str, # 등락율
"acc_trde_qty": str, # 누적거래량
"orgn_nettrde_qty": str, # 기관순매매수량
"orgn_nettrde_amt": str, # 기관순매매금액
"orgn_nettrde_avg_pric": str, # 기관순매매평균가
"for_nettrde_qty": str, # 외인순매매수량
"for_nettrde_amt": str, # 외인순매매금액
"for_nettrde_avg_pric": str, # 외인순매매평균가
"nettrde_qty": str, # 순매매수량
"nettrde_amt": str, # 순매매금액
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.same_day_net_buying_ranking_request_ka10062(
... strt_dt="20241106",
... mrkt_tp="000",
... trde_tp="1",
... sort_cnd="1",
... unit_tp="1",
... stex_tp="3",
... end_dt="20241107"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10062",
}
data = {
"strt_dt": strt_dt,
"mrkt_tp": mrkt_tp,
"trde_tp": trde_tp,
"sort_cnd": sort_cnd,
"unit_tp": unit_tp,
"stex_tp": stex_tp,
}
# Optional parameter
if end_dt:
data["end_dt"] = end_dt
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def top_intraday_investor_trading_request_ka10065(
self,
trde_tp: str,
mrkt_tp: str,
orgn_tp: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""장중 투자자별 매매 상위 종목을 조회합니다.
Args:
trde_tp (str): 매매구분
- 1: 순매수
- 2: 순매도
mrkt_tp (str): 시장구분
- 000: 전체
- 001: 코스피
- 101: 코스닥
orgn_tp (str): 기관구분
- 9000: 외국인
- 9100: 외국계
- 1000: 금융투자
- 3000: 투신
- 5000: 기타금융
- 4000: 은행
- 2000: 보험
- 6000: 연기금
- 7000: 국가
- 7100: 기타법인
- 9999: 기관계
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 장중 투자자별 매매 상위 종목 데이터
{
"opmr_invsr_trde_upper": [ # 장중투자자별매매상위
{
"stk_cd": str, # 종목코드
"stk_nm": str, # 종목명
"sel_qty": str, # 매도량
"buy_qty": str, # 매수량
"netslmt": str, # 순매도
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.top_intraday_investor_trading_request_ka10065(
... trde_tp="1", # 순매수
... mrkt_tp="000", # 전체
... orgn_tp="9000" # 외국인
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10065",
}
data = {
"trde_tp": trde_tp,
"mrkt_tp": mrkt_tp,
"orgn_tp": orgn_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def after_market_price_change_rate_ranking_request_ka10098(
self,
mrkt_tp: str,
sort_base: str,
stk_cnd: str,
trde_qty_cnd: str,
crd_cnd: str,
trde_prica: str,
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""시간외 단일가 등락율 순위를 조회합니다.
Args:
mrkt_tp (str): 시장구분
- 000: 전체
- 001: 코스피
- 101: 코스닥
sort_base (str): 정렬기준
- 1: 상승률
- 2: 상승폭
- 3: 하락률
- 4: 하락폭
- 5: 보합
stk_cnd (str): 종목조건
- 0: 전체조회
- 1: 관리종목제외
- 2: 정리매매종목제외
- 3: 우선주제외
- 4: 관리종목우선주제외
- 5: 증100제외
- 6: 증100만보기
- 7: 증40만보기
- 8: 증30만보기
- 9: 증20만보기
- 12: 증50만보기
- 13: 증60만보기
- 14: ETF제외
- 15: 스팩제외
- 16: ETF+ETN제외
- 17: ETN제외
trde_qty_cnd (str): 거래량조건
- 0: 전체조회
- 10: 백주이상
- 50: 5백주이상
- 100: 천주이상
- 500: 5천주이상
- 1000: 만주이상
- 5000: 5만주이상
- 10000: 10만주이상
crd_cnd (str): 신용조건
- 0: 전체조회
- 9: 신용융자전체
- 1: 신용융자A군
- 2: 신용융자B군
- 3: 신용융자C군
- 4: 신용융자D군
- 8: 신용대주
- 5: 신용한도초과제외
trde_prica (str): 거래대금
- 0: 전체조회
- 5: 5백만원이상
- 10: 1천만원이상
- 30: 3천만원이상
- 50: 5천만원이상
- 100: 1억원이상
- 300: 3억원이상
- 500: 5억원이상
- 1000: 10억원이상
- 3000: 30억원이상
- 5000: 50억원이상
- 10000: 100억원이상
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 시간외 단일가 등락율 순위 데이터
{
"ovt_sigpric_flu_rt_rank": [ # 시간외단일가등락율순위
{
"rank": str, # 순위
"stk_cd": str, # 종목코드
"stk_nm": str, # 종목명
"cur_prc": str, # 현재가
"pred_pre_sig": str, # 전일대비기호
"pred_pre": str, # 전일대비
"flu_rt": str, # 등락률
"sel_tot_req": str, # 매도총잔량
"buy_tot_req": str, # 매수총잔량
"acc_trde_qty": str, # 누적거래량
"acc_trde_prica": str, # 누적거래대금
"tdy_close_pric": str, # 당일종가
"tdy_close_pric_flu_rt": str, # 당일종가등락률
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.after_market_price_change_rate_ranking_request_ka10098(
... mrkt_tp="000", # 전체
... sort_base="5", # 보합
... stk_cnd="0", # 전체조회
... trde_qty_cnd="0", # 전체조회
... crd_cnd="0", # 전체조회
... trde_prica="0" # 전체조회
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10098",
}
data = {
"mrkt_tp": mrkt_tp,
"sort_base": sort_base,
"stk_cnd": stk_cnd,
"trde_qty_cnd": trde_qty_cnd,
"crd_cnd": crd_cnd,
"trde_prica": trde_prica,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def top_foreign_institution_trades_request_ka90009(
self,
mrkt_tp: str,
amt_qty_tp: str,
qry_dt_tp: str,
stex_tp: str,
date: str = "",
cont_yn: str = "N",
next_key: str = "",
) -> dict:
"""외국인/기관 매매 상위 종목을 조회합니다.
Args:
mrkt_tp (str): 시장구분
- 000: 전체
- 001: 코스피
- 101: 코스닥
amt_qty_tp (str): 금액수량구분
- 1: 금액(천만)
- 2: 수량(천)
qry_dt_tp (str): 조회일자구분
- 0: 조회일자 미포함
- 1: 조회일자 포함
stex_tp (str): 거래소구분
- 1: KRX
- 2: NXT
- 3: 통합
date (str, optional): 날짜 (YYYYMMDD 형식). Defaults to "".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 외국인/기관 매매 상위 종목 데이터
{
"frgnr_orgn_trde_upper": [ # 외국인기관매매상위
{
"for_netslmt_stk_cd": str, # 외인순매도종목코드
"for_netslmt_stk_nm": str, # 외인순매도종목명
"for_netslmt_amt": str, # 외인순매도금액
"for_netslmt_qty": str, # 외인순매도수량
"for_netprps_stk_cd": str, # 외인순매수종목코드
"for_netprps_stk_nm": str, # 외인순매수종목명
"for_netprps_amt": str, # 외인순매수금액
"for_netprps_qty": str, # 외인순매수수량
"orgn_netslmt_stk_cd": str, # 기관순매도종목코드
"orgn_netslmt_stk_nm": str, # 기관순매도종목명
"orgn_netslmt_amt": str, # 기관순매도금액
"orgn_netslmt_qty": str, # 기관순매도수량
"orgn_netprps_stk_cd": str, # 기관순매수종목코드
"orgn_netprps_stk_nm": str, # 기관순매수종목명
"orgn_netprps_amt": str, # 기관순매수금액
"orgn_netprps_qty": str, # 기관순매수수량
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.rank_info.top_foreign_institution_trades_request_ka90009(
... mrkt_tp="000", # 전체
... amt_qty_tp="1", # 금액(천만)
... qry_dt_tp="1", # 조회일자 포함
... stex_tp="1", # KRX
... date="20241101"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka90009",
}
data = {
"mrkt_tp": mrkt_tp,
"amt_qty_tp": amt_qty_tp,
"qry_dt_tp": qry_dt_tp,
"stex_tp": stex_tp,
}
# Optional parameter
if date:
data["date"] = date
return self._execute_request(
"POST",
json=data,
headers=headers,
)