- โ 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
์ ํ ํ์ผ: ๋๋จธ์ง (์์ด๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋์)