한국투자증권 주식매매프로그램 만들기

파이썬 주식매매프로그램 만들기

미국 주식 프로그램 만들기(KIS Developers)/1. KIS Developer API 연동

4) 해외주식 주야간원장구분조회

토폴로지 2022. 9. 13. 18:08

*실행하기전 3) 글에서 config.yaml 설정해두는 것 필수! 차후 업데이트할 글들도 마찬가지이다.

 

Q) 해외주식 주야간원장구분조회가 뭐에요?

A) 실제계좌로 해외주식 주문체결내역을 API 호출로 조회하고자 할 때,
해외주식 주야간원장구분조회의 Response Body인 PSBL_YN(주야간 원장 구분)값이
Y(야간)일 경우 JTTT3001R 이용, N(주간)일 경우 TTTS3035R 이용

=> 요약: 미국 주식 API 호출 할 때 특정 API는 주야간에 따라 특정 파라미터값이 달라짐

그래서 주야간에 따라 파라미터값을 바꿔주기 위해 주야간을 먼저 확인하는 함수

 

import requests
import json
import yaml

with open(r'config.yaml', encoding='UTF-8') as f:
    _cfg = yaml.load(f, Loader=yaml.FullLoader)
APP_KEY = _cfg['APP_KEY']
APP_SECRET = _cfg['APP_SECRET']
ACCESS_TOKEN = ""
CANO = _cfg['CANO']
ACNT_PRDT_CD = _cfg['ACNT_PRDT_CD']
ACTUAL_DOMAIN = _cfg['ACTUAL_DOMAIN']

# ACCESS TOKEN 발급
def get_access_token():
    url = '/oauth2/tokenP'
    request_url = f"{ACTUAL_DOMAIN}/{url}"
    headers = {
    }
    body = {
        "grant_type": "client_credentials",
        "appkey": APP_KEY,
        "appsecret": APP_SECRET,
    }
 
    res = requests.post(request_url, data=json.dumps(body), headers=headers)
    rescode = res.status_code
    if rescode == 200:
        ACCESS_TOKEN = res.json()["access_token"]
    else:
        print("Error Code : " + str(rescode) + " | " + res.text)
    
    return ACCESS_TOKEN
#한국계좌잔고 확인
def get_kor_balance():
    url = "/uapi/domestic-stock/v1/trading/inquire-psbl-order"
    request_url = f"{ACTUAL_DOMAIN}/{url}"
    headers = {"Content-Type": "application/json",
               "authorization": f"Bearer {ACCESS_TOKEN}",
               "appKey": APP_KEY,
               "appSecret": APP_SECRET,
               "tr_id": "TTTC8908R",   #실전투자값: TTTC8908R
               "custtype": "P", #P: 개인
               }
    params = {
        "CANO": CANO, #계좌번호
        "ACNT_PRDT_CD": ACNT_PRDT_CD, #계좌번호 뒷자리
        "PDNO": "005930", # 종목 코드 005930은 삼성
        "ORD_UNPR": "65500", #1주당 가격
        "ORD_DVSN": "01", # 01: 시장가
        "CMA_EVLU_AMT_ICLD_YN": "Y", #CMA 평가금액포함여부: Y
        "OVRS_ICLD_YN": "Y" #해외포함여부: Y
    }
    res = requests.get(request_url, headers=headers, params=params)
    cash = res.json()['output']['ord_psbl_cash']
    print(f"주문 가능 현금 잔고: {cash}원")
    return int(cash)
#미국 주야간 확인
def check_day_or_night():
    url = "/uapi/overseas-stock/v1/trading/dayornight"
    request_url = f"{ACTUAL_DOMAIN}/{url}"
    headers = {"Content-Type": "application/json",
               "authorization": f"Bearer {ACCESS_TOKEN}",
               "appKey": APP_KEY,
               "appSecret": APP_SECRET,
               "tr_id": "JTTT3010R", 
               "custtype": "P", #P: 개인
               }
    params = {
    }
    res = requests.get(request_url, headers=headers, params=params)
    day_or_night = res.json()['output']['PSBL_YN']
    print("주간야간여부:" + day_or_night)
    return day_or_night


ACCESS_TOKEN = get_access_token()
#get_kor_balance()
check_day_or_night()

 

return 값은 주간이면 Y 아니면 N이다.

나스닥 장이 열렸으면 Y 닫혔으면 N 인 듯

반응형