# 운영체제 관련 기능 (예: 환경변수 읽기, 경로 등)을 위한 모듈 import os # HTTP 요청을 보내기 위한 외부 라이브러리 (API 호출용) import requests # .env 파일에 저장된 환경변수를 불러오기 위한 도구 from dotenv import load_dotenv # .env 파일에서 환경변수들을 로드합니다 (예: API 키) load_dotenv() # 환경변수에서 Polygon API 키를 읽어옵니다 API_KEY = os.getenv("POLYGON_API_KEY") # 주어진 종목(symbol)에 대해 Polygon API를 사용하여 OHLCV 데이터를 수집하는 함수 # 예: fetch_ohlcv("AAPL", "2024-01-01", "2024-03-01") def fetch_ohlcv(symbol: str, start_date: str, end_date: str, interval: str = "day") -> list: # Polygon API의 엔드포인트 URL 구성 url = f"https://api.polygon.io/v2/aggs/ticker/{symbol}/range/1/{interval}/{start_date}/{end_date}" # API 호출에 필요한 파라미터 정의 params = { "adjusted": "true", # 분할, 배당 등을 반영한 데이터 사용 여부 "sort": "asc", # 날짜 기준 오름차순 정렬 "limit": 50000, # 한 번에 최대 수집 가능한 데이터 수 "apiKey": API_KEY # 인증을 위한 API 키 } # GET 방식으로 API 호출을 수행 res = requests.get(url, params=params) # 응답 상태 코드가 200이 아니면 예외를 발생시킴 (에러 메시지도 함께 출력) if res.status_code != 200: raise Exception(f"Polygon API error: {res.status_code} - {res.text}") # JSON 응답 중 'results' 키에 들어있는 실제 데이터를 추출하여 반환 data = res.json() return data.get("results", [])