This repository has been archived on 2025-06-07. You can view files and clone it, but cannot push or open issues or pull requests.
2025-05-06 21:23:04 +09:00

48 lines
1.9 KiB
Python

# os 모듈은 폴더 생성, 파일 경로 등 운영체제와 관련된 기능을 다룹니다
try:
from data_collection_engine.modules.fetchers.polygon import fetch_ohlcv
from data_collection_engine.modules.preprocessors import clean_ohlcv
except ModuleNotFoundError:
from modules.fetchers.polygon import fetch_ohlcv
from modules.preprocessors import clean_ohlcv
import os
# Polygon API를 통해 주가 데이터를 가져오는 함수 (fetcher 모듈에 정의됨)
# 가져온 데이터를 정제(clean)하는 함수 (preprocessor 모듈에 정의됨)
# 데이터 수집을 담당하는 클래스
class DataCollectionEngine:
# 생성자 함수: 객체가 만들어질 때 실행됨
def __init__(self, data_dir="data"):
self.data_dir = data_dir # 수집한 데이터를 저장할 디렉토리 경로
# 데이터 저장 폴더가 없으면 새로 생성함
os.makedirs(data_dir, exist_ok=True)
# 실제 데이터를 수집하고 저장하는 메인 함수
def collect(self, symbol: str, start_date: str, end_date: str):
# 사용자에게 현재 어떤 종목의 데이터를 수집 중인지 출력
print(f"{symbol} 데이터를 수집 중입니다...")
# fetch_ohlcv 함수를 사용하여 API로부터 주가 원본 데이터(raw data)를 수집
raw_data = fetch_ohlcv(symbol, start_date, end_date)
# 수집한 데이터를 정제(cleaning)하여 DataFrame으로 변환
df = clean_ohlcv(raw_data)
# 저장할 파일 경로를 지정함 (예: data/AAPL_ohlcv.csv)
save_path = os.path.join(self.data_dir, f"{symbol}_ohlcv.csv")
# DataFrame을 CSV 파일로 저장
df.to_csv(save_path, index=False)
# 사용자에게 저장 완료 메시지를 출력
print(f"{symbol} 데이터 저장 완료: {save_path}")
# 수집한 데이터프레임을 반환 (다른 곳에서 쓸 수 있도록)
return df