48 lines
1.9 KiB
Python
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 |