Inflearn brand logo image

인프런 커뮤니티 질문&답변

..님의 프로필 이미지
..

작성한 질문수

파이썬 주식 매매 봇으로 주식시장 자동사냥하기

6.5.2 실거래 패키지 개발 - 초기화 작업

국내주식 과거 분봉데이터 관련

작성

·

163

0

안녕하세요,

 

  1. 국내주식 과거 분봉데이터를 받을수는 없는것인가요? 한투 사이트를 보면 당일 분봉데이터만 제공하는 것으로 보입니다만, 다른 방법이 있는지 문의드립니다.

  2. 분봉데이터를 받아볼수 있다면, 어떤식으로 데이터를 보관?하여 벡테스팅을 하는것이 효율적인지 조언구합니다. 예를들어 SQL 데이터베이스 같은 db를 사용하는게 나을지 등

감사합니다.

 

답변 2

1

MoneyPouch님의 프로필 이미지
MoneyPouch
지식공유자

안녕하세요 머니파우치입니다!

  1. 국내주식 과거 분봉데이터는 별도로 구매하시는게 아니면 구하기 어렵습니다. 대부분의 증권사 api에서는 당일의 데이터만 제공합니다.

  2. sql 데이터베이스를 사용해도 되고, pandas DataFrame으로 만들고 parquet 형태로 저장하는 것도 사용하기 편리합니다.

 

..님의 프로필 이미지
..
질문자

안녕하세요. 답변 감사합니다. 혹시 한투에서 당일 '전체' 분봉 데이터를 받아올수 있는 방법이 있나요?

시도해 보았는데, 1분봉으로 최근 30개 데이터만 확인이 됩니다만... 즉, 최근 30분 (1분봉 x 30개)만 확인됩니다 ㅠ

MoneyPouch님의 프로필 이미지
MoneyPouch
지식공유자

안녕하세요 머니파우치입니다!

답변이 늦어진 양해 바랍니다.

아마 한국투자증권에서 주식당일분봉조회[v1_국내주식-022]으로 데이터를 받아오실 것이라 생각되는데요,

(https://apiportal.koreainvestment.com/apiservice-apiservice?/uapi/domestic-stock/v1/quotations/inquire-time-itemchartprice)

 

호출하는 헤더를 보시면 아래와 같이 "FID_INPUT_HOUR_1" 항목이 있습니다.

@dataclass
class RequestQueryParam:
    FID_COND_MRKT_DIV_CODE: str    #조건 시장 분류 코드
    FID_INPUT_ISCD: str    #입력 종목코드
    FID_INPUT_HOUR_1: str    #입력 시간1
    FID_PW_DATA_INCU_YN: str    #과거 데이터 포함 여부 
    FID_ETC_CLS_CODE: str    #기타 구분 코드

 

데이터를 받을 때 이 값을 아래와 같이 받아지는 데이터의 output2에서 "stck_cntg_hour: str"의 마지막 항목값으로 갈아끼워서 while loop으로 호출하시면 당일 전체 분봉을 받으실 수 있습니다!

@dataclass
class ResponseBodyoutput2:
    stck_bsop_date: str    #주식 영업일자
    stck_cntg_hour: str    #주식 체결시간
    stck_prpr: str    #주식 현재가
    stck_oprc: str    #주식 시가
    stck_hgpr: str    #주식 최고가
    stck_lwpr: str    #주식 최저가
    cntg_vol: str    #체결 거래량
    acml_tr_pbmn: str    #누적 거래대금

 

 

0

안녕하세요, 인프런 AI 인턴입니다.

국내 주식 과거 분봉 데이터를 얻는 방법과 이를 활용한 백테스팅에 관한 질문을 주셨네요.

  1. 국내 주식 과거 분봉 데이터 획득 방법:
    일반적으로 국내 증권사들은 과거의 분봉 데이터를 장기간 제공하지 않습니다. 따라서, 주로 API를 통해 데이터를 실시간으로 받아 저장하는 방법을 사용합니다. 만약 한국투자증권을 이용하고 계신다면, 당일 데이터만 제공되기 때문에 주기적으로 데이터를 수집하여 자신만의 데이터베이스를 구축하는 것이 필요합니다. 해외 데이터 제공업체들(Jane Street, Bloomberg 등)에서 유료로 특정 시장이나 기간에 대한 데이터를 받을 수 있지만, 비용이 발생할 수 있습니다.

  2. 데이터 보관 및 백테스팅 방법:
    데이터를 저장하고 백테스팅을 수행하기 위해 여러 가지 접근 방법이 있지만, 여기서는 일반적으로 사용되는 몇 가지를 소개하겠습니다:

    • SQL 데이터베이스: 안정적이고 구조적 데이터를 저장하고 관리하는 데 적합합니다. 특히 대용량의 시간을 다루는 데이터를 처리할 때 유리합니다.
    • NoSQL 데이터베이스(MongoDB 등): JSON 같은 유연한 데이터 구조를 지원하며 대량의 비정형 데이터를 저장하고 효율적으로 검색할 수 있는 환경을 제공합니다.
    • 파일 기반 저장소(CSV, Parquet): 데이터 양이 적고 간단한 경우 CSV 파일처럼 일반 파일에 저장할 수 있으며, Pandas와 같은 라이브러리로 쉽게 분석할 수 있습니다.

이전에 비슷한 고민을 가진 분들을 위한 몇 가지 유익한 추가 정보가 포함된 답변을 참고하시면 좋을 것 같습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

..님의 프로필 이미지
..

작성한 질문수

질문하기