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

2050 lines
88 KiB
Python

from kiwoom_rest_api.core.base_api import KiwoomBaseAPI
from typing import Union, Dict, Any, Awaitable
class Account(KiwoomBaseAPI):
"""한국 주식 계좌 관련 API를 제공하는 클래스"""
def __init__(
self,
base_url: str = None,
token_manager=None,
use_async: bool = False,
resource_url: str = "/api/dostk/acnt"
):
"""
Account 클래스 초기화
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 realized_profit_by_date_stock_request_ka10072(
self,
stock_code: str,
start_date: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
일자별종목별실현손익요청 (ka10072)
Args:
stock_code (str): 종목코드 (6자리)
start_date (str): 시작일자 (YYYYMMDD)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 일자별종목별실현손익 데이터
{
"dt_stk_div_rlzt_pl": [
{
"stk_nm": str, # 종목명
"cntr_qty": str, # 체결량
"buy_uv": str, # 매입단가
"cntr_pric": str, # 체결가
"tdy_sel_pl": str, # 당일매도손익
"pl_rt": str, # 손익율
"stk_cd": str, # 종목코드
"tdy_trde_cmsn": str, # 당일매매수수료
"tdy_trde_tax": str, # 당일매매세금
"wthd_alowa": str, # 인출가능금액
"loan_dt": str, # 대출일
"crd_tp": str, # 신용구분
"stk_cd_1": str, # 종목코드1
"tdy_sel_pl_1": str, # 당일매도손익1
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.realized_profit_by_date_stock_request_ka10072(
... stock_code="005930",
... start_date="20241128"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10072",
}
data = {
"stk_cd": stock_code,
"strt_dt": start_date,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def realized_profit_by_period_stock_request_ka10073(
self,
stock_code: str,
start_date: str,
end_date: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
일자별종목별실현손익요청_기간 (ka10073)
Args:
stock_code (str): 종목코드 (6자리)
start_date (str): 시작일자 (YYYYMMDD)
end_date (str): 종료일자 (YYYYMMDD)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 일자별종목별실현손익 데이터
{
"dt_stk_rlzt_pl": [
{
"dt": str, # 일자
"tdy_htssel_cmsn": str, # 당일hts매도수수료
"stk_nm": str, # 종목명
"cntr_qty": str, # 체결량
"buy_uv": str, # 매입단가
"cntr_pric": str, # 체결가
"tdy_sel_pl": str, # 당일매도손익
"pl_rt": str, # 손익율
"stk_cd": str, # 종목코드
"tdy_trde_cmsn": str, # 당일매매수수료
"tdy_trde_tax": str, # 당일매매세금
"wthd_alowa": str, # 인출가능금액
"loan_dt": str, # 대출일
"crd_tp": str, # 신용구분
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.realized_profit_by_period_stock_request_ka10073(
... stock_code="005930",
... start_date="20241128",
... end_date="20241128"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10073",
}
data = {
"stk_cd": stock_code,
"strt_dt": start_date,
"end_dt": end_date,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def daily_realized_profit_request_ka10074(
self,
start_date: str,
end_date: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
일자별실현손익요청 (ka10074)
Args:
start_date (str): 시작일자 (YYYYMMDD)
end_date (str): 종료일자 (YYYYMMDD)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 일자별실현손익 데이터
{
"tot_buy_amt": str, # 총매수금액
"tot_sell_amt": str, # 총매도금액
"rlzt_pl": str, # 실현손익
"trde_cmsn": str, # 매매수수료
"trde_tax": str, # 매매세금
"dt_rlzt_pl": [
{
"dt": str, # 일자
"buy_amt": str, # 매수금액
"sell_amt": str, # 매도금액
"tdy_sel_pl": str, # 당일매도손익
"tdy_trde_cmsn": str, # 당일매매수수료
"tdy_trde_tax": str, # 당일매매세금
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.daily_realized_profit_request_ka10074(
... start_date="20241128",
... end_date="20241128"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10074",
}
data = {
"strt_dt": start_date,
"end_dt": end_date,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def unfilled_orders_request_ka10075(
self,
all_stk_tp: str,
trde_tp: str,
stex_tp: str,
stock_code: str = None,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
미체결요청 (ka10075)
Args:
all_stk_tp (str): 전체종목구분 (0:전체, 1:종목)
trde_tp (str): 매매구분 (0:전체, 1:매도, 2:매수)
stex_tp (str): 거래소구분 (0:통합, 1:KRX, 2:NXT)
stock_code (str, optional): 종목코드 (6자리). Required when all_stk_tp is "1".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 미체결 데이터
{
"oso": [
{
"acnt_no": str, # 계좌번호
"ord_no": str, # 주문번호
"mang_empno": str, # 관리사번
"stk_cd": str, # 종목코드
"tsk_tp": str, # 업무구분
"ord_stt": str, # 주문상태
"stk_nm": str, # 종목명
"ord_qty": str, # 주문수량
"ord_pric": str, # 주문가격
"oso_qty": str, # 미체결수량
"cntr_tot_amt": str, # 체결누계금액
"orig_ord_no": str, # 원주문번호
"io_tp_nm": str, # 주문구분
"trde_tp": str, # 매매구분
"tm": str, # 시간
"cntr_no": str, # 체결번호
"cntr_pric": str, # 체결가
"cntr_qty": str, # 체결량
"cur_prc": str, # 현재가
"sel_bid": str, # 매도호가
"buy_bid": str, # 매수호가
"unit_cntr_pric": str, # 단위체결가
"unit_cntr_qty": str, # 단위체결량
"tdy_trde_cmsn": str, # 당일매매수수료
"tdy_trde_tax": str, # 당일매매세금
"ind_invsr": str, # 개인투자자
"stex_tp": str, # 거래소구분
"stex_tp_txt": str, # 거래소구분텍스트
"sor_yn": str, # SOR 여부값
"stop_pric": str, # 스톱가
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.unfilled_orders_request_ka10075(
... all_stk_tp="1",
... trde_tp="0",
... stex_tp="0",
... stock_code="005930"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10075",
}
data = {
"all_stk_tp": all_stk_tp,
"trde_tp": trde_tp,
"stex_tp": stex_tp,
}
if stock_code:
data["stk_cd"] = stock_code
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def filled_orders_request_ka10076(
self,
qry_tp: str,
sell_tp: str,
stex_tp: str,
stock_code: str = None,
order_no: str = None,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
체결요청 (ka10076)
Args:
qry_tp (str): 조회구분 (0:전체, 1:종목)
sell_tp (str): 매도수구분 (0:전체, 1:매도, 2:매수)
stex_tp (str): 거래소구분 (0:통합, 1:KRX, 2:NXT)
stock_code (str, optional): 종목코드 (6자리). Required when qry_tp is "1".
order_no (str, optional): 주문번호. 검색 기준 값으로 입력한 주문번호 보다 과거에 체결된 내역이 조회됩니다.
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 체결 데이터
{
"cntr": [
{
"ord_no": str, # 주문번호
"stk_nm": str, # 종목명
"io_tp_nm": str, # 주문구분
"ord_pric": str, # 주문가격
"ord_qty": str, # 주문수량
"cntr_pric": str, # 체결가
"cntr_qty": str, # 체결량
"oso_qty": str, # 미체결수량
"tdy_trde_cmsn": str, # 당일매매수수료
"tdy_trde_tax": str, # 당일매매세금
"ord_stt": str, # 주문상태
"trde_tp": str, # 매매구분
"orig_ord_no": str, # 원주문번호
"ord_tm": str, # 주문시간
"stk_cd": str, # 종목코드
"stex_tp": str, # 거래소구분
"stex_tp_txt": str, # 거래소구분텍스트
"sor_yn": str, # SOR 여부값
"stop_pric": str, # 스톱가
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.filled_orders_request_ka10076(
... qry_tp="1",
... sell_tp="0",
... stex_tp="0",
... stock_code="005930"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10076",
}
data = {
"qry_tp": qry_tp,
"sell_tp": sell_tp,
"stex_tp": stex_tp,
}
if stock_code:
data["stk_cd"] = stock_code
if order_no:
data["ord_no"] = order_no
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def today_realized_profit_detail_request_ka10077(
self,
stock_code: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
당일실현손익상세요청 (ka10077)
Args:
stock_code (str): 종목코드 (6자리)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 당일실현손익 상세 데이터
{
"tdy_rlzt_pl": str, # 당일실현손익
"tdy_rlzt_pl_dtl": [
{
"stk_nm": str, # 종목명
"cntr_qty": str, # 체결량
"buy_uv": str, # 매입단가
"cntr_pric": str, # 체결가
"tdy_sel_pl": str, # 당일매도손익
"pl_rt": str, # 손익율
"tdy_trde_cmsn": str, # 당일매매수수료
"tdy_trde_tax": str, # 당일매매세금
"stk_cd": str, # 종목코드
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.today_realized_profit_detail_request_ka10077(
... stock_code="005930"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10077",
}
data = {
"stk_cd": stock_code,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def account_return_rate_request_ka10085(
self,
stex_tp: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
계좌수익률요청 (ka10085)
Args:
stex_tp (str): 거래소구분 (0:통합, 1:KRX, 2:NXT)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 계좌수익률 데이터
{
"acnt_prft_rt": [
{
"dt": str, # 일자
"stk_cd": str, # 종목코드
"stk_nm": str, # 종목명
"cur_prc": str, # 현재가
"pur_pric": str, # 매입가
"pur_amt": str, # 매입금액
"rmnd_qty": str, # 보유수량
"tdy_sel_pl": str, # 당일매도손익
"tdy_trde_cmsn": str, # 당일매매수수료
"tdy_trde_tax": str, # 당일매매세금
"crd_tp": str, # 신용구분
"loan_dt": str, # 대출일
"setl_remn": str, # 결제잔고
"clrn_alow_qty": str, # 청산가능수량
"crd_amt": str, # 신용금액
"crd_int": str, # 신용이자
"expr_dt": str, # 만기일
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.account_return_rate_request_ka10085(
... stex_tp="0" # 통합 거래소
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10085",
}
data = {
"stex_tp": stex_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def unfilled_split_order_detail_request_ka10088(
self,
order_no: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
미체결 분할주문 상세 요청 (ka10088)
Args:
order_no (str): 주문번호 (20자리)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 미체결 분할주문 상세 데이터
{
"osop": [
{
"stk_cd": str, # 종목코드
"acnt_no": str, # 계좌번호
"stk_nm": str, # 종목명
"ord_no": str, # 주문번호
"ord_qty": str, # 주문수량
"ord_pric": str, # 주문가격
"osop_qty": str, # 미체결수량
"io_tp_nm": str, # 주문구분
"trde_tp": str, # 매매구분
"sell_tp": str, # 매도/수 구분
"cntr_qty": str, # 체결량
"ord_stt": str, # 주문상태
"cur_prc": str, # 현재가
"stex_tp": str, # 거래소구분 (0:통합, 1:KRX, 2:NXT)
"stex_tp_txt": str, # 거래소구분텍스트 (통합,KRX,NXT)
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.unfilled_split_order_detail_request_ka10088(
... order_no="8"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10088",
}
data = {
"ord_no": order_no,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def today_trading_journal_request_ka10170(
self,
ottks_tp: str,
ch_crd_tp: str,
base_dt: str = "",
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
당일매매일지 요청 (ka10170)
Args:
ottks_tp (str): 단주구분 (1:당일매수에 대한 당일매도, 2:당일매도 전체)
ch_crd_tp (str): 현금신용구분 (0:전체, 1:현금매매만, 2:신용매매만)
base_dt (str, optional): 기준일자 (YYYYMMDD). 공백입력시 금일데이터, 최근 2개월까지 제공. Defaults to "".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 당일매매일지 데이터
{
"tot_sell_amt": str, # 총매도금액
"tot_buy_amt": str, # 총매수금액
"tot_cmsn_tax": str, # 총수수료_세금
"tot_exct_amt": str, # 총정산금액
"tot_pl_amt": str, # 총손익금액
"tot_prft_rt": str, # 총수익률
"tdy_trde_diary": [ # 당일매매일지
{
"stk_nm": str, # 종목명
"buy_avg_pric": str, # 매수평균가
"buy_qty": str, # 매수수량
"sel_avg_pric": str, # 매도평균가
"sell_qty": str, # 매도수량
"cmsn_alm_tax": str, # 수수료_제세금
"pl_amt": str, # 손익금액
"sell_amt": str, # 매도금액
"buy_amt": str, # 매수금액
"prft_rt": str, # 수익률
"stk_cd": str, # 종목코드
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.today_trading_journal_request_ka10170(
... ottks_tp="1",
... ch_crd_tp="0",
... base_dt="20241120"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "ka10170",
}
data = {
"ottks_tp": ottks_tp,
"ch_crd_tp": ch_crd_tp,
}
if base_dt:
data["base_dt"] = base_dt
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def deposit_detail_status_request_kt00001(
self,
qry_tp: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
예수금상세현황 요청 (kt00001)
Args:
qry_tp (str): 조회구분 (3:추정조회, 2:일반조회)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 예수금상세현황 데이터
{
"entr": str, # 예수금
"profa_ch": str, # 주식증거금현금
"bncr_profa_ch": str, # 수익증권증거금현금
"nxdy_bncr_sell_exct": str, # 익일수익증권매도정산대금
"fc_stk_krw_repl_set_amt": str, # 해외주식원화대용설정금
"crd_grnta_ch": str, # 신용보증금현금
"crd_grnt_ch": str, # 신용담보금현금
"add_grnt_ch": str, # 추가담보금현금
"etc_profa": str, # 기타증거금
"uncl_stk_amt": str, # 미수확보금
"shrts_prica": str, # 공매도대금
"crd_set_grnta": str, # 신용설정평가금
"chck_ina_amt": str, # 수표입금액
"etc_chck_ina_amt": str, # 기타수표입금액
"crd_grnt_ruse": str, # 신용담보재사용
"knx_asset_evltv": str, # 코넥스기본예탁금
"elwdpst_evlta": str, # ELW예탁평가금
"crd_ls_rght_frcs_amt": str, # 신용대주권리예정금액
"lvlh_join_amt": str, # 생계형가입금액
"lvlh_trns_alowa": str, # 생계형입금가능금액
"repl_amt": str, # 대용금평가금액(합계)
"remn_repl_evlta": str, # 잔고대용평가금액
"trst_remn_repl_evlta": str, # 위탁대용잔고평가금액
"bncr_remn_repl_evlta": str, # 수익증권대용평가금액
"profa_repl": str, # 위탁증거금대용
"crd_grnta_repl": str, # 신용보증금대용
"crd_grnt_repl": str, # 신용담보금대용
"add_grnt_repl": str, # 추가담보금대용
"rght_repl_amt": str, # 권리대용금
"pymn_alow_amt": str, # 출금가능금액
"wrap_pymn_alow_amt": str, # 랩출금가능금액
"ord_alow_amt": str, # 주문가능금액
"bncr_buy_alowa": str, # 수익증권매수가능금액
"20stk_ord_alow_amt": str, # 20%종목주문가능금액
"30stk_ord_alow_amt": str, # 30%종목주문가능금액
"40stk_ord_alow_amt": str, # 40%종목주문가능금액
"100stk_ord_alow_amt": str, # 100%종목주문가능금액
"ch_uncla": str, # 현금미수금
"ch_uncla_dlfe": str, # 현금미수연체료
"ch_uncla_tot": str, # 현금미수금합계
"crd_int_npay": str, # 신용이자미납
"int_npay_amt_dlfe": str, # 신용이자미납연체료
"int_npay_amt_tot": str, # 신용이자미납합계
"etc_loana": str, # 기타대여금
"etc_loana_dlfe": str, # 기타대여금연체료
"etc_loan_tot": str, # 기타대여금합계
"nrpy_loan": str, # 미상환융자금
"loan_sum": str, # 융자금합계
"ls_sum": str, # 대주금합계
"crd_grnt_rt": str, # 신용담보비율
"mdstrm_usfe": str, # 중도이용료
"min_ord_alow_yn": str, # 최소주문가능금액
"loan_remn_evlt_amt": str, # 대출총평가금액
"dpst_grntl_remn": str, # 예탁담보대출잔고
"sell_grntl_remn": str, # 매도담보대출잔고
"d1_entra": str, # d+1추정예수금
"d1_slby_exct_amt": str, # d+1매도매수정산금
"d1_buy_exct_amt": str, # d+1매수정산금
"d1_out_rep_mor": str, # d+1미수변제소요금
"d1_sel_exct_amt": str, # d+1매도정산금
"d1_pymn_alow_amt": str, # d+1출금가능금액
"d2_entra": str, # d+2추정예수금
"d2_slby_exct_amt": str, # d+2매도매수정산금
"d2_buy_exct_amt": str, # d+2매수정산금
"d2_out_rep_mor": str, # d+2미수변제소요금
"d2_sel_exct_amt": str, # d+2매도정산금
"d2_pymn_alow_amt": str, # d+2출금가능금액
"50stk_ord_alow_amt": str, # 50%종목주문가능금액
"60stk_ord_alow_amt": str, # 60%종목주문가능금액
"stk_entr_prst": [ # 종목별예수금
{
"crnc_cd": str, # 통화코드
"fx_entr": str, # 외화예수금
"fc_krw_repl_evlta": str, # 원화대용평가금
"fc_trst_profa": str, # 해외주식증거금
"pymn_alow_amt": str, # 출금가능금액
"pymn_alow_amt_entr": str, # 출금가능금액(예수금)
"ord_alow_amt_entr": str, # 주문가능금액(예수금)
"fc_uncla": str, # 외화미수(합계)
"fc_ch_uncla": str, # 외화현금미수금
"dly_amt": str, # 연체료
"d1_fx_entr": str, # d+1외화예수금
"d2_fx_entr": str, # d+2외화예수금
"d3_fx_entr": str, # d+3외화예수금
"d4_fx_entr": str, # d+4외화예수금
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.deposit_detail_status_request_kt00001(
... qry_tp="3" # 추정조회
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt00001",
}
data = {
"qry_tp": qry_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def daily_estimated_deposit_asset_status_request_kt00002(
self,
start_dt: str,
end_dt: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
일별추정예탁자산현황 요청 (kt00002)
Args:
start_dt (str): 시작조회기간 (YYYYMMDD)
end_dt (str): 종료조회기간 (YYYYMMDD)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 일별추정예탁자산현황 데이터
{
"daly_prsm_dpst_aset_amt_prst": [ # 일별추정예탁자산현황
{
"dt": str, # 일자
"entr": str, # 예수금
"grnt_use_amt": str, # 담보대출금
"crd_loan": str, # 신용융자금
"ls_grnt": str, # 대주담보금
"repl_amt": str, # 대용금
"prsm_dpst_aset_amt": str, # 추정예탁자산
"prsm_dpst_aset_amt_bncr_skip": str, # 추정예탁자산수익증권제외
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.daily_estimated_deposit_asset_status_request_kt00002(
... start_dt="20241111",
... end_dt="20241125"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt00002",
}
data = {
"start_dt": start_dt,
"end_dt": end_dt,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def estimated_asset_inquiry_request_kt00003(
self,
qry_tp: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
추정자산조회요청 (kt00003)
Args:
qry_tp (str): 상장폐지조회구분 (0:전체, 1:상장폐지종목제외)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 추정자산 데이터
{
"prsm_dpst_aset_amt": str, # 추정예탁자산
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.estimated_asset_inquiry_request_kt00003(
... qry_tp="0" # 전체 조회
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt00003",
}
data = {
"qry_tp": qry_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def account_evaluation_status_request_kt00004(
self,
qry_tp: str,
dmst_stex_tp: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
계좌평가현황요청 (kt00004)
Args:
qry_tp (str): 상장폐지조회구분 (0:전체, 1:상장폐지종목제외)
dmst_stex_tp (str): 국내거래소구분 (KRX:한국거래소, NXT:넥스트트레이드)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 계좌평가현황 데이터
{
"acnt_nm": str, # 계좌명
"brch_nm": str, # 지점명
"entr": str, # 예수금
"d2_entra": str, # D+2추정예수금
"tot_est_amt": str, # 유가잔고평가액
"aset_evlt_amt": str, # 예탁자산평가액
"tot_pur_amt": str, # 총매입금액
"prsm_dpst_aset_amt": str, # 추정예탁자산
"tot_grnt_sella": str, # 매도담보대출금
"tdy_lspft_amt": str, # 당일투자원금
"invt_bsamt": str, # 당월투자원금
"lspft_amt": str, # 누적투자원금
"tdy_lspft": str, # 당일투자손익
"lspft2": str, # 당월투자손익
"lspft": str, # 누적투자손익
"tdy_lspft_rt": str, # 당일손익율
"lspft_ratio": str, # 당월손익율
"lspft_rt": str, # 누적손익율
"stk_acnt_evlt_prst": [ # 종목별계좌평가현황
{
"stk_cd": str, # 종목코드
"stk_nm": str, # 종목명
"rmnd_qty": str, # 보유수량
"avg_prc": str, # 평균단가
"cur_prc": str, # 현재가
"evlt_amt": str, # 평가금액
"pl_amt": str, # 손익금액
"pl_rt": str, # 손익율
"loan_dt": str, # 대출일
"pur_amt": str, # 매입금액
"setl_remn": str, # 결제잔고
"pred_buyq": str, # 전일매수수량
"pred_sellq": str, # 전일매도수량
"tdy_buyq": str, # 금일매수수량
"tdy_sellq": str, # 금일매도수량
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.account_evaluation_status_request_kt00004(
... qry_tp="0", # 전체 조회
... dmst_stex_tp="KRX" # 한국거래소
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt00004",
}
data = {
"qry_tp": qry_tp,
"dmst_stex_tp": dmst_stex_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def filled_position_request_kt00005(
self,
dmst_stex_tp: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
체결잔고요청 (kt00005)
Args:
dmst_stex_tp (str): 국내거래소구분 (KRX:한국거래소, NXT:넥스트트레이드)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 체결잔고 데이터
{
"entr": str, # 예수금
"entr_d1": str, # 예수금D+1
"entr_d2": str, # 예수금D+2
"pymn_alow_amt": str, # 출금가능금액
"uncl_stk_amt": str, # 미수확보금
"repl_amt": str, # 대용금
"rght_repl_amt": str, # 권리대용금
"ord_alowa": str, # 주문가능현금
"ch_uncla": str, # 현금미수금
"crd_int_npay_gold": str, # 신용이자미납금
"etc_loana": str, # 기타대여금
"nrpy_loan": str, # 미상환융자금
"profa_ch": str, # 증거금현금
"repl_profa": str, # 증거금대용
"stk_buy_tot_amt": str, # 주식매수총액
"evlt_amt_tot": str, # 평가금액합계
"tot_pl_tot": str, # 총손익합계
"tot_pl_rt": str, # 총손익률
"tot_re_buy_alowa": str, # 총재매수가능금액
"20ord_alow_amt": str, # 20%주문가능금액
"30ord_alow_amt": str, # 30%주문가능금액
"40ord_alow_amt": str, # 40%주문가능금액
"50ord_alow_amt": str, # 50%주문가능금액
"60ord_alow_amt": str, # 60%주문가능금액
"100ord_alow_amt": str, # 100%주문가능금액
"crd_loan_tot": str, # 신용융자합계
"crd_loan_ls_tot": str, # 신용융자대주합계
"crd_grnt_rt": str, # 신용담보비율
"dpst_grnt_use_amt_amt": str, # 예탁담보대출금액
"grnt_loan_amt": str, # 매도담보대출금액
"stk_cntr_remn": [ # 종목별체결잔고
{
"crd_tp": str, # 신용구분
"loan_dt": str, # 대출일
"expr_dt": str, # 만기일
"stk_cd": str, # 종목번호
"stk_nm": str, # 종목명
"setl_remn": str, # 결제잔고
"cur_qty": str, # 현재잔고
"cur_prc": str, # 현재가
"buy_uv": str, # 매입단가
"pur_amt": str, # 매입금액
"evlt_amt": str, # 평가금액
"evltv_prft": str, # 평가손익
"pl_rt": str, # 손익률
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.filled_position_request_kt00005(
... dmst_stex_tp="KRX" # 한국거래소
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt00005",
}
data = {
"dmst_stex_tp": dmst_stex_tp,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def account_order_execution_detail_request_kt00007(
self,
qry_tp: str,
stk_bond_tp: str,
sell_tp: str,
dmst_stex_tp: str,
ord_dt: str = "",
stock_code: str = "",
fr_ord_no: str = "",
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
계좌별주문체결내역상세요청 (kt00007)
Args:
qry_tp (str): 조회구분 (1:주문순, 2:역순, 3:미체결, 4:체결내역만)
stk_bond_tp (str): 주식채권구분 (0:전체, 1:주식, 2:채권)
sell_tp (str): 매도수구분 (0:전체, 1:매도, 2:매수)
dmst_stex_tp (str): 국내거래소구분 (%:전체, KRX:한국거래소, NXT:넥스트트레이드, SOR:최선주문집행)
ord_dt (str, optional): 주문일자 (YYYYMMDD). Defaults to "".
stock_code (str, optional): 종목코드 (12자리). 공백일때 전체종목. Defaults to "".
fr_ord_no (str, optional): 시작주문번호 (7자리). 공백일때 전체주문. Defaults to "".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 계좌별주문체결내역상세 데이터
{
"acnt_ord_cntr_prps_dtl": [ # 계좌별주문체결내역상세
{
"ord_no": str, # 주문번호
"stk_cd": str, # 종목번호
"trde_tp": str, # 매매구분
"crd_tp": str, # 신용구분
"ord_qty": str, # 주문수량
"ord_uv": str, # 주문단가
"cnfm_qty": str, # 확인수량
"acpt_tp": str, # 접수구분
"rsrv_tp": str, # 반대여부
"ord_tm": str, # 주문시간
"ori_ord": str, # 원주문
"stk_nm": str, # 종목명
"io_tp_nm": str, # 주문구분
"loan_dt": str, # 대출일
"cntr_qty": str, # 체결수량
"cntr_uv": str, # 체결단가
"ord_remnq": str, # 주문잔량
"comm_ord_tp": str, # 통신구분
"mdfy_cncl": str, # 정정취소
"cnfm_tm": str, # 확인시간
"dmst_stex_tp": str, # 국내거래소구분
"cond_uv": str, # 스톱가
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.account_order_execution_detail_request_kt00007(
... qry_tp="1", # 주문순
... stk_bond_tp="0", # 전체
... sell_tp="0", # 전체
... dmst_stex_tp="%", # 전체
... stock_code="005930" # 삼성전자
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt00007",
}
data = {
"qry_tp": qry_tp,
"stk_bond_tp": stk_bond_tp,
"sell_tp": sell_tp,
"dmst_stex_tp": dmst_stex_tp,
}
if ord_dt:
data["ord_dt"] = ord_dt
if stock_code:
data["stk_cd"] = stock_code
if fr_ord_no:
data["fr_ord_no"] = fr_ord_no
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def next_day_settlement_schedule_request_kt00008(
self,
strt_dcd_seq: str = "",
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
계좌별익일결제예정내역요청 (kt00008)
Args:
strt_dcd_seq (str, optional): 시작결제번호 (7자리). Defaults to "".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 계좌별익일결제예정내역 데이터
{
"trde_dt": str, # 매매일자
"setl_dt": str, # 결제일자
"sell_amt_sum": str, # 매도정산합
"buy_amt_sum": str, # 매수정산합
"acnt_nxdy_setl_frcs_prps_array": [ # 계좌별익일결제예정내역배열
{
"seq": str, # 일련번호
"stk_cd": str, # 종목번호
"loan_dt": str, # 대출일
"qty": str, # 수량
"engg_amt": str, # 약정금액
"cmsn": str, # 수수료
"incm_tax": str, # 소득세
"rstx": str, # 농특세
"stk_nm": str, # 종목명
"sell_tp": str, # 매도수구분
"unp": str, # 단가
"exct_amt": str, # 정산금액
"trde_tax": str, # 거래세
"resi_tax": str, # 주민세
"crd_tp": str, # 신용구분
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.next_day_settlement_schedule_request_kt00008()
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt00008",
}
data = {}
if strt_dcd_seq:
data["strt_dcd_seq"] = strt_dcd_seq
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def account_order_execution_status_request_kt00009(
self,
stk_bond_tp: str,
mrkt_tp: str,
sell_tp: str,
qry_tp: str,
dmst_stex_tp: str,
ord_dt: str = "",
stock_code: str = "",
fr_ord_no: str = "",
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
계좌별주문체결현황요청 (kt00009)
Args:
stk_bond_tp (str): 주식채권구분 (0:전체, 1:주식, 2:채권)
mrkt_tp (str): 시장구분 (0:전체, 1:코스피, 2:코스닥, 3:OTCBB, 4:ECN)
sell_tp (str): 매도수구분 (0:전체, 1:매도, 2:매수)
qry_tp (str): 조회구분 (0:전체, 1:체결)
dmst_stex_tp (str): 국내거래소구분 (%:전체, KRX:한국거래소, NXT:넥스트트레이드, SOR:최선주문집행)
ord_dt (str, optional): 주문일자 (YYYYMMDD). Defaults to "".
stock_code (str, optional): 종목코드 (12자리). Defaults to "".
fr_ord_no (str, optional): 시작주문번호 (7자리). Defaults to "".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 계좌별주문체결현황 데이터
{
"sell_grntl_engg_amt": str, # 매도약정금액
"buy_engg_amt": str, # 매수약정금액
"engg_amt": str, # 약정금액
"acnt_ord_cntr_prst_array": [ # 계좌별주문체결현황배열
{
"stk_bond_tp": str, # 주식채권구분
"ord_no": str, # 주문번호
"stk_cd": str, # 종목번호
"trde_tp": str, # 매매구분
"io_tp_nm": str, # 주문유형구분
"ord_qty": str, # 주문수량
"ord_uv": str, # 주문단가
"cnfm_qty": str, # 확인수량
"rsrv_oppo": str, # 예약/반대
"cntr_no": str, # 체결번호
"acpt_tp": str, # 접수구분
"orig_ord_no": str, # 원주문번호
"stk_nm": str, # 종목명
"setl_tp": str, # 결제구분
"crd_deal_tp": str, # 신용거래구분
"cntr_qty": str, # 체결수량
"cntr_uv": str, # 체결단가
"comm_ord_tp": str, # 통신구분
"mdfy_cncl_tp": str, # 정정/취소구분
"cntr_tm": str, # 체결시간
"dmst_stex_tp": str, # 국내거래소구분
"cond_uv": str, # 스톱가
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.account_order_execution_status_request_kt00009(
... stk_bond_tp="0", # 전체
... mrkt_tp="0", # 전체
... sell_tp="0", # 전체
... qry_tp="0", # 전체
... dmst_stex_tp="KRX" # 한국거래소
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt00009",
}
data = {
"stk_bond_tp": stk_bond_tp,
"mrkt_tp": mrkt_tp,
"sell_tp": sell_tp,
"qry_tp": qry_tp,
"dmst_stex_tp": dmst_stex_tp,
}
if ord_dt:
data["ord_dt"] = ord_dt
if stock_code:
data["stk_cd"] = stock_code
if fr_ord_no:
data["fr_ord_no"] = fr_ord_no
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def withdrawable_order_amount_request_kt00010(
self,
stock_code: str,
trde_tp: str,
uv: str,
io_amt: str = "",
trde_qty: str = "",
exp_buy_unp: str = "",
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
주문인출가능금액요청 (kt00010)
Args:
stock_code (str): 종목번호 (12자리)
trde_tp (str): 매매구분 (1:매도, 2:매수)
uv (str): 매수가격 (10자리)
io_amt (str, optional): 입출금액 (12자리). Defaults to "".
trde_qty (str, optional): 매매수량 (10자리). Defaults to "".
exp_buy_unp (str, optional): 예상매수단가 (10자리). Defaults to "".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 주문인출가능금액 데이터
{
"profa_20ord_alow_amt": str, # 증거금20%주문가능금액
"profa_20ord_alowq": str, # 증거금20%주문가능수량
"profa_30ord_alow_amt": str, # 증거금30%주문가능금액
"profa_30ord_alowq": str, # 증거금30%주문가능수량
"profa_40ord_alow_amt": str, # 증거금40%주문가능금액
"profa_40ord_alowq": str, # 증거금40%주문가능수량
"profa_50ord_alow_amt": str, # 증거금50%주문가능금액
"profa_50ord_alowq": str, # 증거금50%주문가능수량
"profa_60ord_alow_amt": str, # 증거금60%주문가능금액
"profa_60ord_alowq": str, # 증거금60%주문가능수량
"profa_rdex_60ord_alow_amt": str, # 증거금감면60%주문가능금
"profa_rdex_60ord_alowq": str, # 증거금감면60%주문가능수
"profa_100ord_alow_amt": str, # 증거금100%주문가능금액
"profa_100ord_alowq": str, # 증거금100%주문가능수량
"pred_reu_alowa": str, # 전일재사용가능금액
"tdy_reu_alowa": str, # 금일재사용가능금액
"entr": str, # 예수금
"repl_amt": str, # 대용금
"uncla": str, # 미수금
"ord_pos_repl": str, # 주문가능대용
"ord_alowa": str, # 주문가능현금
"wthd_alowa": str, # 인출가능금액
"nxdy_wthd_alowa": str, # 익일인출가능금액
"pur_amt": str, # 매입금액
"cmsn": str, # 수수료
"pur_exct_amt": str, # 매입정산금
"d2entra": str, # D2추정예수금
"profa_rdex_aplc_tp": str, # 증거금감면적용구분 (0:일반,1:60%감면)
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.withdrawable_order_amount_request_kt00010(
... stock_code="005930", # 삼성전자
... trde_tp="2", # 매수
... uv="267000" # 매수가격
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt00010",
}
data = {
"stk_cd": stock_code,
"trde_tp": trde_tp,
"uv": uv,
}
if io_amt:
data["io_amt"] = io_amt
if trde_qty:
data["trde_qty"] = trde_qty
if exp_buy_unp:
data["exp_buy_unp"] = exp_buy_unp
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def orderable_quantity_by_margin_ratio_request_kt00011(
self,
stock_code: str,
uv: str = "",
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
증거금율별주문가능수량조회요청 (kt00011)
Args:
stock_code (str): 종목번호 (12자리)
uv (str, optional): 매수가격 (10자리). Defaults to "".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 증거금율별주문가능수량 데이터
{
"stk_profa_rt": str, # 종목증거금율
"profa_rt": str, # 계좌증거금율
"aplc_rt": str, # 적용증거금율
"profa_20ord_alow_amt": str, # 증거금20%주문가능금액
"profa_20ord_alowq": str, # 증거금20%주문가능수량
"profa_20pred_reu_amt": str, # 증거금20%전일재사용금액
"profa_20tdy_reu_amt": str, # 증거금20%금일재사용금액
"profa_30ord_alow_amt": str, # 증거금30%주문가능금액
"profa_30ord_alowq": str, # 증거금30%주문가능수량
"profa_30pred_reu_amt": str, # 증거금30%전일재사용금액
"profa_30tdy_reu_amt": str, # 증거금30%금일재사용금액
"profa_40ord_alow_amt": str, # 증거금40%주문가능금액
"profa_40ord_alowq": str, # 증거금40%주문가능수량
"profa_40pred_reu_amt": str, # 증거금40%전일재사용금액
"profa_40tdy_reu_amt": str, # 증거금40%금일재사용금액
"profa_50ord_alow_amt": str, # 증거금50%주문가능금액
"profa_50ord_alowq": str, # 증거금50%주문가능수량
"profa_50pred_reu_amt": str, # 증거금50%전일재사용금액
"profa_50tdy_reu_amt": str, # 증거금50%금일재사용금액
"profa_60ord_alow_amt": str, # 증거금60%주문가능금액
"profa_60ord_alowq": str, # 증거금60%주문가능수량
"profa_60pred_reu_amt": str, # 증거금60%전일재사용금액
"profa_60tdy_reu_amt": str, # 증거금60%금일재사용금액
"profa_100ord_alow_amt": str, # 증거금100%주문가능금액
"profa_100ord_alowq": str, # 증거금100%주문가능수량
"profa_100pred_reu_amt": str, # 증거금100%전일재사용금액
"profa_100tdy_reu_amt": str, # 증거금100%금일재사용금액
"min_ord_alow_amt": str, # 미수불가주문가능금액
"min_ord_alowq": str, # 미수불가주문가능수량
"min_pred_reu_amt": str, # 미수불가전일재사용금액
"min_tdy_reu_amt": str, # 미수불가금일재사용금액
"entr": str, # 예수금
"repl_amt": str, # 대용금
"uncla": str, # 미수금
"ord_pos_repl": str, # 주문가능대용
"ord_alowa": str, # 주문가능현금
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.orderable_quantity_by_margin_ratio_request_kt00011(
... stock_code="005930" # 삼성전자
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt00011",
}
data = {
"stk_cd": stock_code,
}
if uv:
data["uv"] = uv
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def orderable_quantity_by_credit_guarantee_ratio_request_kt00012(
self,
stock_code: str,
uv: str = "",
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
신용보증금율별주문가능수량조회요청 (kt00012)
Args:
stock_code (str): 종목번호 (12자리)
uv (str, optional): 매수가격 (10자리). Defaults to "".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 신용보증금율별주문가능수량 데이터
{
"stk_assr_rt": str, # 종목보증금율
"stk_assr_rt_nm": str, # 종목보증금율명
"assr_30ord_alow_amt": str, # 보증금30%주문가능금액
"assr_30ord_alowq": str, # 보증금30%주문가능수량
"assr_30pred_reu_amt": str, # 보증금30%전일재사용금액
"assr_30tdy_reu_amt": str, # 보증금30%금일재사용금액
"assr_40ord_alow_amt": str, # 보증금40%주문가능금액
"assr_40ord_alowq": str, # 보증금40%주문가능수량
"assr_40pred_reu_amt": str, # 보증금40%전일재사용금액
"assr_40tdy_reu_amt": str, # 보증금40%금일재사용금액
"assr_50ord_alow_amt": str, # 보증금50%주문가능금액
"assr_50ord_alowq": str, # 보증금50%주문가능수량
"assr_50pred_reu_amt": str, # 보증금50%전일재사용금액
"assr_50tdy_reu_amt": str, # 보증금50%금일재사용금액
"assr_60ord_alow_amt": str, # 보증금60%주문가능금액
"assr_60ord_alowq": str, # 보증금60%주문가능수량
"assr_60pred_reu_amt": str, # 보증금60%전일재사용금액
"assr_60tdy_reu_amt": str, # 보증금60%금일재사용금액
"entr": str, # 예수금
"repl_amt": str, # 대용금
"uncla": str, # 미수금
"ord_pos_repl": str, # 주문가능대용
"ord_alowa": str, # 주문가능현금
"out_alowa": str, # 미수가능금액
"out_pos_qty": str, # 미수가능수량
"min_amt": str, # 미수불가금액
"min_qty": str, # 미수불가수량
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.orderable_quantity_by_credit_guarantee_ratio_request_kt00012(
... stock_code="005930" # 삼성전자
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt00012",
}
data = {
"stk_cd": stock_code,
}
if uv:
data["uv"] = uv
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def margin_detail_inquiry_request_kt00013(
self,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
증거금세부내역조회요청 (kt00013)
Args:
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 증거금세부내역 데이터
{
"tdy_reu_objt_amt": str, # 금일재사용대상금액
"tdy_reu_use_amt": str, # 금일재사용사용금액
"tdy_reu_alowa": str, # 금일재사용가능금액
"tdy_reu_lmtt_amt": str, # 금일재사용제한금액
"tdy_reu_alowa_fin": str, # 금일재사용가능금액최종
"pred_reu_objt_amt": str, # 전일재사용대상금액
"pred_reu_use_amt": str, # 전일재사용사용금액
"pred_reu_alowa": str, # 전일재사용가능금액
"pred_reu_lmtt_amt": str, # 전일재사용제한금액
"pred_reu_alowa_fin": str, # 전일재사용가능금액최종
"ch_amt": str, # 현금금액
"ch_profa": str, # 현금증거금
"use_pos_ch": str, # 사용가능현금
"ch_use_lmtt_amt": str, # 현금사용제한금액
"use_pos_ch_fin": str, # 사용가능현금최종
"repl_amt_amt": str, # 대용금액
"repl_profa": str, # 대용증거금
"use_pos_repl": str, # 사용가능대용
"repl_use_lmtt_amt": str, # 대용사용제한금액
"use_pos_repl_fin": str, # 사용가능대용최종
"crd_grnta_ch": str, # 신용보증금현금
"crd_grnta_repl": str, # 신용보증금대용
"crd_grnt_ch": str, # 신용담보금현금
"crd_grnt_repl": str, # 신용담보금대용
"uncla": str, # 미수금
"ls_grnt_reu_gold": str, # 대주담보금재사용금
"20ord_alow_amt": str, # 20%주문가능금액
"30ord_alow_amt": str, # 30%주문가능금액
"40ord_alow_amt": str, # 40%주문가능금액
"50ord_alow_amt": str, # 50%주문가능금액
"60ord_alow_amt": str, # 60%주문가능금액
"100ord_alow_amt": str, # 100%주문가능금액
"tdy_crd_rpya_loss_amt": str, # 금일신용상환손실금액
"pred_crd_rpya_loss_amt": str, # 전일신용상환손실금액
"tdy_ls_rpya_loss_repl_profa": str, # 금일대주상환손실대용증거금
"pred_ls_rpya_loss_repl_profa": str, # 전일대주상환손실대용증거금
"evlt_repl_amt_spg_use_skip": str, # 평가대용금(현물사용제외)
"evlt_repl_rt": str, # 평가대용비율
"crd_repl_profa": str, # 신용대용증거금
"ch_ord_repl_profa": str, # 현금주문대용증거금
"crd_ord_repl_profa": str, # 신용주문대용증거금
"crd_repl_conv_gold": str, # 신용대용환산금
"repl_alowa": str, # 대용가능금액(현금제한)
"repl_alowa_2": str, # 대용가능금액2(신용제한)
"ch_repl_lck_gold": str, # 현금대용부족금
"crd_repl_lck_gold": str, # 신용대용부족금
"ch_ord_alow_repla": str, # 현금주문가능대용금
"crd_ord_alow_repla": str, # 신용주문가능대용금
"d2vexct_entr": str, # D2가정산예수금
"d2ch_ord_alow_amt": str, # D2현금주문가능금액
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.margin_detail_inquiry_request_kt00013()
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt00013",
}
data = {}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def comprehensive_transaction_history_request_kt00015(
self,
start_date: str,
end_date: str,
transaction_type: str,
stock_code: str = "",
currency_code: str = "",
goods_type: str = "0",
foreign_exchange_code: str = "",
domestic_exchange_type: str = "%",
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
위탁종합거래내역요청 (kt00015)
Args:
start_date (str): 시작일자 (YYYYMMDD)
end_date (str): 종료일자 (YYYYMMDD)
transaction_type (str): 구분 (0:전체,1:입출금,2:입출고,3:매매,4:매수,5:매도,6:입금,7:출금,A:예탁담보대출입금,B:매도담보대출입금,C:현금상환(융자,담보상환),F:환전,M:입출금+환전,G:외화매수,H:외화매도,I:환전정산입금,J:환전정산출금)
stock_code (str, optional): 종목코드 (12자리). Defaults to "".
currency_code (str, optional): 통화코드 (3자리). Defaults to "".
goods_type (str, optional): 상품구분 (0:전체, 1:국내주식, 2:수익증권, 3:해외주식, 4:금융상품). Defaults to "0".
foreign_exchange_code (str, optional): 해외거래소코드 (10자리). Defaults to "".
domestic_exchange_type (str, optional): 국내거래소구분 (%:전체,KRX:한국거래소,NXT:넥스트트레이드). Defaults to "%".
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 위탁종합거래내역 데이터
{
"acnt_no": str, # 계좌번호
"trst_ovrl_trde_prps_array": [ # 위탁종합거래내역배열
{
"trde_dt": str, # 거래일자
"trde_no": str, # 거래번호
"rmrk_nm": str, # 적요명
"crd_deal_tp_nm": str, # 신용거래구분명
"exct_amt": str, # 정산금액
"loan_amt_rpya": str, # 대출금상환
"fc_trde_amt": str, # 거래금액(외)
"fc_exct_amt": str, # 정산금액(외)
"entra_remn": str, # 예수금잔고
"crnc_cd": str, # 통화코드
"trde_ocr_tp": str, # 거래종류구분
"trde_kind_nm": str, # 거래종류명
"stk_nm": str, # 종목명
"trde_amt": str, # 거래금액
"trde_agri_tax": str, # 거래및농특세
"rpy_diffa": str, # 상환차금
"fc_trde_tax": str, # 거래세(외)
"dly_sum": str, # 연체합
"fc_entra": str, # 외화예수금잔고
"mdia_tp_nm": str, # 매체구분명
"io_tp": str, # 입출구분
"io_tp_nm": str, # 입출구분명
"orig_deal_no": str, # 원거래번호
"stk_cd": str, # 종목코드
"trde_qty_jwa_cnt": str, # 거래수량/좌수
"cmsn": str, # 수수료
"int_ls_usfe": str, # 이자/대주이용
"fc_cmsn": str, # 수수료(외)
"fc_dly_sum": str, # 연체합(외)
"vlbl_nowrm": str, # 유가금잔
"proc_tm": str, # 처리시간
"isin_cd": str, # ISIN코드
"stex_cd": str, # 거래소코드
"stex_nm": str, # 거래소명
"trde_unit": str, # 거래단가/환율
"incm_resi_tax": str, # 소득/주민세
"loan_dt": str, # 대출일
"uncl_ocr": str, # 미수(원/주)
"rpym_sum": str, # 변제합
"cntr_dt": str, # 체결일
"rcpy_no": str, # 출납번호
"prcsr": str, # 처리자
"proc_brch": str, # 처리점
"trde_stle": str, # 매매형태
"txon_base_pric": str, # 과세기준가
"tax_sum_cmsn": str, # 세금수수료합
"frgn_pay_txam": str, # 외국납부세액(외)
"fc_uncl_ocr": str, # 미수(외)
"rpym_sum_fr": str, # 변제합(외)
"rcpmnyer": str, # 입금자
"trde_prtc_tp": str, # 거래내역구분
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.comprehensive_transaction_history_request_kt00015(
... start_date="20241121",
... end_date="20241125",
... transaction_type="0" # 전체
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt00015",
}
data = {
"strt_dt": start_date,
"end_dt": end_date,
"tp": transaction_type,
"stk_cd": stock_code,
"crnc_cd": currency_code,
"gds_tp": goods_type,
"frgn_stex_code": foreign_exchange_code,
"dmst_stex_tp": domestic_exchange_type,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def daily_account_return_detail_status_request_kt00016(
self,
from_date: str,
to_date: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
일별계좌수익률상세현황요청 (kt00016)
Args:
from_date (str): 평가시작일 (YYYYMMDD)
to_date (str): 평가종료일 (YYYYMMDD)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 일별계좌수익률상세현황 데이터
{
"mang_empno": str, # 관리사원번호
"mngr_nm": str, # 관리자명
"dept_nm": str, # 관리자지점
"entr_fr": str, # 예수금_초
"entr_to": str, # 예수금_말
"scrt_evlt_amt_fr": str, # 유가증권평가금액_초
"scrt_evlt_amt_to": str, # 유가증권평가금액_말
"ls_grnt_fr": str, # 대주담보금_초
"ls_grnt_to": str, # 대주담보금_말
"crd_loan_fr": str, # 신용융자금_초
"crd_loan_to": str, # 신용융자금_말
"ch_uncla_fr": str, # 현금미수금_초
"ch_uncla_to": str, # 현금미수금_말
"krw_asgna_fr": str, # 원화대용금_초
"krw_asgna_to": str, # 원화대용금_말
"ls_evlta_fr": str, # 대주평가금_초
"ls_evlta_to": str, # 대주평가금_말
"rght_evlta_fr": str, # 권리평가금_초
"rght_evlta_to": str, # 권리평가금_말
"loan_amt_fr": str, # 대출금_초
"loan_amt_to": str, # 대출금_말
"etc_loana_fr": str, # 기타대여금_초
"etc_loana_to": str, # 기타대여금_말
"crd_int_npay_gold_fr": str, # 신용이자미납금_초
"crd_int_npay_gold_to": str, # 신용이자미납금_말
"crd_int_fr": str, # 신용이자_초
"crd_int_to": str, # 신용이자_말
"tot_amt_fr": str, # 순자산액계_초
"tot_amt_to": str, # 순자산액계_말
"invt_bsamt": str, # 투자원금평잔
"evltv_prft": str, # 평가손익
"prft_rt": str, # 수익률
"tern_rt": str, # 회전율
"termin_tot_trns": str, # 기간내총입금
"termin_tot_pymn": str, # 기간내총출금
"termin_tot_inq": str, # 기간내총입고
"termin_tot_outq": str, # 기간내총출고
"futr_repl_sella": str, # 선물대용매도금액
"trst_repl_sella": str, # 위탁대용매도금액
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.daily_account_return_detail_status_request_kt00016(
... from_date="20241111",
... to_date="20241125"
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt00016",
}
data = {
"fr_dt": from_date,
"to_dt": to_date,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def today_account_status_by_account_request_kt00017(
self,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
계좌별당일현황요청 (kt00017)
Args:
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 계좌별당일현황 데이터
{
"d2_entra": str, # D+2추정예수금
"crd_int_npay_gold": str, # 신용이자미납금
"etc_loana": str, # 기타대여금
"gnrl_stk_evlt_amt_d2": str, # 일반주식평가금액D+2
"dpst_grnt_use_amt_d2": str, # 예탁담보대출금D+2
"crd_stk_evlt_amt_d2": str, # 예탁담보주식평가금액D+2
"crd_loan_d2": str, # 신용융자금D+2
"crd_loan_evlta_d2": str, # 신용융자평가금D+2
"crd_ls_grnt_d2": str, # 신용대주담보금D+2
"crd_ls_evlta_d2": str, # 신용대주평가금D+2
"ina_amt": str, # 입금금액
"outa": str, # 출금금액
"inq_amt": str, # 입고금액
"outq_amt": str, # 출고금액
"sell_amt": str, # 매도금액
"buy_amt": str, # 매수금액
"cmsn": str, # 수수료
"tax": str, # 세금
"stk_pur_cptal_loan_amt": str, # 주식매입자금대출금
"rp_evlt_amt": str, # RP평가금액
"bd_evlt_amt": str, # 채권평가금액
"elsevlt_amt": str, # ELS평가금액
"crd_int_amt": str, # 신용이자금액
"sel_prica_grnt_loan_int_amt_amt": str, # 매도대금담보대출이자금액
"dvida_amt": str, # 배당금액
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.today_account_status_by_account_request_kt00017()
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt00017",
}
data = {}
return self._execute_request(
"POST",
json=data,
headers=headers,
)
def account_evaluation_balance_detail_request_kt00018(
self,
query_type: str,
domestic_exchange_type: str,
cont_yn: str = "N",
next_key: str = ""
) -> dict:
"""
계좌평가잔고내역요청 (kt00018)
Args:
query_type (str): 조회구분 (1:합산, 2:개별)
domestic_exchange_type (str): 국내거래소구분 (KRX:한국거래소,NXT:넥스트트레이드)
cont_yn (str, optional): 연속조회여부. Defaults to "N".
next_key (str, optional): 연속조회키. Defaults to "".
Returns:
dict: 계좌평가잔고내역 데이터
{
"tot_pur_amt": str, # 총매입금액
"tot_evlt_amt": str, # 총평가금액
"tot_evlt_pl": str, # 총평가손익금액
"tot_prft_rt": str, # 총수익률(%)
"prsm_dpst_aset_amt": str, # 추정예탁자산
"tot_loan_amt": str, # 총대출금
"tot_crd_loan_amt": str, # 총융자금액
"tot_crd_ls_amt": str, # 총대주금액
"acnt_evlt_remn_indv_tot": [ # 계좌평가잔고개별합산
{
"stk_cd": str, # 종목번호
"stk_nm": str, # 종목명
"evltv_prft": str, # 평가손익
"prft_rt": str, # 수익률(%)
"pur_pric": str, # 매입가
"pred_close_pric": str, # 전일종가
"rmnd_qty": str, # 보유수량
"trde_able_qty": str, # 매매가능수량
"cur_prc": str, # 현재가
"pred_buyq": str, # 전일매수수량
"pred_sellq": str, # 전일매도수량
"tdy_buyq": str, # 금일매수수량
"tdy_sellq": str, # 금일매도수량
"pur_amt": str, # 매입금액
"pur_cmsn": str, # 매입수수료
"evlt_amt": str, # 평가금액
"sell_cmsn": str, # 평가수수료
"tax": str, # 세금
"sum_cmsn": str, # 수수료합
"poss_rt": str, # 보유비중(%)
"crd_tp": str, # 신용구분
"crd_tp_nm": str, # 신용구분명
"crd_loan_dt": str, # 대출일
},
...
],
"return_code": int, # 응답코드
"return_msg": str, # 응답메시지
}
Example:
>>> from kiwoom_rest_api import KiwoomRestAPI
>>> api = KiwoomRestAPI()
>>> result = api.account.account_evaluation_balance_detail_request_kt00018(
... query_type="1", # 합산
... domestic_exchange_type="KRX" # 한국거래소
... )
>>> print(result)
"""
headers = {
"cont-yn": cont_yn,
"next-key": next_key,
"api-id": "kt00018",
}
data = {
"qry_tp": query_type,
"dmst_stex_tp": domestic_exchange_type,
}
return self._execute_request(
"POST",
json=data,
headers=headers,
)