๐Ÿ‡บ๐Ÿ‡ธ English | ๐Ÿ‡จ๐Ÿ‡ณ ็ฎ€ไฝ“ไธญๆ–‡ | ๐Ÿ‡น๐Ÿ‡ผ ็น้ซ”ไธญๆ–‡ | ๐Ÿ‡ฏ๐Ÿ‡ต ๆ—ฅๆœฌ่ชž | ๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด

QuantDinger Logo

QuantDinger

โšก 5๋ถ„ ๋งŒ์— ์‹œ์ž‘ํ•˜๋Š” ๋‚˜๋งŒ์˜ ๋กœ์ปฌ TradingView + AI ํ€€ํŠธ ๋ฆฌ์„œ์น˜ ๋žฉ

๐Ÿค– AI ๋„ค์ดํ‹ฐ๋ธŒ ยท ๐Ÿ”’ ํ”„๋ผ์ด๋ฒ„์‹œ ์šฐ์„  ยท ๐Ÿš€ ์˜ฌ์ธ์› ํ€€ํŠธ ์›Œํฌ์ŠคํŽ˜์ด์Šค

์ฐจ์„ธ๋Œ€ ๋กœ์ปฌ ํ€€ํŠธ ํ”Œ๋žซํผ: ๋ฉ€ํ‹ฐ ๋งˆ์ผ“ ๋ฐ์ดํ„ฐ, AI ๋ฆฌ์„œ์น˜, ์‹œ๊ฐ์  ๋ฐฑํ…Œ์ŠคํŒ… ๋ฐ ์ž๋™ ๊ฑฐ๋ž˜.

์›น์‚ฌ์ดํŠธ ยท ๋ผ์ด๋ธŒ ๋ฐ๋ชจ ยท ๋ฒ„๊ทธ ์‹ ๊ณ  ยท ํ† ๋ก 

License Python Vue Docker Stars

Telegram Group Discord X

--- ## ๐Ÿ“– ์†Œ๊ฐœ **QuantDinger**๋Š” ํŠธ๋ ˆ์ด๋”, ์—ฐ๊ตฌ์› ๋ฐ ๊ดด์งœ๋“ค์„ ์œ„ํ•ด ์„ค๊ณ„๋œ **๋กœ์ปฌ ์šฐ์„ (Local-First)** ํ€€ํŠธ ๊ฑฐ๋ž˜ ์›Œํฌ์ŠคํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. ๋น„์‹ผ SaaS ํ”Œ๋žซํผ๊ณผ ๋‹ฌ๋ฆฌ, QuantDinger๋Š” **๋ฐ์ดํ„ฐ ์†Œ์œ ๊ถŒ**์„ ๊ท€ํ•˜์—๊ฒŒ ๋Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค. **LLM ๊ธฐ๋ฐ˜ ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ๋ฆฌ์„œ์น˜ ํŒ€**์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์–ด ์›น์—์„œ ๊ธˆ์œต ์ •๋ณด๋ฅผ ์ž์œจ์ ์œผ๋กœ ์ˆ˜์ง‘ํ•˜๊ณ , ๋กœ์ปฌ ์‹œ์žฅ ๋ฐ์ดํ„ฐ์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ์ „๋ฌธ ๋ถ„์„ ๋ณด๊ณ ์„œ๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ์ „๋žต ๊ฐœ๋ฐœ, ๋ฐฑํ…Œ์ŠคํŒ… ๋ฐ ์‹ค๊ฑฐ๋ž˜ ์›Œํฌํ”Œ๋กœ์šฐ์™€ ์›ํ™œํ•˜๊ฒŒ ํ†ตํ•ฉ๋ฉ๋‹ˆ๋‹ค. ### ํ•ต์‹ฌ ๊ฐ€์น˜ - **๐Ÿ›ก๏ธ ํ”„๋ผ์ด๋ฒ„์‹œ ์šฐ์„ **: ๋ชจ๋“  ์ „๋žต, ๊ฑฐ๋ž˜ ๋กœ๊ทธ ๋ฐ API ํ‚ค๋Š” ๋กœ์ปฌ SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. - **๐Ÿง  AI ๊ฐ•ํ™”**: ๋‹จ์ˆœํ•œ ์ฝ”๋“œ ์™„์„ฑ์ด ์•„๋‹Œ, OpenRouter/LLM์œผ๋กœ ๊ตฌ๋™๋˜๋Š” ์ง„์ •ํ•œ AI ๋ฆฌ์„œ์น˜ ์• ๋„๋ฆฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. - **โšก ๋ฉ€ํ‹ฐ ๋งˆ์ผ“**: **์•”ํ˜ธํ™”ํ**, **๋ฏธ๊ตญ ์ฃผ์‹**, **์ค‘๊ตญ/ํ™์ฝฉ ์ฃผ์‹**, **์™ธํ™˜** ๋ฐ **์„ ๋ฌผ**์„ ๊ธฐ๋ณธ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. - **๐Ÿ”Œ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ**: Docker๋ฅผ ํ†ตํ•œ ์›ํด๋ฆญ ๋ฐฐํฌ. ๋ณต์žกํ•œ ํ™˜๊ฒฝ ์„ค์ •์ด ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. --- ## ๐Ÿ“š ๋ฌธ์„œ - [Python ์ „๋žต ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ](docs/STRATEGY_DEV_GUIDE_KO.md) ## ๐Ÿ“ธ ๋น„์ฃผ์–ผ ํˆฌ์–ด

