작성
·
45
·
수정됨
0
모의 계좌 잔고 테스트 하는데,
모바일에서도 모의 계좌는 분명히 맞게 확인됩니다.
params 확인 부탁드립니다.
{ "rt_cd": "2", "msg_cd": "OPSQ2000", "msg1": "ERROR : INPUT INVALID_CHECK_ACNO" }
params
{'CANO': '50142790',
'ACNT_PRDT_CD': '01',
'AFHR_FLPR_YN': 'N',
'OFL_YN': '',
'INQR_DVSN': '02',
'UNPR_DVSN': '01',
'FUND_STTL_ICLD_YN': 'N',
'FNCG_AMT_AUTO_RDPT_YN': 'N',
'PRCS_DVSN': '00',
'CTX_AREA_FK100': '',
'CTX_AREA_NK100': ''}
답변 2
0
안녕하세요, @꺼부기주식으로 백억가자님.
우선 제가 본 강의에서 사용한 해외 주식잔고 조회 코드는 아래와 같습니다.
def get_overseas_balance(ovrs_excg_cd="NASD"):
"""해외주식 잔고 조회
Args:
ovrs_excg_cd (str, optional): 거래소 코드. Defaults to "NASD".
NASD: 나스닥, NYSE: 뉴욕, AMEX: 아멕스
"""
# 토큰 가져오기
access_token = get_access_token()
url = f"{settings.kis_base_url}/uapi/overseas-stock/v1/trading/inquire-balance"
headers = {
"Content-Type": "application/json; charset=utf-8",
"authorization": f"Bearer {access_token}",
"appkey": settings.KIS_APPKEY,
"appsecret": settings.KIS_APPSECRET,
"tr_id": "VTTS3012R" # 해외주식 잔고 조회 TR ID
}
params = {
"CANO": settings.KIS_CANO,
"ACNT_PRDT_CD": settings.KIS_ACNT_PRDT_CD,
"OVRS_EXCG_CD": ovrs_excg_cd, # 매개변수로 받은 거래소 코드 사용
"TR_CRCY_CD": "USD", # 통화코드 USD
"CTX_AREA_FK200": "",
"CTX_AREA_NK200": ""
}
max_retries = 2
for attempt in range(max_retries):
try:
response = requests.get(url, headers=headers, params=params)
result = response.json()
# API 응답에 오류가 있고, 재시도 가능한 경우
if 'rt_cd' in result and result['rt_cd'] != '0' and attempt < max_retries - 1:
print(f"API 오류: {result['msg_cd']} - {result.get('msg1', '알 수 없는 오류')}. 토큰 갱신 후 재시도...")
# 토큰 강제 갱신 후 재시도
access_token = get_access_token()
headers["authorization"] = f"Bearer {access_token}"
time.sleep(1)
continue
return result
except Exception as e:
print(f"잔고 조회 중 오류 발생 (시도 {attempt+1}/{max_retries}): {str(e)}")
if attempt < max_retries - 1:
time.sleep(1) # 재시도 전 1초 대기
else:
raise
위 코드를 보면,
헤더 부분에는 아래와 같이 셋팅되어있고,
headers = {
"Content-Type": "application/json; charset=utf-8",
"authorization": f"Bearer {access_token}",
"appkey": settings.KIS_APPKEY,
"appsecret": settings.KIS_APPSECRET,
"tr_id": "VTTS3012R" # 해외주식 잔고 조회 TR ID
}
request param 부분은 아래와 같이 셋팅되어있습니다.
params = {
"CANO": settings.KIS_CANO,
"ACNT_PRDT_CD": settings.KIS_ACNT_PRDT_CD,
"OVRS_EXCG_CD": ovrs_excg_cd, # 매개변수로 받은 거래소 코드 사용
"TR_CRCY_CD": "USD", # 통화코드 USD
"CTX_AREA_FK200": "",
"CTX_AREA_NK200": ""
}
참고로 ACNT_PRDT_CD 값에 대해서는 01을 넣었습니다.
위와같이 조회했을 때 정상 조회가 됩니다. 위 에러를 보면, ERROR : INPUT INVALID_CHECK_ACNO 위와같은 에러가 발생하는 것 같습니다.
그리고 혹시 위 api는 해외주식 잔고 조회 api가 아니라 "해외주식 매수가능금액 조회" 아닌가요??
"OFL_YN"에도 "N"을 넣어서 테스트 부탁드립니다.
코드를 그대로 받아서 계좌만 셋팅하면 정상 작동해야되는데, 혹시 뭔가 설정이 꼬이거나 했을 것 같습니다.
상세 로그도 같이 전달 부탁드립니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 꺼부기주식으로 백억가자님.
모의 계좌 잔고 조회 시 발생하는 오류 “ERROR : INPUT INVALID_CHECK_ACNO”는 요청 파라미터 중 계좌 번호(CANO)나 제품 코드(ACNT_PRDT_CD)에 잘못된 값이 포함되어 있을 때 발생할 수 있습니다. 이 오류를 해결하기 위해 다음 사항을 확인해 보시기 바랍니다:
계좌 번호(CANO): 모의 계좌 번호가 정확한지 확인하십시오. 일부 플랫폼에서는 계좌 번호 앞이나 뒤에 불필요한 공백이 포함될 수 있으니, 이를 제거하고 정확히 입력했는지 확인하세요.
제품 코드(ACNT_PRDT_CD): 올바른 ACNT_PRDT_CD 값을 입력했는지 확인하십시오. 각각의 계좌 유형이나 상품에 대해 다양한 코드가 사용될 수 있으므로, 사용 중인 플랫폼의 API 문서나 안내서를 참고하여 올바른 코드를 입력하시기 바랍니다.
기타 파라미터: API에서 요구하는 다른 파라미터들도 정확하게 입력했는지 다시 한 번 검토합니다. 빈 값이나 잘못된 형식이 있는지 확인하세요.
이미 Git에서 공개된 소스코드나 강의 자료에서 이와 관련된 설정이 이루어졌을 가능성이 있으니 참고해 보실 수 있습니다. 그리고 혹시 강의 자료에서 제공한 예시 코드를 사용하는 경우, 정확히 복사하여 사용할 수 있도록 주의하시기 바랍니다.
문제를 해결하는 데에 있어서 여전히 어려움이 있으시다면 아래와 같은 질문 관련 유사한 논의들은 참고가 될 수 있습니다:
- 쓰레드, 외화 예수금 등 확인 부탁드립니다.
위의 답변이 도움이 되었기를 바랍니다. 추가적인 질문이나 문제가 있을 경우, 망설이지 말고 강의 페이지에 게시글을 남기시면 강사님께서 빠르게 도움을 주실 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.