νκ΅ν¬μμ¦κΆ OpenAPIλ₯Ό κΈ°λ°μΌλ‘ ν μλλ§€λ§€ μν¬νλ‘μ° μμ€ν
- μμ°μ΄ κΈ°λ° μν¬νλ‘μ° μμ±: μμ°μ΄λ‘ λ§€λ§€ μ λ΅μ μ€λͺ νλ©΄ μλμΌλ‘ μν¬νλ‘μ° μμ±
- μ€μκ° μμΈ λͺ¨λν°λ§: WebSocketμ ν΅ν μ€μκ° μ£Όκ° λͺ¨λν°λ§ λ° λ§€λ§€ μ νΈ κ°μ§
- μλ λ§€λ§€ μ€ν: μ€μ λ 쑰건μ λ°λ₯Έ μλ λ§€μ/λ§€λ μ€ν
- μΉ λμ보λ: μ€μκ° λͺ¨λν°λ§ λ° μν¬νλ‘μ° κ΄λ¦¬ μΉ μΈν°νμ΄μ€
- μ€μΌμ€ κΈ°λ° μ€ν: ν¬λ‘ ννμμ μ¬μ©ν μ κΈ°μ μν¬νλ‘μ° μ€ν
- Python 3.8+
- νκ΅ν¬μμ¦κΆ OpenAPI κ³μ (App Key, App Secret)
pip install -r requirements.txtenv_example νμΌμ .envλ‘ λ³΅μ¬νκ³ API ν€ μ€μ :
cp env_example .env.env νμΌμ νΈμ§νμ¬ μ€μ API ν€ μ
λ ₯:
KIS_APP_KEY=your_actual_app_key
KIS_APP_SECRET=your_actual_app_secret- νκ΅ν¬μμ¦κΆ OpenAPI μ¬μ΄νΈ μ μ
- κ³μ μμ± λ° μ± λ±λ‘
- App Keyμ App Secret λ°κΈ
.envνμΌμ ν€ μ 보 μ λ ₯
python main.pypython main.py --test-toolspython main.py --demopython main.py --port 8080μλ² μμ ν λΈλΌμ°μ μμ μ μ:
- λμ보λ: http://localhost:8000/dashboard
- API λ¬Έμ: http://localhost:8000/docs
μΉ λμ보λμμ λ€μκ³Ό κ°μ΄ μ λ ₯:
λ§€μΌ μμΉ¨ 9μμ κ±°λλ μμ μμ 30κ° μ’
λͺ©μ μ‘°ννκ³ ,
κ·Έ μ€μμ PERμ΄ 10 μ΄νμΈ μ’
λͺ© 5κ°λ₯Ό μ μ νμ¬,
μμ΄κ° λλΉ 2% μ΄μ μμΉνλ κ²½μ° κ°κ° 20%μ© λ§€μνκ³ ,
λ§€λ§€κ°κ²© λλΉ 1% νλ½νκ±°λ 2% μμΉνλ κ²½μ° λ§€λνλ€.
curl -X POST "http://localhost:8000/workflow/create" \
-H "Content-Type: application/json" \
-d '{"text": "κ±°λλ μμ μ’
λͺ© μ€ PER 10 μ΄ν μ’
λͺ© λ§€λ§€"}'curl "http://localhost:8000/workflow/{workflow_id}"βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β μΉ λμ보λ β β MCP μλ² β β νκ΅ν¬μμ¦κΆ β
β βββββΊβ βββββΊβ OpenAPI β
β - μν¬νλ‘μ° κ΄λ¦¬β β - μν¬νλ‘μ° μμ§β β β
β - μ€μκ° λͺ¨λν°λ§β β - μ€μκ° λͺ¨λν° β β - μμΈ μ‘°ν β
β - λ§€λ§€ νν© β β - μλ λ§€λ§€ β β - λ§€λ§€ μ€ν β
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
jayttt/
βββ main.py # λ©μΈ μ€ν νμΌ
βββ config.py # μ€μ κ΄λ¦¬
βββ kis_api.py # νκ΅ν¬μμ¦κΆ API μ°λ
βββ trading_tools.py # λ§€λ§€ λꡬλ€
βββ workflow_engine.py # μν¬νλ‘μ° μμ§
βββ mcp_server.py # MCP μλ² (FastAPI)
βββ realtime_monitor.py # μ€μκ° λͺ¨λν°λ§
βββ requirements.txt # μμ‘΄μ± λͺ©λ‘
βββ env_example # νκ²½ λ³μ μμ
βββ README.md # νλ‘μ νΈ λ¬Έμ
- νκ΅ν¬μμ¦κΆ OpenAPI μ°λ
- ν ν° κ΄λ¦¬, μμΈ μ‘°ν, λ§€λ§€ μ£Όλ¬Έ μ€ν
- StockDiscoveryTool: μ’ λͺ© λ°κ΅΄ (κ±°λλ μμ, PER νν°λ§)
- StockAnalysisTool: μ£Όμ λΆμ (κ°κ²© μμ§μ, μμ΅ λΆμ)
- TradingExecutionTool: λ§€λ§€ μ€ν (λ§€μ/λ§€λ μ£Όλ¬Έ)
- MarketDataTool: μμ₯ λ°μ΄ν° (μ₯ μ΄μ μκ° λ±)
- μμ°μ΄λ₯Ό μν¬νλ‘μ°λ‘ λ³ν
- μ€μΌμ€ κΈ°λ° μλ μ€ν
- λ¨κ³λ³ μ€ν λ° κ²°κ³Ό μΆμ
- μ€μκ° μμΈ λͺ¨λν°λ§
- λ§€λ§€ μ νΈ κ°μ§ λ° μλ μ€ν
- κ·μΉ κΈ°λ° λͺ¨λν°λ§ μμ€ν
- FastAPI κΈ°λ° REST API
- WebSocket μ€μκ° ν΅μ
- μΉ λμ보λ μ 곡
- API ν€λ νκ²½ λ³μλ‘ κ΄λ¦¬
.envνμΌμ.gitignoreμ μΆκ°- μ€μ κ±°λ μ λͺ¨μν¬μ νκ²½μμ μΆ©λΆν ν μ€νΈ νμ
- λͺ¨μν¬μ νκ²½ μ¬μ©: μ€μ κ±°λ μ λ°λμ λͺ¨μν¬μ νκ²½μμ ν μ€νΈ
- 리μ€ν¬ κ΄λ¦¬: μμ€ νλ μ€μ λ° ν¬μ§μ ν¬κΈ° κ΄λ¦¬ νμ
- API μ ν: νκ΅ν¬μμ¦κΆ API νΈμΆ μ ν μ€μ
- μμ₯ μκ°: μ₯ μ΄μ μκ° μΈ κ±°λ λΆκ°
-
API μ°κ²° μ€ν¨
- API ν€ νμΈ
- λ€νΈμν¬ μ°κ²° μν νμΈ
- API νΈμΆ μ ν νμΈ
-
ν ν° λ§λ£
- μλμΌλ‘ μ¬λ°κΈλμ§λ§, μλ μ¬μμ νμν κ²½μ° μμ
-
μΉ λμ보λ μ μ λΆκ°
- λ°©νλ²½ μ€μ νμΈ
- ν¬νΈ μΆ©λ νμΈ
- λ μ κ΅ν μμ°μ΄ μ²λ¦¬ (LLM ν΅ν©)
- λ°μ΄ν°λ² μ΄μ€ μ°λ (κ±°λ λ΄μ μ μ₯)
- λ°±ν μ€ν κΈ°λ₯
- λ λ€μν κΈ°μ μ μ§ν μΆκ°
- λͺ¨λ°μΌ μ± μ°λ
- μλ¦Ό μμ€ν (μ΄λ©μΌ, SMS, μ¬λ)
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
μ΄ νλ‘μ νΈλ MIT λΌμ΄μ μ€ νμ λ°°ν¬λ©λλ€.
λ¬Έμμ¬νμ΄ μμΌμλ©΄ μ΄μλ₯Ό λ±λ‘ν΄μ£ΌμΈμ.