๐Ÿ“Š ์ „๋ฌธ ํ€€ํŠธ ๋Œ€์‹œ๋ณด๋“œ

์‹œ์žฅ ์—ญํ•™, ์ž์‚ฐ ๋ฐ ์ „๋žต ์ƒํƒœ์— ๋Œ€ํ•œ ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง.

QuantDinger Dashboard

๐Ÿค– AI ๋”ฅ ๋ฆฌ์„œ์น˜

์‹œ์žฅ ์‹ฌ๋ฆฌ ๋ฐ ๊ธฐ์ˆ ์  ๋ถ„์„์„ ์œ„ํ•œ ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ํ˜‘์—….

AI Market Analysis

๐Ÿ’ฌ ์Šค๋งˆํŠธ ํŠธ๋ ˆ์ด๋”ฉ ์–ด์‹œ์Šคํ„ดํŠธ

์ฆ‰๊ฐ์ ์ธ ์‹œ์žฅ ํ†ต์ฐฐ๋ ฅ์„ ์œ„ํ•œ ์ž์—ฐ์–ด ์ธํ„ฐํŽ˜์ด์Šค.

Trading Assistant

๐Ÿ“ˆ ๋Œ€ํ™”ํ˜• ์ง€ํ‘œ ๋ถ„์„

๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ๋ถ„์„์ด ๊ฐ€๋Šฅํ•œ ํ’๋ถ€ํ•œ ๊ธฐ์ˆ ์  ์ง€ํ‘œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.

Indicator Analysis

๐Ÿ Python ์ „๋žต ์ƒ์„ฑ

AI ์ง€์› ์ „๋žต ์ฝ”๋”ฉ์ด ๊ฐ€๋Šฅํ•œ ๋‚ด์žฅ ์—๋””ํ„ฐ.

