initial commit
This commit is contained in:
@@ -0,0 +1,165 @@
|
||||
import sys
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
|
||||
sys.path.extend(['..', '.'])
|
||||
import kis_auth as ka
|
||||
from domestic_bond_functions import *
|
||||
|
||||
# 로깅 설정
|
||||
logging.basicConfig(level=logging.INFO, format='%(levelname)s - %(message)s')
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# 인증
|
||||
ka.auth()
|
||||
trenv = ka.getTREnv()
|
||||
|
||||
##############################################################################################
|
||||
# [장내채권] 기본시세 > 장내채권 평균단가조회 [국내채권-158]
|
||||
##############################################################################################
|
||||
|
||||
df1, df2, df3 = avg_unit(inqr_strt_dt="20250101", inqr_end_dt="20250131", pdno="KR2033022D33", prdt_type_cd="302", vrfc_kind_cd="00")
|
||||
print(df1)
|
||||
print(df2)
|
||||
print(df3)
|
||||
|
||||
##############################################################################################
|
||||
# [장내채권] 주문/계좌 > 장내채권 매수주문 [국내주식-124]
|
||||
##############################################################################################
|
||||
|
||||
result = buy(
|
||||
cano=trenv.my_acct, # 종합계좌번호
|
||||
acnt_prdt_cd=trenv.my_prod, # 계좌상품코드
|
||||
pdno="KR6095572D81", # 상품번호
|
||||
ord_qty2="10", # 주문수량
|
||||
bond_ord_unpr="9900", # 채권주문단가
|
||||
samt_mket_ptci_yn="N", # 소액시장참여여부
|
||||
bond_rtl_mket_yn="N", # 채권소매시장여부
|
||||
idcr_stfno="", # 유치자직원번호
|
||||
mgco_aptm_odno="", # 운용사지정주문번호
|
||||
ord_svr_dvsn_cd="0", # 주문서버구분코드
|
||||
ctac_tlno="", # 연락전화번호
|
||||
)
|
||||
print(result)
|
||||
|
||||
##############################################################################################
|
||||
# [장내채권] 기본시세 > 장내채권현재가(호가) [국내주식-132]
|
||||
##############################################################################################
|
||||
|
||||
df = inquire_asking_price(fid_cond_mrkt_div_code="B", fid_input_iscd="KR2033022D33")
|
||||
print(df)
|
||||
|
||||
##############################################################################################
|
||||
# [장내채권] 주문/계좌 > 장내채권 잔고조회 [국내주식-198]
|
||||
##############################################################################################
|
||||
|
||||
df = inquire_balance(cano=trenv.my_acct, acnt_prdt_cd=trenv.my_prod, inqr_cndt="00", pdno="", buy_dt="")
|
||||
print(df)
|
||||
|
||||
##############################################################################################
|
||||
# [장내채권] 기본시세 > 장내채권현재가(체결) [국내주식-201]
|
||||
##############################################################################################
|
||||
|
||||
df = inquire_ccnl(fid_cond_mrkt_div_code="B", fid_input_iscd="KR2033022D33")
|
||||
print(df)
|
||||
|
||||
##############################################################################################
|
||||
# [장내채권] 주문/계좌 > 장내채권 일별체결조회 [국내주식-127]
|
||||
##############################################################################################
|
||||
|
||||
df1, df2 = inquire_daily_ccld(cano=trenv.my_acct, acnt_prdt_cd=trenv.my_prod, inqr_strt_dt="20250601", inqr_end_dt="20250630", sll_buy_dvsn_cd="%", sort_sqn_dvsn="01", pdno="", nccs_yn="N", ctx_area_nk200="", ctx_area_fk200="")
|
||||
print(df1)
|
||||
print(df2)
|
||||
|
||||
##############################################################################################
|
||||
# [장내채권] 기본시세 > 장내채권 기간별시세(일) [국내주식-159]
|
||||
##############################################################################################
|
||||
|
||||
df = inquire_daily_itemchartprice(fid_cond_mrkt_div_code="B", fid_input_iscd="KR2033022D33")
|
||||
print(df)
|
||||
|
||||
##############################################################################################
|
||||
# [장내채권] 기본시세 > 장내채권현재가(일별) [국내주식-202]
|
||||
##############################################################################################
|
||||
|
||||
df = inquire_daily_price(fid_cond_mrkt_div_code="B", fid_input_iscd="KR2033022D33")
|
||||
print(df)
|
||||
|
||||
##############################################################################################
|
||||
# [장내채권] 기본시세 > 장내채권현재가(시세) [국내주식-200]
|
||||
##############################################################################################
|
||||
|
||||
df = inquire_price(fid_cond_mrkt_div_code="B", fid_input_iscd="KR2033022D33")
|
||||
print(df)
|
||||
|
||||
##############################################################################################
|
||||
# [장내채권] 주문/계좌 > 장내채권 매수가능조회 [국내주식-199]
|
||||
##############################################################################################
|
||||
|
||||
df = inquire_psbl_order(cano=trenv.my_acct, acnt_prdt_cd=trenv.my_prod, pdno="KR2033022D33", bond_ord_unpr="1000")
|
||||
print(df)
|
||||
|
||||
##############################################################################################
|
||||
# [장내채권] 주문/계좌 > 채권정정취소가능주문조회 [국내주식-126]
|
||||
##############################################################################################
|
||||
|
||||
df = inquire_psbl_rvsecncl(cano=trenv.my_acct, acnt_prdt_cd=trenv.my_prod, ord_dt="20250601", odno="", ctx_area_fk200="", ctx_area_nk200="")
|
||||
print(df)
|
||||
|
||||
##############################################################################################
|
||||
# [장내채권] 기본시세 > 장내채권 발행정보 [국내주식-156]
|
||||
##############################################################################################
|
||||
|
||||
df = issue_info(pdno="KR6449111CB8", prdt_type_cd="302")
|
||||
print(df)
|
||||
|
||||
##############################################################################################
|
||||
# [장내채권] 주문/계좌 > 장내채권 정정취소주문 [국내주식-125]
|
||||
##############################################################################################
|
||||
|
||||
result = order_rvsecncl(
|
||||
cano=trenv.my_acct,
|
||||
acnt_prdt_cd=trenv.my_prod,
|
||||
pdno="KR6095572D81",
|
||||
orgn_odno="0004357900", # 실제 테스트 시 유효한 원주문번호로 변경해야 합니다.
|
||||
ord_qty2="1", # 정정/취소 수량
|
||||
bond_ord_unpr="10470", # 정정 단가
|
||||
qty_all_ord_yn="Y", # 잔량 전부 주문 여부
|
||||
rvse_cncl_dvsn_cd="01", # 01: 정정, 02: 취소
|
||||
mgco_aptm_odno="",
|
||||
ord_svr_dvsn_cd="0",
|
||||
ctac_tlno="",
|
||||
)
|
||||
print(result)
|
||||
|
||||
##############################################################################################
|
||||
# [장내채권] 기본시세 > 장내채권 기본조회 [국내주식-129]
|
||||
##############################################################################################
|
||||
|
||||
df = search_bond_info(pdno="KR2033022D33", prdt_type_cd="302")
|
||||
print(df)
|
||||
|
||||
##############################################################################################
|
||||
# [장내채권] 주문/계좌 > 장내채권 매도주문 [국내주식-123]
|
||||
##############################################################################################
|
||||
|
||||
result = sell(
|
||||
cano=trenv.my_acct, # 종합계좌번호
|
||||
acnt_prdt_cd=trenv.my_prod, # 계좌상품코드
|
||||
ord_dvsn="01", # 주문구분
|
||||
pdno="KR6095572D81", # 상품번호
|
||||
ord_qty2="1", # 주문수량
|
||||
bond_ord_unpr="10000.0", # 채권주문단가
|
||||
sprx_yn="N", # 분리과세여부
|
||||
buy_dt="", # 매수일자
|
||||
buy_seq="", # 매수순번
|
||||
samt_mket_ptci_yn="N", # 소액시장참여여부
|
||||
sll_agco_opps_sll_yn="N", # 매도대행사반대매도여부
|
||||
bond_rtl_mket_yn="N", # 채권소매시장여부
|
||||
mgco_aptm_odno="", # 운용사지정주문번호
|
||||
ord_svr_dvsn_cd="0", # 주문서버구분코드
|
||||
ctac_tlno="", # 연락전화번호
|
||||
)
|
||||
print(result)
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
import sys
|
||||
import logging
|
||||
|
||||
import pandas as pd
|
||||
|
||||
sys.path.extend(['..', '.'])
|
||||
import kis_auth as ka
|
||||
from domestic_bond_functions_ws import *
|
||||
|
||||
# 로깅 설정
|
||||
logging.basicConfig(level=logging.INFO, format='%(levelname)s - %(message)s')
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# 인증
|
||||
ka.auth()
|
||||
ka.auth_ws()
|
||||
trenv = ka.getTREnv()
|
||||
|
||||
# 웹소켓 선언
|
||||
kws = ka.KISWebSocket(api_url="/tryitout")
|
||||
|
||||
##############################################################################################
|
||||
# [장내채권] 실시간시세 > 일반채권 실시간호가 [실시간-053]
|
||||
##############################################################################################
|
||||
|
||||
kws.subscribe(request=bond_asking_price, data=["KR103502GA34", "KR6095572D81"])
|
||||
|
||||
##############################################################################################
|
||||
# [장내채권] 실시간시세 > 일반채권 실시간체결가 [실시간-052]
|
||||
##############################################################################################
|
||||
|
||||
kws.subscribe(request=bond_ccnl, data=["KR103502GA34", "KR6095572D81"])
|
||||
|
||||
##############################################################################################
|
||||
# [장내채권] 실시간시세 > 채권지수 실시간체결가 [실시간-060]
|
||||
##############################################################################################
|
||||
|
||||
kws.subscribe(request=bond_index_ccnl, data=[
|
||||
# 한경채권지수
|
||||
"KBPR01", "KBPR02", "KBPR03", "KBPR04",
|
||||
# KIS채권지수
|
||||
"KISR01", "MSBI07", "KTBL10", "MSBI09", "MSBI10", "CDIX01",
|
||||
# 매경채권지수
|
||||
"MKFR01", "MSBI01", "MSBI03", "MSBI10", "CORP01"
|
||||
])
|
||||
|
||||
|
||||
# 시작
|
||||
def on_result(ws, tr_id, result, data_info):
|
||||
print(result)
|
||||
|
||||
|
||||
kws.start(on_result=on_result)
|
||||
1685
한국투자증권(API)/examples_user/domestic_bond/domestic_bond_functions.py
Normal file
1685
한국투자증권(API)/examples_user/domestic_bond/domestic_bond_functions.py
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,233 @@
|
||||
import logging
|
||||
import sys
|
||||
|
||||
sys.path.extend(['..', '.'])
|
||||
import kis_auth as ka
|
||||
|
||||
# 로깅 설정
|
||||
logging.basicConfig(level=logging.INFO, format='%(levelname)s - %(message)s')
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
##############################################################################################
|
||||
# [장내채권] 실시간시세 > 일반채권 실시간호가 [실시간-053]
|
||||
##############################################################################################
|
||||
|
||||
def bond_asking_price(
|
||||
tr_type: str,
|
||||
tr_key: str,
|
||||
) -> tuple[dict, list[str]]:
|
||||
"""
|
||||
일반채권 실시간호가[실시간-053]
|
||||
일반채권 실시간호가 API를 통해 실시간 데이터를 구독합니다.
|
||||
|
||||
Args:
|
||||
tr_type (str): [필수] 구독 등록("1") 또는 해제("0") 여부를 나타냅니다.
|
||||
tr_key (str): [필수] 종목코드. 빈 문자열일 수 없습니다.
|
||||
|
||||
Returns:
|
||||
message (dict): 실시간 데이터 메시지.
|
||||
columns (list[str]): 응답 데이터의 컬럼 정보.
|
||||
|
||||
Raises:
|
||||
ValueError: tr_key가 빈 문자열인 경우 발생합니다.
|
||||
|
||||
Example:
|
||||
>>> msg, columns = bond_asking_price("1", "005930")
|
||||
>>> print(msg, columns)
|
||||
|
||||
[참고자료]
|
||||
채권 종목코드 마스터파일은 "KIS포털 > API문서 > 종목정보파일 > 장내채권 - 채권코드" 참고 부탁드립니다.
|
||||
"""
|
||||
|
||||
# 필수 파라미터 검증
|
||||
if not tr_key:
|
||||
raise ValueError("tr_key is required and cannot be an empty string")
|
||||
|
||||
tr_id = "H0BJASP0"
|
||||
|
||||
params = {
|
||||
"tr_key": tr_key,
|
||||
}
|
||||
|
||||
# 데이터 요청
|
||||
msg = ka.data_fetch(tr_id, tr_type, params)
|
||||
|
||||
# 응답 데이터 컬럼 정보
|
||||
columns = [
|
||||
"stnd_iscd",
|
||||
"stck_cntg_hour",
|
||||
"askp_ert1",
|
||||
"bidp_ert1",
|
||||
"askp1",
|
||||
"bidp1",
|
||||
"askp_rsqn1",
|
||||
"bidp_rsqn1",
|
||||
"askp_ert2",
|
||||
"bidp_ert2",
|
||||
"askp2",
|
||||
"bidp2",
|
||||
"askp_rsqn2",
|
||||
"bidp_rsqn2",
|
||||
"askp_ert3",
|
||||
"bidp_ert3",
|
||||
"askp3",
|
||||
"bidp3",
|
||||
"askp_rsqn3",
|
||||
"bidp_rsqn3",
|
||||
"askp_ert4",
|
||||
"bidp_ert4",
|
||||
"askp4",
|
||||
"bidp4",
|
||||
"askp_rsqn4",
|
||||
"bidp_rsqn4",
|
||||
"askp_ert5",
|
||||
"bidp_ert5",
|
||||
"askp5",
|
||||
"bidp5",
|
||||
"askp_rsqn52",
|
||||
"bidp_rsqn53",
|
||||
"total_askp_rsqn",
|
||||
"total_bidp_rsqn",
|
||||
]
|
||||
|
||||
return msg, columns
|
||||
|
||||
##############################################################################################
|
||||
# [장내채권] 실시간시세 > 일반채권 실시간체결가 [실시간-052]
|
||||
##############################################################################################
|
||||
|
||||
def bond_ccnl(
|
||||
tr_type: str,
|
||||
tr_key: str,
|
||||
) -> tuple[dict, list[str]]:
|
||||
"""
|
||||
일반채권 실시간체결가[H0BJCNT0] 구독 함수
|
||||
한국투자증권 웹소켓 API를 통해 일반채권의 실시간 체결가 데이터를 구독합니다.
|
||||
|
||||
Args:
|
||||
tr_type (str): [필수] 구독 등록("1") 또는 해제("0") 여부
|
||||
tr_key (str): [필수] 종목코드 (빈 문자열 불가)
|
||||
|
||||
Returns:
|
||||
message (dict): 실시간 데이터 구독 결과 메시지
|
||||
columns (list[str]): 응답 데이터의 컬럼 정보
|
||||
|
||||
Raises:
|
||||
ValueError: tr_key가 빈 문자열인 경우 발생
|
||||
|
||||
Example:
|
||||
>>> msg, columns = bond_ccnl("1", "005930")
|
||||
>>> print(msg, columns)
|
||||
|
||||
[참고자료]
|
||||
채권 종목코드 마스터파일은 "KIS포털 > API문서 > 종목정보파일 > 장내채권 - 채권코드" 참고 부탁드립니다.
|
||||
"""
|
||||
|
||||
# 필수 파라미터 검증
|
||||
if not tr_key:
|
||||
raise ValueError("tr_key는 빈 문자열일 수 없습니다.")
|
||||
|
||||
tr_id = "H0BJCNT0"
|
||||
|
||||
params = {
|
||||
"tr_key": tr_key,
|
||||
}
|
||||
|
||||
# 데이터 구독 요청
|
||||
msg = ka.data_fetch(tr_id, tr_type, params)
|
||||
|
||||
# 응답 데이터 컬럼 정보
|
||||
columns = [
|
||||
"stnd_iscd", # 표준종목코드
|
||||
"bond_isnm", # 채권종목명
|
||||
"stck_cntg_hour", # 주식체결시간
|
||||
"prdy_vrss_sign", # 전일대비부호
|
||||
"prdy_vrss", # 전일대비
|
||||
"prdy_ctrt", # 전일대비율
|
||||
"stck_prpr", # 현재가
|
||||
"cntg_vol", # 체결거래량
|
||||
"stck_oprc", # 시가
|
||||
"stck_hgpr", # 고가
|
||||
"stck_lwpr", # 저가
|
||||
"stck_prdy_clpr", # 전일종가
|
||||
"bond_cntg_ert", # 현재수익률
|
||||
"oprc_ert", # 시가수익률
|
||||
"hgpr_ert", # 고가수익률
|
||||
"lwpr_ert", # 저가수익률
|
||||
"acml_vol", # 누적거래량
|
||||
"prdy_vol", # 전일거래량
|
||||
"cntg_type_cls_code", # 체결유형코드
|
||||
]
|
||||
|
||||
return msg, columns
|
||||
|
||||
##############################################################################################
|
||||
# [장내채권] 실시간시세 > 채권지수 실시간체결가 [실시간-060]
|
||||
##############################################################################################
|
||||
|
||||
def bond_index_ccnl(
|
||||
tr_type: str,
|
||||
tr_key: str,
|
||||
) -> tuple[dict, list[str]]:
|
||||
"""
|
||||
채권지수 실시간체결가[H0BICNT0]
|
||||
채권지수 실시간체결가 API를 통해 실시간 데이터를 구독합니다.
|
||||
|
||||
Args:
|
||||
tr_type (str): [필수] 구독 등록("1") 또는 해제("0") 여부를 나타냅니다.
|
||||
tr_key (str): [필수] 구독할 종목코드. 빈 문자열이 아니어야 합니다.
|
||||
|
||||
Returns:
|
||||
message (dict): 구독 요청에 대한 응답 메시지.
|
||||
columns (list[str]): 실시간 데이터의 컬럼 정보.
|
||||
|
||||
Raises:
|
||||
ValueError: tr_key가 빈 문자열인 경우 발생합니다.
|
||||
|
||||
Example:
|
||||
>>> msg, columns = bond_index_ccnl("1", "005930")
|
||||
>>> print(msg, columns)
|
||||
|
||||
[참고자료]
|
||||
채권 종목코드 마스터파일은 "KIS포털 > API문서 > 종목정보파일 > 장내채권 - 채권코드" 참고 부탁드립니다.
|
||||
"""
|
||||
|
||||
# 필수 파라미터 검증
|
||||
if not tr_key:
|
||||
raise ValueError("tr_key is required and cannot be an empty string")
|
||||
|
||||
tr_id = "H0BICNT0"
|
||||
|
||||
params = {
|
||||
"tr_key": tr_key,
|
||||
}
|
||||
|
||||
# 데이터 구독 요청
|
||||
msg = ka.data_fetch(tr_id, tr_type, params)
|
||||
|
||||
# 응답 데이터 컬럼 정보
|
||||
columns = [
|
||||
"nmix_id", # 지수ID
|
||||
"stnd_date1", # 기준일자1
|
||||
"trnm_hour", # 전송시간
|
||||
"totl_ernn_nmix_oprc", # 총수익지수시가지수
|
||||
"totl_ernn_nmix_hgpr", # 총수익지수최고가
|
||||
"totl_ernn_nmix_lwpr", # 총수익지수최저가
|
||||
"totl_ernn_nmix", # 총수익지수
|
||||
"prdy_totl_ernn_nmix", # 전일총수익지수
|
||||
"totl_ernn_nmix_prdy_vrss", # 총수익지수전일대비
|
||||
"totl_ernn_nmix_prdy_vrss_sign", # 총수익지수전일대비부호
|
||||
"totl_ernn_nmix_prdy_ctrt", # 총수익지수전일대비율
|
||||
"clen_prc_nmix", # 순가격지수
|
||||
"mrkt_prc_nmix", # 시장가격지수
|
||||
"bond_call_rnvs_nmix", # Call재투자지수
|
||||
"bond_zero_rnvs_nmix", # Zero재투자지수
|
||||
"bond_futs_thpr", # 선물이론가격
|
||||
"bond_avrg_drtn_val", # 평균듀레이션
|
||||
"bond_avrg_cnvx_val", # 평균컨벡서티
|
||||
"bond_avrg_ytm_val", # 평균YTM
|
||||
"bond_avrg_frdl_ytm_val", # 평균선도YTM
|
||||
]
|
||||
|
||||
return msg, columns
|
||||
|
||||
Reference in New Issue
Block a user