- ✅ MongoDB BarbellAI.Stock에 저장
- ✅ 영업일 기준 정확한 결측 데이터 체크
- ✅ 설정 가능한 체크 기간
pip install requests pymongo pandas schedule python-dotenv프로젝트 루트에 .env 파일 생성:
APP_KEY=실제_발급받은_API_키
APP_SECRET=실제_발급받은_API_시크릿
MONGO_URI=mongodb://localhost:27017/# MongoDB 실행 (Windows)
mongod
# MongoDB 실행 (macOS/Linux)
sudo systemctl start mongodpython simple_collector.py메뉴 선택:
- 1: 초기 설정 (처음 한 번만)
- 2: 일반 데이터 수집
- 3: 결측 데이터 확인
- 4: 결측 데이터 복구
- 5: 데이터 현황 보기
- 6: 설정 보기
python manual_tools.py setup # 초기 설정
python manual_tools.py collect # 데이터 수집
python manual_tools.py check # 결측 확인
python manual_tools.py fix # 결측 복구
python manual_tools.py status # 현황 보기
python manual_tools.py settings # 설정 보기python run_scheduler.py자동 실행:
- 매일 09:15 → 일봉 수집
- 매주 월요일 09:15 → 주봉 수집
- 매월 1일 09:15 → 월봉 수집
- 매일 18:00 → 결측 복구
MongoDB 경로:
localhost:27017
├── BarbellAI (데이터베이스)
└── Stock (컬렉션)
├── {stock_code: "005930", period: "D", date: "2025-01-15", ...}
├── {stock_code: "005930", period: "W", date: "2025-01-13", ...}
└── {stock_code: "005930", period: "M", date: "2025-01-01", ...}
데이터 구조:
{
"_id": ObjectId("..."),
"stock_code": "005930",
"date": ISODate("2025-01-15T00:00:00Z"),
"period": "D", // D: 일봉, W: 주봉, M: 월봉
"open": 61000,
"high": 62500,
"low": 60800,
"close": 62300,
"volume": 15234567,
"created_at": ISODate("2025-01-15T10:30:00Z")
}config.py 파일 생성하면 더 세부 설정 가능:
# 수집할 종목 리스트
STOCK_LIST = [
"005930", # 삼성전자
"000660", # SK하이닉스
# ... 추가 종목
]
# 결측 체크 기간 (일 단위)
MISSING_CHECK_DAYS = {
"D": 90, # 일봉: 최근 90일
"W": 365, # 주봉: 최근 365일
"M": 730 # 월봉: 최근 730일
}
# 초기 수집량
INITIAL_DATA_COUNT = {
"D": 200, # 일봉: 과거 200일
"W": 100, # 주봉: 과거 100주
"M": 60 # 월봉: 과거 60개월
}# 1. .env 파일 생성 (API 키 설정)
# 2. MongoDB 실행
mongod
# 3. 초기 설정 (한 번만)
python simple_collector.py
# 메뉴 1번 선택 → 과거 데이터 대량 수집
# 4. 자동화 시작
python run_scheduler.py
# → 이후 자동으로 매일/매주/매월 수집# 1. 결측 확인
python manual_tools.py check
# 2. 복구 실행
python manual_tools.py fix
# 3. 결과 확인
python manual_tools.py status// MongoDB 쉘 접속
mongosh
// 데이터베이스 선택
use BarbellAI
// 컬렉션 확인
show collections
// 삼성전자 최근 일봉 5개 조회
db.Stock.find({stock_code: "005930", period: "D"}).sort({date: -1}).limit(5)
// 전체 데이터 개수 확인
db.Stock.countDocuments({})-
"APP_KEY와 APP_SECRET을 .env 파일에 설정해주세요!"
.env파일이 없거나 API 키가 잘못됨- 해결:
.env파일 생성하고 정확한 API 키 입력
-
"MongoDB 연결 실패"
- MongoDB가 실행되지 않음
- 해결:
mongod명령으로 MongoDB 실행
-
"토큰 획득 실패"
- API 키가 잘못되었거나 네트워크 문제
- 해결: 한국투자증권에서 API 키 재확인
-
"데이터 조회 실패"
- API 호출 한도 초과 또는 장 운영 시간 외
- 해결: 시간을 두고 다시 시도
- 빠른 체크:
config.py에서MISSING_CHECK_DAYS값 줄이기 - 전체 체크: 값 늘려서 완전한 무결성 확인
- API 한도 관리:
time.sleep()값 조절
프로젝트/
├── .env # API 키 설정 (필수)
├── simple_collector.py # 메인 수집기 (필수)
├── manual_tools.py # 명령어 도구 (선택)
├── simple_scheduler.py # 스케줄러 (선택)
├── run_scheduler.py # 스케줄러 실행 (선택)
├── config.py # 세부 설정 (선택)
├── requirements.txt # 패키지 목록
├── scheduler.log # 스케줄러 로그
└── README.md # 사용 설명서
필수 파일: .env, simple_collector.py
선택 파일: 나머지 (없어도 기본값으로 동작)