Code Generation
--- ## โœจ ์ฃผ์š” ๊ธฐ๋Šฅ ### 1. ๋ฒ”์šฉ ๋ฐ์ดํ„ฐ ์—”์ง„ ๋” ์ด์ƒ ๋ฐ์ดํ„ฐ API์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์„ธ์š”. QuantDinger๋Š” ๊ฐ•๋ ฅํ•œ ๋ฐ์ดํ„ฐ ์†Œ์Šค ํŒฉํ† ๋ฆฌ ํŒจํ„ด์„ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค: - **์•”ํ˜ธํ™”ํ**: ๊ฑฐ๋ž˜๋ฅผ ์œ„ํ•œ **์ง์ ‘ API ์—ฐ๊ฒฐ**(10๊ฐœ ์ด์ƒ์˜ ๊ฑฐ๋ž˜์†Œ)๊ณผ ์‹œ์žฅ ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•œ **CCXT**(100๊ฐœ ์ด์ƒ์˜ ์†Œ์Šค) ๊ฒฐํ•ฉ. - **์ฃผ์‹**: Yahoo Finance, Finnhub, Tiingo(๋ฏธ๊ตญ) ๋ฐ AkShare(์ค‘๊ตญ/ํ™์ฝฉ) ํ†ตํ•ฉ. - **์„ ๋ฌผ/์™ธํ™˜**: OANDA ๋ฐ ์ฃผ์š” ์„ ๋ฌผ ๋ฐ์ดํ„ฐ ์†Œ์Šค ์ง€์›. - **ํ”„๋ก์‹œ ์ง€์›**: ์ œํ•œ๋œ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์„ ์œ„ํ•œ ๋‚ด์žฅ ํ”„๋ก์‹œ ๊ตฌ์„ฑ. ### 2. AI ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ๋ฆฌ์„œ์น˜ ์ง€์น˜์ง€ ์•Š๋Š” ๋ถ„์„๊ฐ€ ํŒ€: - **์ฝ”๋””๋„ค์ดํ„ฐ ์—์ด์ „ํŠธ**: ์ž‘์—…์„ ๋ถ„ํ•ดํ•˜๊ณ  ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. - **๋ฆฌ์„œ์น˜ ์—์ด์ „ํŠธ**: ๊ฑฐ์‹œ ๋‰ด์Šค๋ฅผ ์œ„ํ•ด ์ „์ฒด ์›น(Google/Bing)์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. - **์•”ํ˜ธํ™”ํ/์ฃผ์‹ ์—์ด์ „ํŠธ**: ํŠน์ • ์‹œ์žฅ์— ๋Œ€ํ•œ ๊ธฐ์ˆ ์  ๋ถ„์„ ๋ฐ ์ž๊ธˆ ํ๋ฆ„ ๋ถ„์„์„ ์ „๋ฌธ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. - **๋ณด๊ณ ์„œ ์ƒ์„ฑ**: ๊ตฌ์กฐํ™”๋œ ์ผ์ผ/์ฃผ๊ฐ„ ๋ฆฌ์„œ์น˜ ๋ณด๊ณ ์„œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ### 2.1 ๐Ÿง  ๋ฉ”๋ชจ๋ฆฌ ์ฆ๊ฐ• ์—์ด์ „ํŠธ(Memory-Augmented Agents) QuantDinger์˜ ์—์ด์ „ํŠธ๋Š” ๋งค๋ฒˆ โ€œ์ฒ˜์Œ๋ถ€ํ„ฐโ€ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ์—๋Š” **๋กœ์ปฌ ๋ฉ”๋ชจ๋ฆฌ DB + ๋ฆฌํ”Œ๋ ‰์…˜(๊ฒ€์ฆ) ๋ฃจํ”„**๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ์–ด, ๊ณผ๊ฑฐ ๊ฒฝํ—˜์„ ๊ฒ€์ƒ‰ํ•ด system prompt์— ์ฃผ์ž…ํ•˜๋Š” RAG ์Šคํƒ€์ผ์˜ ๊ฐ•ํ™”๊ฐ€ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. - **๋ฌด์—‡์ธ๊ฐ€**: ๊ฒฝํ—˜ ๊ฒ€์ƒ‰ ๊ธฐ๋ฐ˜ ํ”„๋กฌํ”„ํŠธ ๊ฐ•ํ™”(๋ชจ๋ธ ํŒŒ์ธํŠœ๋‹/ํ•™์Šต์ด ์•„๋‹˜) - **์ €์žฅ ์œ„์น˜**: ๋กœ์ปฌ SQLite (`backend_api_python/data/memory/`) #### ํ๋ฆ„๋„(์š”์ฒญ โ†’ ๋ฉ”๋ชจ๋ฆฌ ํ๋ฃจํ”„) ```mermaid flowchart TB %% ===== ๐ŸŒ ์ง„์ž… ๋ ˆ์ด์–ด ===== subgraph Entry["๐ŸŒ API ์ง„์ž…์ "] A["๐Ÿ“ก POST /api/analysis/multi"] A2["๐Ÿ”„ POST /api/analysis/reflect"] end %% ===== โš™๏ธ ์„œ๋น„์Šค ๋ ˆ์ด์–ด ===== subgraph Service["โš™๏ธ ์„œ๋น„์Šค ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜"] B[AnalysisService] C[AgentCoordinator] D["๐Ÿ“Š ์ปจํ…์ŠคํŠธ ๊ตฌ์„ฑ
price ยท kline ยท news ยท indicators"] end %% ===== ๐Ÿค– ๋ฉ€ํ‹ฐ์—์ด์ „ํŠธ ์›Œํฌํ”Œ๋กœ์šฐ ===== subgraph Agents["๐Ÿค– ๋ฉ€ํ‹ฐ์—์ด์ „ํŠธ ์›Œํฌํ”Œ๋กœ์šฐ"] subgraph P1["๐Ÿ“ˆ Phase 1 ยท ๋‹ค์ฐจ์› ๋ถ„์„๏ผˆ๋ณ‘๋ ฌ๏ผ‰"] E1["๐Ÿ” MarketAnalyst
๊ธฐ์ˆ ์  ๋ถ„์„"] E2["๐Ÿ“‘ FundamentalAnalyst
ํŽ€๋”๋ฉ˜ํ„ธ"] E3["๐Ÿ“ฐ NewsAnalyst
๋‰ด์Šค"] E4["๐Ÿ’ญ SentimentAnalyst
์‹ฌ๋ฆฌ"] E5["โš ๏ธ RiskAnalyst
๋ฆฌ์Šคํฌ ํ‰๊ฐ€"] end subgraph P2["๐ŸŽฏ Phase 2 ยท ๊ฐ•์„ธ/์•ฝ์„ธ ๋…ผ์Ÿ๏ผˆ๋ณ‘๋ ฌ๏ผ‰"] F1["๐Ÿ‚ BullResearcher
๊ฐ•์„ธ ๋…ผ๊ฑฐ"] F2["๐Ÿป BearResearcher
์•ฝ์„ธ ๋…ผ๊ฑฐ"] end subgraph P3["๐Ÿ’น Phase 3 ยท ๊ฑฐ๋ž˜ ๊ฒฐ์ •"] G["๐ŸŽฐ TraderAgent
์ข…ํ•ฉ ํŒ๋‹จ โ†’ BUY / SELL / HOLD"] end end %% ===== ๐Ÿง  ๋ฉ”๋ชจ๋ฆฌ ๋ ˆ์ด์–ด ===== subgraph Memory["๐Ÿง  ๋กœ์ปฌ SQLite ๋ฉ”๋ชจ๋ฆฌ๏ผˆdata/memory/๏ผ‰"] M1[("market_analyst")] M2[("fundamental")] M3[("news_analyst")] M4[("sentiment")] M5[("risk_analyst")] M6[("bull_researcher")] M7[("bear_researcher")] M8[("trader_agent")] end %% ===== ๐Ÿ”„ ๋ฆฌํ”Œ๋ ‰์…˜ ๋ฃจํ”„ ===== subgraph Reflect["๐Ÿ”„ ๋ฆฌํ”Œ๋ ‰์…˜ ๋ฃจํ”„๏ผˆ์˜ต์…˜๏ผ‰"] R[ReflectionService] RR[("reflection_records.db")] W["โฐ ReflectionWorker"] end %% ===== ๋ฉ”์ธ ํ๋ฆ„ ===== A --> B --> C --> D D --> P1 --> P2 --> P3 %% ===== ๋ฉ”๋ชจ๋ฆฌ ์ฝ๊ธฐ/์“ฐ๊ธฐ ===== E1 <-.-> M1 E2 <-.-> M2 E3 <-.-> M3 E4 <-.-> M4 E5 <-.-> M5 F1 <-.-> M6 F2 <-.-> M7 G <-.-> M8 %% ===== ๋ฆฌํ”Œ๋ ‰์…˜ ํ๋ฆ„ ===== C --> R --> RR W --> RR W -.->|"๊ฒ€์ฆ + ํ•™์Šต"| M8 A2 -.->|"์ˆ˜๋™ ํšŒ๊ณ "| M8 ``` #### ๊ฒ€์ƒ‰ ๋žญํ‚น(๊ฐ„๋žต) \[ score = w_{sim}\cdot sim + w_{recency}\cdot recency + w_{returns}\cdot returns\_score \] #### ํ•™์Šต ๊ฒฝ๋กœ - **์ˆ˜๋™ ํšŒ๊ณ (์ถ”์ฒœ)**: `POST /api/analysis/reflect`๋กœ ์‹ค์ œ ๊ฒฐ๊ณผ(returns/result)๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๊ธฐ๋ก - **์ž๋™ ๊ฒ€์ฆ(์˜ต์…˜)**: `ENABLE_REFLECTION_WORKER=true`, `REFLECTION_WORKER_INTERVAL_SEC`๋กœ ์ฃผ๊ธฐ์  ๊ฒ€์ฆโ†’๋ฉ”๋ชจ๋ฆฌ ๋ฐ˜์˜ #### ์ฃผ์š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜(`.env`) - `ENABLE_AGENT_MEMORY`, `AGENT_MEMORY_TOP_K`, `AGENT_MEMORY_CANDIDATE_LIMIT` - `AGENT_MEMORY_ENABLE_VECTOR`, `AGENT_MEMORY_EMBEDDING_DIM` - `AGENT_MEMORY_HALF_LIFE_DAYS`, `AGENT_MEMORY_W_SIM`, `AGENT_MEMORY_W_RECENCY`, `AGENT_MEMORY_W_RETURNS` - `ENABLE_REFLECTION_WORKER`, `REFLECTION_WORKER_INTERVAL_SEC` ### 3. ๊ฐ•๋ ฅํ•œ ์ „๋žต ๋Ÿฐํƒ€์ž„ - **์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ์‹คํ–‰๊ธฐ**: ์ „๋žต ์‹คํ–‰์„ ์œ„ํ•œ ๋…๋ฆฝ์ ์ธ ์Šค๋ ˆ๋“œ ํ’€ ๊ด€๋ฆฌ. - **์ž๋™ ๋ณต๊ตฌ**: ์‹œ์Šคํ…œ ์žฌ์‹œ์ž‘ ํ›„ ์‹คํ–‰ ์ค‘์ธ ์ „๋žต์„ ์ž๋™์œผ๋กœ ์žฌ๊ฐœํ•ฉ๋‹ˆ๋‹ค. - **์ง€์ •๊ฐ€ ์ฃผ๋ฌธ ์›Œ์ปค**: ์•ˆ์ •์ ์ธ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋Œ€๊ธฐ์—ด์€ ์ •ํ™•ํ•œ ์‹ ํ˜ธ ์‹คํ–‰์„ ๋ณด์žฅํ•˜๊ณ  ์Šฌ๋ฆฌํ”ผ์ง€๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ### 4. ์ตœ์‹  ๊ธฐ์ˆ  ์Šคํƒ - **๋ฐฑ์—”๋“œ**: Python (Flask) + SQLite + Redis (์˜ต์…˜) โ€” ๊ฐ„๋‹จํ•˜๊ณ  ๊ฐ•๋ ฅํ•˜๋ฉฐ ํ™•์žฅ์ด ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค. - **ํ”„๋ก ํŠธ์—”๋“œ**: Vue 2 + Ant Design Vue + KlineCharts/ECharts โ€” ๋ฐ˜์‘ํ˜•์ด๋ฉฐ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒํ•ฉ๋‹ˆ๋‹ค. - **๋ฐฐํฌ**: Docker Compose ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜. --- ## ๐Ÿฆ ์ง€์›๋˜๋Š” ๊ฑฐ๋ž˜์†Œ ๋ฐ ๋ฆฌ๋ฒ ์ดํŠธ QuantDinger๋Š” ์ €์ง€์—ฐ ์‹คํ–‰์„ ์œ„ํ•ด ์ฃผ์š” ์•”ํ˜ธํ™”ํ ๊ฑฐ๋ž˜์†Œ์— **์ง์ ‘ ์—ฐ๊ฒฐ**์„ ์ง€์›ํ•˜๋ฉฐ, ๊ด‘๋ฒ”์œ„ํ•œ ์‹œ์žฅ ๋ฐ์ดํ„ฐ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ์œ„ํ•ด **CCXT**๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. > ๐Ÿ’ก **๋…์  ํ˜œํƒ**: ์•„๋ž˜ ํŒŒํŠธ๋„ˆ ๋งํฌ๋ฅผ ํ†ตํ•ด ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๋ฉด **๊ฑฐ๋ž˜ ์ˆ˜์ˆ˜๋ฃŒ ํ• ์ธ** ๋ฐ **๋…์  ๋ณด๋„ˆ์Šค**๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ถ”๊ฐ€ ๋น„์šฉ ์—†์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ง€์›ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค! | ๊ฑฐ๋ž˜์†Œ | ํŠน์ง• | ๊ฐ€์ž… ๋ณด๋„ˆ์Šค | |:--------:|:---------|:-------------:| | | ๐Ÿฅ‡ **์„ธ๊ณ„ ์ตœ๋Œ€**
ํ˜„๋ฌผ, ์„ ๋ฌผ, ๋งˆ์ง„ | | | | ๐Ÿš€ **Web3 & ํŒŒ์ƒ์ƒํ’ˆ**
ํ˜„๋ฌผ, ๋ฌด๊ธฐํ•œ, ์˜ต์…˜ | | | | ๐Ÿ‘ฅ **์†Œ์…œ ํŠธ๋ ˆ์ด๋”ฉ**
์นดํ”ผ ํŠธ๋ ˆ์ด๋”ฉ, ์„ ๋ฌผ | |
**๋˜ํ•œ ์ง€์›๋จ (Direct/CCXT):** | | | | | | |:---:|:---:|:---:|:---:|:---:| --- ### ๋‹ค๊ตญ์–ด ์ง€์› QuantDinger๋Š” ํฌ๊ด„์ ์ธ ๊ตญ์ œํ™”๋ฅผ ํ†ตํ•ด ๊ธ€๋กœ๋ฒŒ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค:

