feat: 1분봉 수집 지원 및 10년 기본 수집 기간 확장

1분봉 건너뛰기를 제거하고 예상 API 요청·진행률 로그를 추가한다.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dsyoon
2026-06-11 13:33:05 +09:00
parent c164dfbc84
commit 6e72fe44a7
6 changed files with 97 additions and 22 deletions

View File

@@ -18,7 +18,7 @@ from dataclasses import replace
from deepcoin.config import load_settings
from deepcoin.data.candle_store import CandleStore
from deepcoin.data.downloader import CandleDownloader
from deepcoin.data.intervals import interval_label
from deepcoin.data.intervals import INTERVAL_1MIN, estimate_download_requests, interval_label
def _configure_logging(verbose: bool) -> None:
@@ -44,7 +44,12 @@ def main() -> int:
"--intervals",
type=str,
default=None,
help="쉼표 구분 인터벌. 분봉=분, 일=1440, 주=10080, 월=43200",
help="쉼표 구분 인터벌. 분봉=분(1=1분), 일=1440, 주=10080, 월=43200",
)
parser.add_argument(
"--include-1min",
action="store_true",
help="1분봉(1)을 기존 DOWNLOAD_INTERVALS에 추가하여 수집",
)
parser.add_argument("-v", "--verbose", action="store_true", help="디버그 로그")
args = parser.parse_args()
@@ -59,15 +64,29 @@ def main() -> int:
int(x.strip()) for x in args.intervals.split(",") if x.strip()
],
)
elif args.include_1min and INTERVAL_1MIN not in settings.download_intervals:
settings = replace(
settings,
download_intervals=sorted({*settings.download_intervals, INTERVAL_1MIN}),
)
days = args.days or settings.download_days
logging.getLogger(__name__).info(
log = logging.getLogger(__name__)
log.info(
"대상=%s DB=%s days=%s intervals=%s",
settings.market,
settings.db_path,
days,
settings.download_intervals,
)
for interval in settings.download_intervals:
est = estimate_download_requests(interval, days, batch_size=settings.candle_count)
log.info(
"예상 API 요청: %s%s회 (sleep %.2fs)",
interval_label(interval),
est,
settings.request_sleep_sec,
)
store = CandleStore(settings.db_path)
try: