백테스트 수정중
This commit is contained in:
@@ -274,8 +274,24 @@ async def get_all_krx_stocks_from_fdr(
|
||||
return stocks
|
||||
|
||||
except ImportError:
|
||||
logger.error("FinanceDataReader 미설치. pip install finance-datareader")
|
||||
return []
|
||||
logger.warning("FinanceDataReader 미설치. DB 폴백 사용")
|
||||
return await _get_stocks_from_db(market)
|
||||
except Exception as e:
|
||||
logger.error(f"FDR 조회 실패: {e}")
|
||||
logger.warning(f"FDR 조회 실패: {e}. DB 폴백 사용")
|
||||
return await _get_stocks_from_db(market)
|
||||
|
||||
|
||||
async def _get_stocks_from_db(market: Optional[str] = None) -> List[Dict[str, Any]]:
|
||||
"""FDR 실패 시 DB의 StockDailyPrice에서 고유 종목 코드 조회"""
|
||||
try:
|
||||
from sqlalchemy import distinct
|
||||
async with AsyncSessionLocal() as session:
|
||||
stmt = select(distinct(StockDailyPrice.stock_code))
|
||||
result = await session.execute(stmt)
|
||||
codes = [row[0] for row in result.all()]
|
||||
|
||||
logger.info(f"DB 폴백: {len(codes)}개 종목 조회 (market 필터 미적용)")
|
||||
return [{'code': c, 'name': c, 'market': market or 'KOSPI'} for c in codes]
|
||||
except Exception as e:
|
||||
logger.error(f"DB 폴백 조회 실패: {e}")
|
||||
return []
|
||||
|
||||
Reference in New Issue
Block a user