# 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