initial commit
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
"""
|
||||
Created on 20250601
|
||||
"""
|
||||
|
||||
import logging
|
||||
import sys
|
||||
|
||||
import pandas as pd
|
||||
|
||||
sys.path.extend(['../..', '.'])
|
||||
import kis_auth as ka
|
||||
from delayed_ccnl import delayed_ccnl
|
||||
|
||||
# 로깅 설정
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
##############################################################################################
|
||||
# [해외주식] 실시간시세 > 해외주식 실시간지연체결가[실시간-007]
|
||||
##############################################################################################
|
||||
|
||||
# 컬럼 매핑 정의
|
||||
COLUMN_MAPPING = {
|
||||
"SYMB": "종목코드",
|
||||
"ZDIV": "수수점자리수",
|
||||
"TYMD": "현지영업일자",
|
||||
"XYMD": "현지일자",
|
||||
"XHMS": "현지시간",
|
||||
"KYMD": "한국일자",
|
||||
"KHMS": "한국시간",
|
||||
"OPEN": "시가",
|
||||
"HIGH": "고가",
|
||||
"LOW": "저가",
|
||||
"LAST": "현재가",
|
||||
"SIGN": "대비구분",
|
||||
"DIFF": "전일대비",
|
||||
"RATE": "등락율",
|
||||
"PBID": "매수호가",
|
||||
"PASK": "매도호가",
|
||||
"VBID": "매수잔량",
|
||||
"VASK": "매도잔량",
|
||||
"EVOL": "체결량",
|
||||
"TVOL": "거래량",
|
||||
"TAMT": "거래대금",
|
||||
"BIVL": "매도체결량",
|
||||
"ASVL": "매수체결량",
|
||||
"STRN": "체결강도",
|
||||
"MTYP": "시장구분"
|
||||
}
|
||||
|
||||
# 숫자형 컬럼 정의
|
||||
NUMERIC_COLUMNS = ["시가", "고가", "저가", "현재가", "전일대비", "등락율", "매수호가", "매도호가", "매수잔량", "매도잔량"]
|
||||
|
||||
def main():
|
||||
"""
|
||||
해외주식 실시간지연체결가
|
||||
|
||||
Returns:
|
||||
None
|
||||
"""
|
||||
|
||||
# pandas 출력 옵션 설정
|
||||
pd.set_option('display.max_columns', None) # 모든 컬럼 표시
|
||||
pd.set_option('display.width', None) # 출력 너비 제한 해제
|
||||
pd.set_option('display.max_rows', None) # 모든 행 표시
|
||||
|
||||
# 인증 토큰 발급
|
||||
ka.auth()
|
||||
ka.auth_ws()
|
||||
|
||||
# 인증(auth_ws()) 이후에 선언
|
||||
kws = ka.KISWebSocket(api_url="/tryitout")
|
||||
|
||||
# 조회
|
||||
kws.subscribe(request=delayed_ccnl, data=["DHKS00003"])
|
||||
|
||||
# 결과 표시
|
||||
def on_result(ws, tr_id: str, result: pd.DataFrame, data_map: dict):
|
||||
|
||||
# 한글 컬럼명으로 변환
|
||||
result = result.rename(columns=COLUMN_MAPPING)
|
||||
|
||||
# 숫자형 컬럼 소수점 둘째자리까지 표시
|
||||
for col in NUMERIC_COLUMNS:
|
||||
if col in result.columns:
|
||||
result[col] = pd.to_numeric(result[col], errors='coerce').round(2)
|
||||
|
||||
logging.info("결과:")
|
||||
print(result)
|
||||
|
||||
kws.start(on_result=on_result)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,88 @@
|
||||
"""
|
||||
Created on 20250601
|
||||
"""
|
||||
|
||||
import logging
|
||||
import sys
|
||||
|
||||
sys.path.extend(['../..', '.'])
|
||||
import kis_auth as ka
|
||||
|
||||
# 로깅 설정
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
##############################################################################################
|
||||
# [해외주식] 실시간시세 > 해외주식 실시간지연체결가[실시간-007]
|
||||
##############################################################################################
|
||||
|
||||
def delayed_ccnl(
|
||||
tr_type: str,
|
||||
tr_key: str,
|
||||
) -> tuple[dict, list[str]]:
|
||||
"""
|
||||
해외주식 실시간지연체결가의 경우 기본적으로 무료시세(지연체결가)가 제공되며,
|
||||
HTS(efriend Plus) [7781] 시세신청(실시간) 화면에서 유료 서비스 신청 시 API로도 유료시세(실시간체결가)를 받아보실 수 있습니다. (24.11.29 반영)
|
||||
|
||||
※ 지연시세 지연시간 : 미국 - 실시간무료(0분지연) / 홍콩, 베트남, 중국, 일본 - 15분지연 (중국은 실시간시세 신청 시 무료실시간시세 제공)
|
||||
미국의 경우 0분지연시세로 제공되나, 장중 당일 시가는 상이할 수 있으며, 익일 정정 표시됩니다.
|
||||
|
||||
해당 API로 미국주간거래(10:00~16:00) 시세 조회도 가능합니다.
|
||||
※ 미국주간거래 실시간 조회 시, 맨 앞자리(R), tr_key 중 시장구분 값을 다음과 같이 입력 → 나스닥: BAQ, 뉴욕: BAY, 아멕스: BAA
|
||||
|
||||
Args:
|
||||
tr_type (str): [필수] 등록/해제
|
||||
tr_key (str): [필수] 종목코드
|
||||
|
||||
Returns:
|
||||
message (dict): 메시지 데이터
|
||||
columns (list[str]): 컬럼 정보
|
||||
|
||||
Example:
|
||||
>>> msg, columns = delayed_ccnl("1", "DNASAAPL")
|
||||
>>> print(msg, columns)
|
||||
"""
|
||||
|
||||
# 필수 파라미터 검증
|
||||
if tr_type == "":
|
||||
raise ValueError("tr_type is required")
|
||||
|
||||
if tr_key == "":
|
||||
raise ValueError("tr_key is required")
|
||||
|
||||
tr_id = "HDFSCNT0"
|
||||
|
||||
params = {
|
||||
"tr_key": tr_key,
|
||||
}
|
||||
|
||||
msg = ka.data_fetch(tr_id, tr_type, params)
|
||||
|
||||
columns = [
|
||||
"SYMB",
|
||||
"ZDIV",
|
||||
"TYMD",
|
||||
"XYMD",
|
||||
"XHMS",
|
||||
"KYMD",
|
||||
"KHMS",
|
||||
"OPEN",
|
||||
"HIGH",
|
||||
"LOW",
|
||||
"LAST",
|
||||
"SIGN",
|
||||
"DIFF",
|
||||
"RATE",
|
||||
"PBID",
|
||||
"PASK",
|
||||
"VBID",
|
||||
"VASK",
|
||||
"EVOL",
|
||||
"TVOL",
|
||||
"TAMT",
|
||||
"BIVL",
|
||||
"ASVL",
|
||||
"STRN",
|
||||
"MTYP"
|
||||
]
|
||||
|
||||
return msg, columns
|
||||
Reference in New Issue
Block a user