▶ [국내주식]기본시세>주식현재가 시세
1. API 정보 및 요청 파라메터 분석
2. 현재가 조회 함수
def get_current_price(code="005930"):
"""현재가 조회"""
while True:
PATH = "uapi/domestic-stock/v1/quotations/inquire-price"
URL = f"{URL_BASE}/{PATH}"
headers = {"Content-Type":"application/json",
"authorization": f"Bearer {ACCESS_TOKEN}",
"appkey":APP_KEY,
"appsecret":APP_SECRET,
"tr_id":"FHKST01010100"}
params = {
"fid_cond_mrkt_div_code":"J",
"fid_input_iscd":code,
}
time.sleep(1)
res = requests.get(URL, headers=headers, params=params)
result = res.json()
if not result:
print("[get_current_price:현재가 조회] 에러")
time.sleep(0.3)
continue
else:
print('[get_current_price:현재가 조회]가 정상적으로 완료되었습니다.')
print(result) # 응답값 확인용
break
return int(res.json()['output']['stck_prpr'])
3. 확인 코드
print("# 1. 시작")
import requests
import json
import time
import ki_config # 개인정보에 대한 별도화일 링크용
##################################################################################################################################
'''
한국투자증권에 접속하기 위한 보안승인 코드 (공통)
'''
##################################################################################################################################
def get_access_token():
"""토큰 발급"""
while True:
headers = {"content-type":"application/json"}
body = {"grant_type":"client_credentials",
"appkey":APP_KEY,
"appsecret":APP_SECRET}
PATH = "oauth2/tokenP"
URL = f"{URL_BASE}/{PATH}"
res = requests.post(URL, headers=headers, data=json.dumps(body))
'''
print(res.json())
{
'access_token':'....' # 발급토큰
'access_token_token_expired': '2024-00-00 00:00:00', # 유효기간
'token_type': 'Bearer', # API 호출 시, 접근토큰유형 "Bearer" 입력. ex) "Bearer eyJ...."
'expires_in': 86400 # 유효기간(초)
}
'''
time.sleep(0.2)
try:
ACCESS_TOKEN = res.json()["access_token"]
ACCESS_TOKEN_EXPIRED = res.json()["access_token_token_expired"]
print('# 2. 접근토큰 발급 완료')
return ACCESS_TOKEN, ACCESS_TOKEN_EXPIRED
except:
print("접근 토큰 발급이 불가능합니다")
print(res.json())
time.sleep(1)
##################################################################################################################################
def get_current_price(code="005930"):
"""현재가 조회"""
while True:
PATH = "uapi/domestic-stock/v1/quotations/inquire-price"
URL = f"{URL_BASE}/{PATH}"
headers = {"Content-Type":"application/json",
"authorization": f"Bearer {ACCESS_TOKEN}",
"appkey":APP_KEY,
"appsecret":APP_SECRET,
"tr_id":"FHKST01010100"}
params = {
"fid_cond_mrkt_div_code":"J",
"fid_input_iscd":code,
}
time.sleep(1)
res = requests.get(URL, headers=headers, params=params)
result = res.json()
if not result:
print("[get_current_price:현재가 조회] 에러")
time.sleep(0.3)
continue
else:
print('[get_current_price:현재가 조회]가 정상적으로 완료되었습니다.')
print(result)
break
return int(res.json()['output']['stck_prpr'])
##################################################################################################################################
'''
한국투자증권 주식투자 자동매매 프로그램 시작
'''
APP_KEY = ki_config.APP_KEY
APP_SECRET = ki_config.APP_SECRET
URL_BASE = ki_config.URL_BASE
# CANO = ki_config.CANO
# ACNT_PRDT_CD = ki_config.ACNT_PRDT_CD
ACCESS_TOKEN, ACCESS_TOKEN_EXPIRED = get_access_token()
get_current_price()
#화면 출력(라인 수정)
(tensor37) F:\python>C:/Users/webti/anaconda3/envs/tensor37/python.exe f:/python/STOCKS/Korea_Investment/koreainvest_test2.py
# 1. 시작
# 2. 접근토큰 발급 완료
[get_current_price:현재가 조회]가 정상적으로 완료되었습니다.
{
'output':
{'iscd_stat_cls_code': '55',
'marg_rate': '20.00',
'rprs_mrkt_kor_name': 'KOSPI200',
'bstp_kor_isnm': '전기.전자',
'temp_stop_yn': 'N',
'oprc_rang_cont_yn': 'N',
'clpr_rang_cont_yn': 'N',
'crdt_able_yn': 'Y',
'grmn_rate_cls_code': '40',
'elw_pblc_yn': 'Y',
'stck_prpr': '68900', # 현재가 .............................!!
'prdy_vrss': '-100',
'prdy_vrss_sign': '5',
'prdy_ctrt': '-0.14',
'acml_tr_pbmn': '1309833642247',
'acml_vol': '19022299',
'prdy_vrss_vol_rate': '74.05',
'stck_oprc': '69100',
'stck_hgpr': '69700',
'stck_lwpr': '68000',
'stck_mxpr': '89700',
'stck_llam': '48300',
'stck_sdpr': '69000',
'wghn_avrg_stck_prc': '68859.01',
'hts_frgn_ehrt': '55.67',
'frgn_ntby_qty': '-2103728',
'pgtr_ntby_qty': '-635846',
'pvt_scnd_dmrs_prc': '71933',
'pvt_frst_dmrs_prc': '70466',
'pvt_pont_val': '69733',
'pvt_frst_dmsp_prc': '68266',
'pvt_scnd_dmsp_prc': '67533',
'dmrs_val': '70100',
'dmsp_val': '67900',
'cpfn': '7780',
'rstc_wdth_prc': '20700',
'stck_fcam': '100',
'stck_sspr': '53820',
'aspr_unit': '100',
'hts_deal_qty_unit_val': '1',
'lstn_stcn': '5969782550',
'hts_avls': '4113180',
'per': '32.33',
'pbr': '1.32',
'stac_month': '12',
'vol_tnrt': '0.32',
'eps': '2131.00',
'bps': '52002.00',
'd250_hgpr': '88800',
'd250_hgpr_date': '20240711',
'd250_hgpr_vrss_prpr_rate': '-22.41',
'd250_lwpr': '66000',
'd250_lwpr_date': '20231006',
'd250_lwpr_vrss_prpr_rate': '4.39',
'stck_dryy_hgpr': '88800',
'dryy_hgpr_vrss_prpr_rate': '-22.41',
'dryy_hgpr_date': '20240711',
'stck_dryy_lwpr': '68000',
'dryy_lwpr_vrss_prpr_rate': '1.32',
'dryy_lwpr_date': '20240906',
'w52_hgpr': '88800',
'w52_hgpr_vrss_prpr_ctrt': '-22.41',
'w52_hgpr_date': '20240711',
'w52_lwpr': '66000',
'w52_lwpr_vrss_prpr_ctrt': '4.39',
'w52_lwpr_date': '20231006',
'whol_loan_rmnd_rate': '0.15',
'ssts_yn': 'N',
'stck_shrn_iscd': '005930',
'fcam_cnnm': '100',
'cpfn_cnnm': '7,780 억',
'frgn_hldn_qty': '3323676105',
'vi_cls_code': 'N',
'ovtm_vi_cls_code': 'N',
'last_ssts_cntg_qty': '10138',
'invt_caful_yn': 'N',
'mrkt_warn_cls_code': '00',
'short_over_yn': 'N',
'sltr_yn': 'N'
},
'rt_cd': '0',
'msg_cd': 'MCA00000',
'msg1': '정상처리 되었습니다.'
}