English Simplified Chinese Traditional Chinese Japanese Korean German French Thai Vietnamese Arabic

๋ชจ๋“  UI ์š”์†Œ, ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ๋ฐ ๋ฌธ์„œ๋Š” ์™„๋ฒฝํ•˜๊ฒŒ ๋ฒˆ์—ญ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์–ธ์–ด๋Š” ๋ธŒ๋ผ์šฐ์ € ์„ค์ •์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ๊ฐ์ง€๋˜๊ฑฐ๋‚˜ ์•ฑ์—์„œ ์ˆ˜๋™์œผ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --- ### ์ง€์›๋˜๋Š” ์‹œ์žฅ | ์‹œ์žฅ ์œ ํ˜• | ๋ฐ์ดํ„ฐ ์†Œ์Šค | ๊ฑฐ๋ž˜ | |-------------|--------------|---------| | **์•”ํ˜ธํ™”ํ** | Binance, OKX, Bitget, + 100 ๊ฑฐ๋ž˜์†Œ | โœ… ์™„์ „ ์ง€์› | | **๋ฏธ๊ตญ ์ฃผ์‹** | Yahoo Finance, Finnhub, Tiingo | โœ… ๋ธŒ๋กœ์ปค API ๊ฒฝ์œ  | | **์ค‘๊ตญ/ํ™์ฝฉ ์ฃผ์‹** | AkShare, East Money | โšก ๋ฐ์ดํ„ฐ๋งŒ | | **์™ธํ™˜** | Finnhub, OANDA | โœ… ๋ธŒ๋กœ์ปค API ๊ฒฝ์œ  | | **์„ ๋ฌผ** | ๊ฑฐ๋ž˜์†Œ API, AkShare | โšก ๋ฐ์ดํ„ฐ๋งŒ | --- ### ์•„ํ‚คํ…์ฒ˜ (ํ˜„์žฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ) ```text โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ quantdinger_vue โ”‚ โ”‚ (Vue 2 + Ant Design Vue) โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ HTTP (/api/*) โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ backend_api_python โ”‚ โ”‚ (Flask + ์ „๋žต ๋Ÿฐํƒ€์ž„) โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”œโ”€ SQLite (quantdinger.db) โ”œโ”€ Redis (์˜ต์…˜ ์บ์‹œ) โ””โ”€ ๋ฐ์ดํ„ฐ ์ œ๊ณต์ž / LLMs / ๊ฑฐ๋ž˜์†Œ ``` --- ### ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๊ตฌ์กฐ ```text . โ”œโ”€ backend_api_python/ # Flask API + AI + ๋ฐฑํ…Œ์ŠคํŠธ + ์ „๋žต ๋Ÿฐํƒ€์ž„ โ”‚ โ”œโ”€ app/ โ”‚ โ”œโ”€ env.example # ๋กœ์ปฌ ๊ตฌ์„ฑ์„ ์œ„ํ•ด .env๋กœ ๋ณต์‚ฌ โ”‚ โ”œโ”€ requirements.txt โ”‚ โ””โ”€ run.py # ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ โ””โ”€ quantdinger_vue/ # Vue 2 UI (๊ฐœ๋ฐœ ์„œ๋ฒ„๋Š” /api๋ฅผ ๋ฐฑ์—”๋“œ๋กœ ํ”„๋ก์‹œ) ``` --- ## ๋น ๋ฅธ ์‹œ์ž‘ ### ์˜ต์…˜ 1: Docker ๋ฐฐํฌ (๊ถŒ์žฅ) QuantDinger๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. #### 1. ์›ํด๋ฆญ ์‹œ์ž‘ **Linux / macOS** ```bash git clone https://github.com/brokermr810/QuantDinger.git && \ cd QuantDinger && \ cp backend_api_python/env.example backend_api_python/.env && \ docker-compose up -d --build ``` **Windows (PowerShell)** ```powershell git clone https://github.com/brokermr810/QuantDinger.git cd QuantDinger Copy-Item backend_api_python\env.example -Destination backend_api_python\.env docker-compose up -d --build ``` #### 2. ์ ‘์† ๋ฐ ๊ตฌ์„ฑ - **ํ”„๋ก ํŠธ์—”๋“œ UI**: http://localhost:8888 - **๊ธฐ๋ณธ ๊ณ„์ •**: `quantdinger` / `123456` > **์ฐธ๊ณ **: AI ๊ธฐ๋Šฅ์ด๋‚˜ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์˜ ๋ณด์•ˆ์„ ์œ„ํ•ด, `backend_api_python/.env`๋ฅผ ํŽธ์ง‘ํ•˜์—ฌ( `OPENROUTER_API_KEY` ์ถ”๊ฐ€, ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ) `docker-compose restart backend`๋กœ ์„œ๋น„์Šค๋ฅผ ์žฌ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค. #### 3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•ก์„ธ์Šค - **ํ”„๋ก ํŠธ์—”๋“œ UI**: http://localhost - **๋ฐฑ์—”๋“œ API**: http://localhost:5000 #### Docker ๋ช…๋ น ์ฐธ์กฐ ```bash # ์‹คํ–‰ ์ƒํƒœ ๋ณด๊ธฐ docker-compose ps # ๋กœ๊ทธ ๋ณด๊ธฐ docker-compose logs -f # ์„œ๋น„์Šค ์ค‘์ง€ docker-compose down # ๋ณผ๋ฅจ ์ค‘์ง€ ๋ฐ ์ œ๊ฑฐ (๊ฒฝ๊ณ : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค!) docker-compose down -v ``` #### ๋ฐ์ดํ„ฐ ์ง€์†์„ฑ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋Š” ํ˜ธ์ŠคํŠธ์— ๋งˆ์šดํŠธ๋˜๋ฉฐ ์ปจํ…Œ์ด๋„ˆ ์žฌ์‹œ์ž‘ ํ›„์—๋„ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค: ```yaml volumes: - ./backend_api_python/logs:/app/logs # ๋กœ๊ทธ - ./backend_api_python/data:/app/data # ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ(quantdinger.db ํฌํ•จ) - ./backend_api_python/.env:/app/.env # ๊ตฌ์„ฑ ํŒŒ์ผ ``` --- ### ์˜ต์…˜ 2: ๋กœ์ปฌ ๊ฐœ๋ฐœ **์ „์ œ ์กฐ๊ฑด** - Python 3.10+ ๊ถŒ์žฅ - Node.js 16+ ๊ถŒ์žฅ #### 1. ๋ฐฑ์—”๋“œ ์‹œ์ž‘ (Flask API) ```bash cd backend_api_python pip install -r requirements.txt cp env.example .env # Windows: copy env.example .env python run.py ``` ๋ฐฑ์—”๋“œ๋Š” `http://localhost:5000`์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. #### 2. ํ”„๋ก ํŠธ์—”๋“œ ์‹œ์ž‘ (Vue UI) ```bash cd quantdinger_vue npm install npm run serve ``` ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์„œ๋ฒ„๋Š” `http://localhost:8000`์—์„œ ์‹คํ–‰๋˜๋ฉฐ `/api/*`๋ฅผ `http://localhost:5000`์œผ๋กœ ํ”„๋ก์‹œํ•ฉ๋‹ˆ๋‹ค. --- ### ๊ตฌ์„ฑ (.env) `backend_api_python/env.example`์„ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ์ผ๋ฐ˜์ ์ธ ์„ค์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค: - **์ธ์ฆ**: `SECRET_KEY`, `ADMIN_USER`, `ADMIN_PASSWORD` - **์„œ๋ฒ„**: `PYTHON_API_HOST`, `PYTHON_API_PORT`, `PYTHON_API_DEBUG` - **AI / LLM**: `OPENROUTER_API_KEY`, `OPENROUTER_MODEL` - **์›น ๊ฒ€์ƒ‰**: `SEARCH_PROVIDER`, `SEARCH_GOOGLE_*`, `SEARCH_BING_API_KEY` - **ํ”„๋ก์‹œ (์˜ต์…˜)**: `PROXY_PORT` ๋˜๋Š” `PROXY_URL` --- ## ๐Ÿค ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฐ ์ง€์› ์ „๋žต ๊ณต์œ  ๋ฐ ๊ธฐ์ˆ  ์ง€์›์„ ์œ„ํ•ด ๊ธ€๋กœ๋ฒŒ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์ฐธ์—ฌํ•˜์‹ญ์‹œ์˜ค: - **Telegram (Group)**: [Join QuantDinger Telegram Group](https://t.me/+ULKYtlLEE9M4ZWZl) - **Discord**: [์„œ๋ฒ„ ์ฐธ์—ฌ](https://discord.gg/cn6HVE2KC) - **YouTube**: [@quantdinger](https://youtube.com/@quantdinger) - **Email**: [brokermr810@gmail.com](mailto:brokermr810@gmail.com) - **GitHub Issues**: [๋ฒ„๊ทธ ์‹ ๊ณ  / ๊ธฐ๋Šฅ ์š”์ฒญ](https://github.com/brokermr810/QuantDinger/issues) --- ## โ˜• ํ”„๋กœ์ ํŠธ ํ›„์› QuantDinger๊ฐ€ ์ˆ˜์ต์„ ๋‚ด๋Š” ๋ฐ ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ปคํ”ผ ํ•œ ์ž”์„ ์‚ฌ์ฃผ์‹œ๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด ๋ณด์‹ญ์‹œ์˜ค. ๊ท€ํ•˜์˜ ํ›„์›์€ ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ด์•„์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค! **ERC-20 / BEP-20 / Polygon / Arbitrum** ``` 0x96fa4962181bea077f8c7240efe46afbe73641a7 ``` USDT ETH --- ### ์ƒ์šฉ ์„œ๋น„์Šค QuantDinger๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ „๋ฌธ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค: | ์„œ๋น„์Šค | ์„ค๋ช… | |---------|-------------| | **๋ฐฐํฌ ๋ฐ ์„ค์ •** | ์„œ๋ฒ„ ๋ฐฐํฌ, ๊ตฌ์„ฑ ๋ฐ ์ตœ์ ํ™”์— ๋Œ€ํ•œ ์ผ๋Œ€์ผ ์ง€์› | | **๋งž์ถคํ˜• ์ „๋žต ๊ฐœ๋ฐœ** | ๊ท€ํ•˜์˜ ํŠน์ • ์š”๊ตฌ์™€ ์‹œ์žฅ์— ๋งž์ถ˜ ๊ฑฐ๋ž˜ ์ „๋žต ์„ค๊ณ„ | | **์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์—…๊ทธ๋ ˆ์ด๋“œ** | ์ƒ์šฉ ๋ผ์ด์„ ์Šค, ์šฐ์„  ์ง€์› ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ์œ„ํ•œ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ | | **๊ต์œก ๋ฐ ์ปจ์„คํŒ…** | ๊ฑฐ๋ž˜ ํŒ€์„ ์œ„ํ•œ ์‹ค์ „ ๊ต์œก ์„ธ์…˜ ๋ฐ ์ „๋žต ์ปจ์„คํŒ… | **๊ด€์‹ฌ์ด ์žˆ์œผ์‹ญ๋‹ˆ๊นŒ?** ๋‹ค์Œ์„ ํ†ตํ•ด ๋ฌธ์˜ํ•˜์‹ญ์‹œ์˜ค: - ๐Ÿ“ง Email: [brokermr810@gmail.com](mailto:brokermr810@gmail.com) - ๐Ÿ’ฌ Telegram: [QuantDinger Group](https://t.me/+ULKYtlLEE9M4ZWZl) --- ### ๊ฐ์‚ฌ์˜ ๋ง QuantDinger๋Š” Flask, Pandas, CCXT, Vue.js, Ant Design Vue, KlineCharts ๋“ฑ๊ณผ ๊ฐ™์€ ํ›Œ๋ฅญํ•œ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์˜ ์–ด๊นจ ์œ„์— ์„œ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ด€๋ฆฌ์ž์™€ ๊ธฐ์—ฌ์ž์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! โค๏ธ