κ°μΈμ© ννΈ λΆμ λμ보λ. λ―Έκ΅Β·νκ΅ μ£Όμμ κΈ°μ μ μ§νλ₯Ό μλμΌλ‘ κ³μ°νκ³ , λ§€μ/λ§€λ/κ΄λ§ μκ·Έλκ³Ό λͺ©νκ°λ₯Ό μ μν©λλ€. λ³λ ꡬλ λ£ μμ΄ λ¬΄λ£ λ°μ΄ν° μμ€λ§μΌλ‘ λμν©λλ€.
| κΈ°λ₯ | μ€λͺ |
|---|---|
| κΈ°μ μ§ν | RSI Β· ADX Β· EMA(12/26/50) Β· SMA(200) Β· Bollinger Bands Β· ATR Β· OBV Β· μμ¬μ λ³λμ±(HV) |
| λ§€λ§€ μκ·Έλ | EMA 골λ /λ°λν¬λ‘μ€ + ADX >25 + OBV λ°©ν₯ + RSI λ³΅ν© μ‘°κ±΄ + κ΄λ§ μΌμ μλ μ μ |
| λͺ©νκ° / μμ κ° | ATR κΈ°λ° μλ κ³μ° (R:R λΉμ¨ ν¬ν¨) |
| 5μΌ λ³λ μμ λ²μ | μμ¬μ λ³λμ± Β±1Ο |
| μ±κ³Ό μ§ν | μ°νμ° μμ΅λ₯ Β· λ³λμ± Β· μ€ν Β· μλ₯΄ν°λ Έ Β· μΉΌλ§ λΉμ¨ Β· MDD |
| μ λ리μ€νΈ 컨μΌμμ€ | λ―Έκ΅ μ£Όμ νμ (Finviz μ§κ³) |
| 보μ νν© | νκ· λ§€μ κ° Β· νκ°μμ΅ Β· μμ΅λ₯ κ³μ° (localStorage μ μ₯) |
| μ€μΊλ | 쑰건 |
|---|---|
| π μνμ£Ό 보μ | μμ΄ $300Mβ$2B Β· λΆκΈ° λ§€μΆ μ±μ₯ >25% Β· μ λ리μ€νΈ λ§€μ μΆμ² |
| π λ΄λΆμ λ§€μ | μ΅κ·Ό μμ/λμ£Όμ£Ό λ§€μ κ±°λ |
| π νμ μ£Ό | AIΒ·λ°μ΄μ€Β·μλμ§μ νΒ·λΈλ‘체μΈΒ·λ‘λ΄ ν λ§ νλ μ΄μ |
- Gemini 1.5 Flash κΈ°λ° κΈ°μ μ λΆμ μ½λ©νΈ (λ§€μ κ·Όκ±° / 리μ€ν¬ / μ’ ν© νλ¨)
- μΌμΌ μ¬μ©λ μ€μκ° νμ (λ¬΄λ£ ν°μ΄ 1,500ν/μΌ)
- κ°κ²© μλ¦Ό (λͺ©νκ°Β·μμ κ° λλ¬ μ λΈλΌμ°μ μλ¦Ό, 2λΆλ§λ€ ν΄λ§)
- νκ΅ μ£Όμ μμ μ§μ (λ€μ΄λ² κΈμ΅, KRW νμ, μ’ λͺ©λͺ μλ μ‘°ν)
- λ€ν¬ ν λ§ UI (Navy + Glass λμμΈ μμ€ν )
- λλ© νμ΄μ§ μ¨λ³΄λ© (μ΅μ΄ λ°©λ¬Έ μ Gemini API ν€ μ€μ μλ΄)
- μ¬μ΄λλ° μ€μ (β) λ²νΌμΌλ‘ API ν€ μν νμΈ λ° μ¬μ€μ
- μ€μΊλ κ²°κ³Όμμ μ’ λͺ© μ¦μ μΆκ°
- μ 체 μ’ λͺ© μΌκ΄ μλ‘κ³ μΉ¨
Python 3.10 μ΄μκ³Ό μΈν°λ· μ°κ²°μ΄ νμν©λλ€.
1. Python μ€μΉ νμΈ
ν°λ―Έλμ μ΄κ³ μλ λͺ λ Ήμ΄λ₯Ό μ λ ₯ν©λλ€.
python3 --versionλ²μ μ΄ μΆλ ₯λλ©΄ μ΄λ―Έ μ€μΉλμ΄ μμ΅λλ€. μ€μΉκ° μ λμ΄ μλ€λ©΄ python.org μμ λ€μ΄λ‘λνμΈμ.
2. μ μ₯μ ν΄λ‘
git clone https://github.com/Artsyork/ZeroKey-Quant.git
cd ZeroKey-Quant3. μμ‘΄μ± μ€μΉ
pip3 install flask yfinance pandas numpy plotly requests pytz4. μ€ν
python3 main.pyλΈλΌμ°μ κ° μλμΌλ‘ http://localhost:5001 μ μ½λλ€. μ’
λ£νλ €λ©΄ ν°λ―Έλμμ Ctrl+C λ₯Ό λλ₯΄μΈμ.
1. Python μ€μΉ
python.org μμ Python 3.10 μ΄μμ λ€μ΄λ‘λν©λλ€.
β οΈ μ€μΉ μ€ "Add Python to PATH" μ΅μ μ λ°λμ 체ν¬νμΈμ.
2. μ μ₯μ λ€μ΄λ‘λ
gitμ΄ μ€μΉλμ΄ μλ€λ©΄:
git clone https://github.com/Artsyork/ZeroKey-Quant.git
cd ZeroKey-Quant
gitμ΄ μλ€λ©΄ GitHub νμ΄μ§μμ Code β Download ZIP μΌλ‘ λ€μ΄λ‘λ ν μμΆμ ν΄μ ν©λλ€.
3. μμ‘΄μ± μ€μΉ
λ€μ΄λ‘λν ν΄λμμ μ£Όμμ°½μ cmd λ₯Ό μ
λ ₯ν΄ λͺ
λ Ή ν둬ννΈλ₯Ό μ΄κ³ :
pip install flask yfinance pandas numpy plotly requests pytz
4. μ€ν
python main.py
λΈλΌμ°μ κ° μλμΌλ‘ http://localhost:5001 μ μ½λλ€. μ’
λ£νλ €λ©΄ λͺ
λ Ή ν둬ννΈ μ°½μ λ«κ±°λ Ctrl+C λ₯Ό λλ₯΄μΈμ.
Google AI Studio μμ λ¬΄λ£ API ν€λ₯Ό λ°κΈν ν λλ© νμ΄μ§μμ μ λ ₯νκ±°λ, νκ²½λ³μλ‘ μ€μ ν μ μμ΅λλ€.
Mac
export GEMINI_API_KEY="your-api-key-here"
python3 main.pyWindows
set GEMINI_API_KEY=your-api-key-here
python main.py
μ¬μ΄λλ° κ²μμ°½μ ν°μ»€λ₯Ό μ λ ₯νκ³ μΆκ° λ²νΌμ λλ¦ λλ€.
λ―Έκ΅ μ£Όμ: AAPL TSLA NVDA MSFT AMZN
νκ΅ μ£Όμ: 005930 (μΌμ±μ μ) 035420 (NAVER) 000660 (SKνμ΄λμ€)
νκ΅ μ£Όμμ 6μ리 μ«μ μ½λλ₯Ό μ λ ₯ν©λλ€.
.KS/.KQμ λ―Έμ¬λ μ§μν©λλ€.
λΆμ νλ©΄ μλ¨μ BUY / SELL / WAIT λ°°μ§κ° νμλ©λλ€.
| λ°°μ§ | 쑰건 | μλ―Έ |
|---|---|---|
| β² BUY | EMA12 > EMA26 AND ADX > 25 AND OBVβ AND RSI < 70 | 4κ° μ‘°κ±΄ λμ μΆ©μ‘±, λ§€μ κ²ν |
| βΌ SELL | EMA12 < EMA26 AND ADX > 25 AND OBVβ AND RSI > 30 | 4κ° μ‘°κ±΄ λμ μΆ©μ‘±, λ§€λ κ²ν |
| βΈ WAIT | μ 쑰건 λ―ΈμΆ©μ‘± | ADXΒ·RSI μνμ λ°λ₯Έ κ΄λ§ κΈ°κ° μ μ |
μμ β NVDA BUY μκ·Έλ
β² λ§€μ μκ·Έλ
μ§μ
κ°: $118.50 (νμ¬κ° β 0.5ΓATR)
λͺ©νκ°: $127.20 (+7.3%)
μμ κ°: $113.80 (-4.0%)
R:R λΉμ¨: 1.8
ATR(Average True Range) κΈ°λ°μΌλ‘ μ§μ κ°Β·λͺ©νκ°Β·μμ κ°λ₯Ό μλ κ³μ°ν©λλ€.
λ§€μ μλ리μ€
μ§μ
κ° (close β 0.5ΓATR) : $118.50
λͺ©νκ° (close + 2.0ΓATR) : $127.20 +7.3%
μμ κ° (close β 1.0ΓATR) : $113.80 -4.0%
R:R : 1.8
λ§€λ(μ) μλ리μ€
μ§μ
κ° (close + 0.5ΓATR) : $121.50
λͺ©νκ° (close β 2.0ΓATR) : $112.80 -6.1%
μμ κ° (close + 1.0ΓATR) : $126.20 +4.0%
R:R : 1.5
λΆμ νλ©΄ νλ¨ μλ¦Ό μ€μ μμ λͺ©νκ°Β·μμ κ°λ₯Ό μ λ ₯νλ©΄, ν΄λΉ κ°κ²© λλ¬ μ λΈλΌμ°μ μλ¦Όμ λ°μ μ μμ΅λλ€.
λͺ©νκ° μλ¦Ό: $130.00 β κ°κ²© λν μ "NVDA λͺ©νκ° λλ¬!" μλ¦Ό
μμ κ° μλ¦Ό: $110.00 β κ°κ²© νλ½ μ "NVDA μμ κ° λλ¬!" μλ¦Ό
μλ¦Όμ 2λΆλ§λ€ κ°κ²©μ ν΄λ§ν©λλ€. λΈλΌμ°μ μλ¦Ό κΆνμ νμ©ν΄μΌ ν©λλ€.
GEMINI_API_KEY μ€μ ν, μ’ λͺ© λΆμ νλ©΄μ π€ AI μκ·Έλ λΆμ μΉ΄λμμ λΆμ μμ² λ²νΌμ ν΄λ¦ν©λλ€.
μμ μΆλ ₯
μ’
ν© νλ¨
EMA 골λ ν¬λ‘μ€μ κ°ν ADX(32)κ° μμΉ μΆμΈλ₯Ό μ§μ§νλ,
RSI 68λ‘ λ¨κΈ° κ³Όμ΄ κ°λ₯μ±μ΄ μμ΄ λλ¦Όλͺ© μ§μ
μ κΆμ₯ν©λλ€.
π λ§€μ κ·Όκ±° π 리μ€ν¬ μμΈ
Β· EMA12 > EMA26 Β· RSI 68, κ³Όλ§€μ κ·Όμ
Β· ADX 32 (κ°ν μΆμΈ) Β· κ±°λλ κ°μ μΆμΈ
Β· OBV μ§μ μμΉ Β· μΉν° μ λ° μ‘°μ κ°λ₯
μ λ’°λ: μ€κ° ν¬μ κΈ°κ°: μ€κΈ°(1-3κ°μ)
zerokey-quant/
βββ main.py # Flask μλ² (λ°±μλ μ 체)
βββ dashboard.html # λ¨μΌ νμ΄μ§ νλ‘ νΈμλ
βββ ai_usage.json # AI μΌμΌ μ¬μ©λ μΆμ (λ°νμ μμ±, git μ μΈ)
βββ ticker_history.json # κ°μΈ μ‘°ν κΈ°λ‘ (git μ μΈ)
βββ ticker_history.example.json # νμ μμ
βββ .gitignore
main.py
βββ λ°μ΄ν° μμ§
β βββ fetch_naver() # λ€μ΄λ² κΈμ΅ β νκ΅ μ£Όμ OHLCV
β βββ _fetch_yfinance() # Yahoo Finance β λ―Έκ΅ μ£Όμ OHLCV
β βββ fetch_analyst() # Finviz β μ λ리μ€νΈ 컨μΌμμ€
β
βββ μ§ν κ³μ°
β βββ _rsi() _atr() _ema() # κ°λ³ μ§ν ν¨μ
β βββ _adx() _bb() # ADX, Bollinger Bands
β βββ _obv() _hv() # OBV, μμ¬μ λ³λμ±
β βββ build() # μ μ§νλ₯Ό DataFrameμ ν©μ°
β
βββ μκ·Έλ / μΆμ²
β βββ recommend() # BUY/SELL/WAIT νμ + λͺ©νκ° + μ±κ³Όμ§ν(μ€νΒ·μλ₯΄ν°λ
ΈΒ·μΉΌλ§Β·MDD)
β
βββ μ°¨νΈ
β βββ make_chart() # Plotly 4-subplot μ°¨νΈ μμ±
β
βββ AI λΆμ
β βββ ai_analyze() # Gemini API νΈμΆ
β βββ _get_usage() # μΌμΌ μ¬μ©λ κ΄λ¦¬
β
βββ Flask λΌμ°νΈ
βββ GET / # dashboard.html μλΉ
βββ GET /api/analyze # μ’
λͺ© μ 체 λΆμ
βββ GET /api/price # λΉ λ₯Έ κ°κ²© μ‘°ν (μλ¦Ό ν΄λ§)
βββ GET /api/ai-analysis # AI μκ·Έλ λΆμ
βββ GET /api/ai-usage # AI μ¬μ©λ μ‘°ν
βββ GET /api/scan/smallcap # μνμ£Ό μ€μΊλ
βββ GET /api/scan/insider # λ΄λΆμ λ§€μ μ€μΊλ
βββ GET /api/scan/disruptive # νμ μ£Ό μ€μΊλ
λ¨μΌ HTML νμΌλ‘ ꡬμ±λ©λλ€. μΈλΆ νλ μμν¬ μμ΄ Vanilla JSλ‘ μμ±λμ΄ μμ΅λλ€.
dashboard.html
βββ CSS μΈλΌμΈ λμμΈ μμ€ν
(CSS λ³μ, λ€ν¬ ν
λ§)
βββ HTML λλ© νμ΄μ§ + μ¬μ΄λλ° + λΆμ ν¨λ + λ°κ΅΄ ν
βββ JavaScript
βββ fetchTicker() /api/analyze νΈμΆ β μΊμ μ μ₯ (μ¬μλ 2ν)
βββ showAnalysis() μΊμ λ°μ΄ν° β νλ©΄ λ λλ§
βββ renderSidebar() μ’
λͺ© λͺ©λ‘ + μκ·Έλ dot + μμ΅ νμ
βββ Plotly μ°¨νΈ μλ² λ°ν JSON β μ°¨νΈ λ λλ§
βββ μλ¦Ό μμ€ν
2λΆ ν΄λ§ + Web Notifications API
βββ 보μ νν© localStorage μ μ₯/λΆλ¬μ€κΈ°
βββ requestAiAnalysis() AI λΆμ μμ² λ° κ²°κ³Ό νμ
βββ loadUsagePill() AI μΌμΌ μ¬μ©λ μ‘°ν λ° μ§νλ° νμ
βββ runScan() 3μ’
μ€μΊλ μ€ν λ° κ²°κ³Ό λ λλ§
βββ lpSaveKey() / lpEnter() / lpShow() λλ© νμ΄μ§ μ μ΄
λΈλΌμ°μ β GET /api/analyze?ticker=NVDA
β
βΌ
build(ticker)
ββ yfinance / λ€μ΄λ² κΈμ΅ β OHLCV DataFrame
ββ μ§ν κ³μ° (RSI, ADX β¦)
ββ μκ·Έλ νμ (BUY/SELL/WAIT)
β
make_chart() β Plotly JSON
recommend() β μκ·Έλ dict
fetch_analyst() β 컨μΌμμ€ dict
β
βΌ
JSON μλ΅ β λΈλΌμ°μ λ λλ§
| μμ€ | μ©λ | μ ν |
|---|---|---|
| λ€μ΄λ² κΈμ΅ | νκ΅ μ£Όμ OHLCV (μ΅κ·Ό 300μΌ) | 무λ£, λΉκ³΅μ |
| Yahoo Finance (yfinance) | λ―Έκ΅ μ£Όμ OHLCV (1λ ) | 무λ£, λΉκ³΅μ, ~2,000ν/μκ° |
| Finviz | λ―Έκ΅ μ£Όμ μ λ리μ€νΈ 컨μΌμμ€, μ€μΊλ | 무λ£, λΉκ³΅μ |
| Gemini 1.5 Flash | AI λΆμ | λ¬΄λ£ 1,500ν/μΌ (API ν€ νμ) |
- μ΄ λꡬλ κ°μΈ νμ΅ λ° λΉμμ μ μ¬μ© λͺ©μ μΌλ‘ μ μλμμ΅λλ€.
- μ 곡λλ μκ·Έλκ³Ό λΆμμ ν¬μ κΆμ κ° μλλλ€. ν¬μ κ²°μ μ μ± μμ λ³ΈμΈμκ² μμ΅λλ€.
- Naver Finance, Yahoo Finance, Finviz λ°μ΄ν°λ λΉκ³΅μ λ°©μμΌλ‘ μ‘°νλ©λλ€. κ° μλΉμ€μ μ΄μ©μ½κ΄μ μ€μν μ± μμ μ¬μ©μμκ² μμ΅λλ€.
MIT License
