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

QuantDinger Logo

QuantDinger

์ฐจ์„ธ๋Œ€ AI ํ€€ํŠธ ํŠธ๋ ˆ์ด๋”ฉ ํ”Œ๋žซํผ

๐Ÿค– AI ๋„ค์ดํ‹ฐ๋ธŒ ยท ๐Ÿ ๋น„์ฃผ์–ผ ํŒŒ์ด์ฌ ยท ๐ŸŒ ๊ธ€๋กœ๋ฒŒ ๋ฉ€ํ‹ฐ ๋งˆ์ผ“ ยท ๐Ÿ”’ ํ”„๋ผ์ด๋ฒ„์‹œ ์šฐ์„ 

AI ์ฝ”ํŒŒ์ผ๋Ÿฟ๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๊ตฌ์ถ•, ๋ฐฑํ…Œ์ŠคํŒ… ๋ฐ ํŠธ๋ ˆ์ด๋”ฉ ํ”Œ๋žซํผ. PineScript๋ณด๋‹ค ๊ฐ•๋ ฅํ•˜๊ณ , SaaS๋ณด๋‹ค ๋˜‘๋˜‘ํ•ฉ๋‹ˆ๋‹ค.

๊ณต์‹ ์ปค๋ฎค๋‹ˆํ‹ฐ ยท ๋ผ์ด๋ธŒ ๋ฐ๋ชจ ยท ๐Ÿ“บ ๋™์˜์ƒ ๋ฐ๋ชจ ยท ๐ŸŒŸ ์ฐธ์—ฌํ•˜๊ธฐ

License Python Vue Docker Stars

Telegram Group Discord X

--- ## ๐Ÿ“– ์†Œ๊ฐœ ### QuantDinger๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”? QuantDinger๋Š” **๋กœ์ปฌ ์šฐ์„ , ํ”„๋ผ์ด๋ฒ„์‹œ ์šฐ์„ ์˜ ์…€ํ”„ ํ˜ธ์ŠคํŒ… ์ •๋Ÿ‰ ๊ฑฐ๋ž˜ ์ธํ”„๋ผ**์ž…๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ๋จธ์‹ /์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜๋ฉฐ, **PostgreSQL ๊ธฐ๋ฐ˜ ๋ฉ€ํ‹ฐ ์œ ์ € ๊ณ„์ •**์„ ์ œ๊ณตํ•˜๋ฉด์„œ๋„ ์ „๋žต, ๊ฑฐ๋ž˜ ๋ฐ์ดํ„ฐ ๋ฐ API ํ‚ค๋ฅผ ์™„์ „ํžˆ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ### ์™œ ๋กœ์ปฌ ์šฐ์„ ์ธ๊ฐ€์š”? ๋ฐ์ดํ„ฐ์™€ ์ „๋žต์„ ํด๋ผ์šฐ๋“œ์— ์ž ๊ทธ๋Š” SaaS ํ”Œ๋žซํผ๊ณผ ๋‹ฌ๋ฆฌ, QuantDinger๋Š” ๋กœ์ปฌ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์ „๋žต, ๊ฑฐ๋ž˜ ๋กœ๊ทธ, API ํ‚ค ๋ฐ ๋ถ„์„ ๊ฒฐ๊ณผ๋Š” ๋ชจ๋‘ ๊ท€ํ•˜์˜ ๋จธ์‹ ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋ฒค๋” ์ž ๊ธˆ ์—†์Œ, ๊ตฌ๋…๋ฃŒ ์—†์Œ, ๋ฐ์ดํ„ฐ ์œ ์ถœ ์—†์Œ. ### ๋ˆ„๊ตฌ๋ฅผ ์œ„ํ•œ ๊ฒƒ์ธ๊ฐ€์š”? QuantDinger๋Š” ๋‹ค์Œ์„ ์œ„ํ•œ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค: - ๋ฐ์ดํ„ฐ ์ฃผ๊ถŒ๊ณผ ํ”„๋ผ์ด๋ฒ„์‹œ๋ฅผ ์ค‘์‹œํ•˜๋Š” ํŠธ๋ ˆ์ด๋”, ์—ฐ๊ตฌ์› ๋ฐ ์—”์ง€๋‹ˆ์–ด - ํˆฌ๋ช…ํ•˜๊ณ  ๊ฐ์‚ฌ ๊ฐ€๋Šฅํ•œ ๊ฑฐ๋ž˜ ์ธํ”„๋ผ๋ฅผ ์›ํ•˜๋Š” ์‚ฌ๋žŒ - ๋งˆ์ผ€ํŒ…๋ณด๋‹ค ์—”์ง€๋‹ˆ์–ด๋ง์„ ์„ ํ˜ธํ•˜๋Š” ์‚ฌ๋žŒ - ์™„์ „ํ•œ ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ํ•„์š”ํ•œ ์‚ฌ๋žŒ: ๋ฐ์ดํ„ฐ, ๋ถ„์„, ๋ฐฑํ…Œ์ŠคํŒ… ๋ฐ ์‹คํ–‰ ### ํ•ต์‹ฌ ๊ธฐ๋Šฅ QuantDinger๋Š” ์›น์—์„œ ๊ธˆ์œต ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , ๋กœ์ปฌ ์‹œ์žฅ ๋ฐ์ดํ„ฐ์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ถ„์„ ๋ณด๊ณ ์„œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋‚ด์žฅ **LLM ๊ธฐ๋ฐ˜ ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ๋ฆฌ์„œ์น˜ ์‹œ์Šคํ…œ**์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ „๋žต ๊ฐœ๋ฐœ, ๋ฐฑํ…Œ์ŠคํŒ… ๋ฐ ์‹ค๊ฑฐ๋ž˜ ์›Œํฌํ”Œ๋กœ์šฐ์™€ ํ†ตํ•ฉ๋ฉ๋‹ˆ๋‹ค. ### ํ•ต์‹ฌ ๊ฐ€์น˜ - **๐Ÿ”“ Apache 2.0 ์˜คํ”ˆ์†Œ์Šค(์ฝ”๋“œ)**: ํ—ˆ์šฉ์ ์ด๋ฉฐ ์ƒ์—…์ ์œผ๋กœ ์นœํ™”์ ์ž…๋‹ˆ๋‹ค. Apache 2.0 ๋ฒ”์œ„์—์„œ fork/์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋ผ์ด์„ ์Šค/์ €์ž‘๊ถŒ ๊ณ ์ง€ ๋“ฑ ํ•„์š”ํ•œ ํ‘œ๊ธฐ๋Š” ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. - **๐Ÿ ํŒŒ์ด์ฌ ๋„ค์ดํ‹ฐ๋ธŒ & ๋น„์ฃผ์–ผ**: ํ‘œ์ค€ ํŒŒ์ด์ฌ์œผ๋กœ ์ง€ํ‘œ๋ฅผ ์ž‘์„ฑ(PineScript๋ณด๋‹ค ์‰ฌ์›€)ํ•˜๊ณ  AI์˜ ์ง€์›์„ ๋ฐ›์œผ์„ธ์š”. ์ฐจํŠธ์—์„œ ์‹ ํ˜ธ๋ฅผ ์ง์ ‘ ์‹œ๊ฐํ™”ํ•˜์—ฌ "๋กœ์ปฌ ๋ฒ„์ „์˜ TradingView" ๊ฒฝํ—˜์„ ๊ตฌ์ถ•ํ•˜์„ธ์š”. - **๐Ÿค– AI ๋ฃจํ”„ ์ตœ์ ํ™”**: ์ „๋žต์„ ์‹คํ–‰ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, AI๊ฐ€ ๋ฐฑํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๋งค๊ฐœ๋ณ€์ˆ˜ ์กฐ์ •(์†์ ˆ๋งค/์ด์ต์‹คํ˜„/MACD ์„ค์ •)์„ ์ œ์•ˆํ•˜๊ณ  ํ๋ฃจํ”„ ์ตœ์ ํ™”๋ฅผ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค. - **๐ŸŒ ๊ธ€๋กœ๋ฒŒ ๋งˆ์ผ“ ์•ก์„ธ์Šค**: ์•”ํ˜ธํ™”ํ(์‹ค๊ฑฐ๋ž˜), ๋ฏธ๊ตญ/์ค‘๊ตญ ์ฃผ์‹, ์™ธํ™˜ ๋ฐ ์„ ๋ฌผ(๋ฐ์ดํ„ฐ/์•Œ๋ฆผ)์„ ์ง€์›ํ•˜๋Š” ํ†ตํ•ฉ ์‹œ์Šคํ…œ. - **โšก Docker & ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜**: 4์ค„ ๋ช…๋ น์–ด๋กœ ๋น ๋ฅธ ๋ฐฐํฌ. ๋ชจ๋˜ ๊ธฐ์ˆ  ์Šคํƒ(Vue + Python), ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜, ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ. --- ## ๐Ÿ“บ ๋™์˜์ƒ ๋ฐ๋ชจ
QuantDinger ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ ๋™์˜์ƒ

์œ„ ๋™์˜์ƒ์„ ํด๋ฆญํ•˜์—ฌ QuantDinger ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ๋ฅผ ์‹œ์ฒญํ•˜์„ธ์š”

--- ## ๐Ÿ“š ๋ฌธ์„œ ### ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ - [Python ์ „๋žต ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ](docs/STRATEGY_DEV_GUIDE_KO.md) - [Interactive Brokers (IBKR) ํŠธ๋ ˆ์ด๋”ฉ ๊ฐ€์ด๋“œ](docs/IBKR_TRADING_GUIDE_EN.md) ๐Ÿ†• - [MetaTrader 5 (MT5) ํŠธ๋ ˆ์ด๋”ฉ ๊ฐ€์ด๋“œ](docs/MT5_TRADING_GUIDE_EN.md) ๐Ÿ†• ### ์•Œ๋ฆผ ์„ค์ • - [Telegram ์•Œ๋ฆผ ์„ค์ •](docs/NOTIFICATION_TELEGRAM_CONFIG_EN.md) - [์ด๋ฉ”์ผ (SMTP) ์•Œ๋ฆผ ์„ค์ •](docs/NOTIFICATION_EMAIL_CONFIG_EN.md) - [SMS (Twilio) ์•Œ๋ฆผ ์„ค์ •](docs/NOTIFICATION_SMS_CONFIG_EN.md) ## ๐Ÿ“ธ ๋น„์ฃผ์–ผ ํˆฌ์–ด

๐Ÿ—บ๏ธ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์š”

QuantDinger์˜ AI ๊ธฐ๋ฐ˜ ๋ฆฌ์„œ์น˜, ๋ฐฑํ…Œ์ŠคํŒ… ๋ฐ ์ž๋™ํ™” ๊ฑฐ๋ž˜ ๊ธฐ๋Šฅ ์ „์ฒด ๊ฐœ์š”.

QuantDinger ์‹œ์Šคํ…œ ํ† ํด๋กœ์ง€

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

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

QuantDinger Dashboard

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

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

AI Market Analysis

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

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

Trading Assistant

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

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

Indicator Analysis

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

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

Code Generation

๐Ÿ“Š ํฌํŠธํด๋ฆฌ์˜ค ๋ชจ๋‹ˆํ„ฐ

ํฌ์ง€์…˜ ์ถ”์ , ์•Œ๋ฆผ ์„ค์ •, ์ด๋ฉ”์ผ/Telegram์œผ๋กœ AI ๋ถ„์„ ๋ณด๊ณ ์„œ ์ˆ˜์‹ .

Portfolio Monitor
--- ## โœจ ์ฃผ์š” ๊ธฐ๋Šฅ ### 1. ๋น„์ฃผ์–ผ ํŒŒ์ด์ฌ ์ „๋žต ์›Œํฌ๋ฒค์น˜ *PineScript๋ณด๋‹ค ๊ฐ•๋ ฅํ•˜๊ณ , SaaS๋ณด๋‹ค ๋˜‘๋˜‘ํ•ฉ๋‹ˆ๋‹ค.* - **ํŒŒ์ด์ฌ ๋„ค์ดํ‹ฐ๋ธŒ**: ํŒŒ์ด์ฌ์œผ๋กœ ์ง€ํ‘œ์™€ ์ „๋žต์„ ์ž‘์„ฑํ•˜์„ธ์š”. PineScript์™€ ๊ฐ™์€ ์ „์šฉ ์–ธ์–ด ๋Œ€์‹  ์™„์ „ํ•œ ํŒŒ์ด์ฌ ์ƒํƒœ๊ณ„(Pandas, Numpy, TA-Lib)๋ฅผ ํ™œ์šฉํ•˜์„ธ์š”. - **"Mini-TradingView" ๊ฒฝํ—˜**: ๋‚ด์žฅ๋œ K-๋ผ์ธ ์ฐจํŠธ์—์„œ ํŒŒ์ด์ฌ ์ง€ํ‘œ๋ฅผ ์ง์ ‘ ์‹คํ–‰ํ•˜์„ธ์š”. ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์—์„œ ๋งค์ˆ˜/๋งค๋„ ์‹ ํ˜ธ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋””๋ฒ„๊น…ํ•˜์„ธ์š”. - **AI ์ง€์› ์ฝ”๋”ฉ**: ๋‚ด์žฅ AI๊ฐ€ ๋ณต์žกํ•œ ๋กœ์ง์„ ์ž‘์„ฑํ•˜๋„๋ก ํ•˜์„ธ์š”. ์•„์ด๋””์–ด์—์„œ ์ฝ”๋“œ๊นŒ์ง€ ๋‹จ ๋ช‡ ์ดˆ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ### 2. ์™„์ „ํ•œ ๊ฑฐ๋ž˜ ๋ผ์ดํ”„์‚ฌ์ดํด *์ง€ํ‘œ์—์„œ ์‹คํ–‰๊นŒ์ง€, ๋งค๋„๋Ÿฝ๊ฒŒ.* 1. **์ง€ํ‘œ**: ์‹œ์žฅ ์ง„์ž…/์ฒญ์‚ฐ ์‹ ํ˜ธ๋ฅผ ์ •์˜ํ•˜์„ธ์š”. 2. **์ „๋žต ์„ค์ •**: ์œ„ํ—˜ ๊ด€๋ฆฌ ๊ทœ์น™(ํฌ์ง€์…˜ ์‚ฌ์ด์ง•, ์†์ ˆ๋งค, ์ด์ต์‹คํ˜„)์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”. 3. **๋ฐฑํ…Œ์ŠคํŠธ & AI ์ตœ์ ํ™”**: ๋ฐฑํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ํ’๋ถ€ํ•œ ์„ฑ๊ณผ ์ง€ํ‘œ๋ฅผ ํ™•์ธํ•˜๋ฉฐ, **AI๊ฐ€ ๊ฒฐ๊ณผ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๊ฐœ์„  ์‚ฌํ•ญ์„ ์ œ์•ˆ**ํ•˜๋„๋ก ํ•˜์„ธ์š”(์˜ˆ: "MACD ์ž„๊ณ„๊ฐ’์„ X๋กœ ์กฐ์ •"). 4. **์‹คํ–‰ ๋ชจ๋“œ**: - **์‹ค๊ฑฐ๋ž˜**: - **์•”ํ˜ธํ™”ํ**: ์ง์ ‘ API ์‹คํ–‰, 10๊ฐœ ์ด์ƒ์˜ ๊ฑฐ๋ž˜์†Œ(Binance, OKX, Bitget, Bybit ๋“ฑ) ์ง€์› - **๋ฏธ๊ตญ/ํ™์ฝฉ ์ฃผ์‹**: Interactive Brokers (IBKR) ๊ฒฝ์œ  ๐Ÿ†• - **์™ธํ™˜**: MetaTrader 5 (MT5) ๊ฒฝ์œ  ๐Ÿ†• - **์‹ ํ˜ธ ์•Œ๋ฆผ**: ์‹ค๊ฑฐ๋ž˜๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์‹œ์žฅ(A์ฃผ/์„ ๋ฌผ)์˜ ๊ฒฝ์šฐ, Telegram, Discord, Email, SMS ๋˜๋Š” Webhook์„ ํ†ตํ•ด ์‹ ํ˜ธ๋ฅผ ์ „์†กํ•˜์„ธ์š”. ### 3. AI ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ๋ฆฌ์„œ์น˜ *์—ฐ์ค‘๋ฌดํœด 24์‹œ๊ฐ„ AI ํˆฌ์ž ์œ„์›ํšŒ.* ์‹œ์Šคํ…œ์€ ์ „๋žต์˜ 2์ฐจ ํ•„ํ„ฐ ์—ญํ• ์„ ํ•˜๋Š” ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ํŒ€์„ ๊ณ ์šฉํ•ฉ๋‹ˆ๋‹ค: - **๋ฆฌ์„œ์น˜ ์—์ด์ „ํŠธ**: ์›น ๋‰ด์Šค ๋ฐ ๊ฑฐ์‹œ์  ์ด๋ฒคํŠธ(Google/Bing)๋ฅผ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค. - **๋ถ„์„ ์—์ด์ „ํŠธ**: ๊ธฐ์ˆ ์  ์ง€ํ‘œ ๋ฐ ์ž๊ธˆ ํ๋ฆ„์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค. - **์ „๋žต ํ†ตํ•ฉ**: AI์˜ ํŒ๋‹จ์„ "์‹œ์žฅ ํ•„ํ„ฐ"๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AI์˜ ์‹ฌ๋ฆฌ๊ฐ€ ์ผ์น˜ํ•  ๋•Œ๋งŒ ์ „๋žต ๊ฑฐ๋ž˜๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: "AI ๋ฆฌ์Šคํฌ ๋ถ„์„๊ฐ€๊ฐ€ ๊ฑฐ์‹œ์  ๋ฆฌ์Šคํฌ๊ฐ€ ๋†’๋‹ค๊ณ  ํŒ๋‹จํ•˜๋ฉด ๋งค์ˆ˜ํ•˜์ง€ ์•Š์Œ"). ### 4. ๋ฒ”์šฉ ๋ฐ์ดํ„ฐ ์—”์ง„ QuantDinger๋Š” ์—ฌ๋Ÿฌ ์‹œ์žฅ์— ๊ฑธ์นœ ํ†ตํ•ฉ ๋ฐ์ดํ„ฐ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค: - **์•”ํ˜ธํ™”ํ**: ๊ฑฐ๋ž˜๋ฅผ ์œ„ํ•œ ์ง์ ‘ API ์—ฐ๊ฒฐ๏ผˆ10๊ฐœ ์ด์ƒ์˜ ๊ฑฐ๋ž˜์†Œ๏ผ‰๋ฐ ์‹œ์žฅ ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•œ CCXT ํ†ตํ•ฉ๏ผˆ100๊ฐœ ์ด์ƒ์˜ ์†Œ์Šค๏ผ‰ - **์ฃผ์‹**: Yahoo Finance, Finnhub, Tiingo๏ผˆ๋ฏธ๊ตญ ์ฃผ์‹๏ผ‰๋ฐ AkShare๏ผˆ์ค‘๊ตญ/ํ™์ฝฉ ์ฃผ์‹๏ผ‰ - **์„ ๋ฌผ/์™ธํ™˜**: OANDA ๋ฐ ์ฃผ์š” ์„ ๋ฌผ ๋ฐ์ดํ„ฐ ์†Œ์Šค - **ํ”„๋ก์‹œ ์ง€์›**: ์ œํ•œ๋œ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์„ ์œ„ํ•œ ๋‚ด์žฅ ํ”„๋ก์‹œ ๊ตฌ์„ฑ ### 5. ๐Ÿง  ๋ฉ”๋ชจ๋ฆฌ ์ฆ๊ฐ• ์—์ด์ „ํŠธ(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` ### 6. ์ „๋žต ๋Ÿฐํƒ€์ž„ - **์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ์‹คํ–‰๊ธฐ**: ์ „๋žต ์‹คํ–‰์„ ์œ„ํ•œ ๋…๋ฆฝ์ ์ธ ์Šค๋ ˆ๋“œ ํ’€ - **์ž๋™ ๋ณต๊ตฌ**: ์‹œ์Šคํ…œ ์žฌ์‹œ์ž‘ ํ›„ ์‹คํ–‰ ์ค‘์ธ ์ „๋žต ์žฌ๊ฐœ - **์ฃผ๋ฌธ ๋Œ€๊ธฐ์—ด**: ์ฃผ๋ฌธ ์‹คํ–‰์„ ์œ„ํ•œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์›Œ์ปค ### 7. ๋ฉ€ํ‹ฐ LLM ์ œ๊ณต์ž ์ง€์› QuantDinger๋Š” ์ž๋™ ๊ฐ์ง€ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ์—ฌ๋Ÿฌ AI ์ œ๊ณต์ž๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค: | ์ œ๊ณต์ž | ํŠน์ง• | |--------|------| | **OpenRouter** | ๋ฉ€ํ‹ฐ๋ชจ๋ธ ๊ฒŒ์ดํŠธ์›จ์ด(๊ธฐ๋ณธ๊ฐ’), 100+ ๋ชจ๋ธ | | **OpenAI** | GPT-4o, GPT-4o-mini | | **Google Gemini** | Gemini 1.5 Flash/Pro | | **DeepSeek** | DeepSeek Chat(๊ฐ€์„ฑ๋น„ ์ข‹์Œ) | | **xAI Grok** | Grok Beta | `.env`์—์„œ ์„ ํ˜ธํ•˜๋Š” ์ œ๊ณต์ž์˜ API ํ‚ค๋งŒ ์„ค์ •ํ•˜๋ฉด ์‹œ์Šคํ…œ์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ œ๊ณต์ž๋ฅผ ์ž๋™ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค. ### 8. ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ๋ฐ ๋ณด์•ˆ - **๋ฉ€ํ‹ฐ์œ ์ € ์ง€์›**: PostgreSQL ๊ธฐ๋ฐ˜ ์‚ฌ์šฉ์ž ๊ณ„์ •, ์—ญํ•  ๊ธฐ๋ฐ˜ ๊ถŒํ•œ ๊ด€๋ฆฌ - **OAuth ๋กœ๊ทธ์ธ**: Google ๋ฐ GitHub OAuth ํ†ตํ•ฉ - **์ด๋ฉ”์ผ ์ธ์ฆ**: ์ด๋ฉ”์ผ ์ธ์ฆ ์ฝ”๋“œ๋ฅผ ํ†ตํ•œ ๋“ฑ๋ก ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ • - **๋ณด์•ˆ ๊ธฐ๋Šฅ**: Cloudflare Turnstile ์บก์ฐจ, IP/๊ณ„์ • ์†๋„ ์ œํ•œ - **๋ฐ๋ชจ ๋ชจ๋“œ**: ๊ณต๊ฐœ ๋ฐ๋ชจ๋ฅผ ์œ„ํ•œ ์ฝ๊ธฐ ์ „์šฉ ๋ชจ๋“œ ### 9. ๊ธฐ์ˆ  ์Šคํƒ - **๋ฐฑ์—”๋“œ**: Python (Flask) + PostgreSQL + Redis๏ผˆ์˜ต์…˜๏ผ‰ - **ํ”„๋ก ํŠธ์—”๋“œ**: Vue 2 + Ant Design Vue + KlineCharts/ECharts - **๋ฐฐํฌ**: Docker Compose --- ## ๐Ÿ”Œ ์ง€์›๋˜๋Š” ๊ฑฐ๋ž˜์†Œ ๋ฐ ๋ธŒ๋กœ์ปค QuantDinger๋Š” ๋‹ค์–‘ํ•œ ์‹œ์žฅ ์œ ํ˜•์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ์‹คํ–‰ ๋ฐฉ๋ฒ•์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค: ### ์•”ํ˜ธํ™”ํ ๊ฑฐ๋ž˜์†Œ(์ง์ ‘ API) | ๊ฑฐ๋ž˜์†Œ | ์‹œ์žฅ | |:--------:|:---------| | Binance | ํ˜„๋ฌผ, ์„ ๋ฌผ, ๋งˆ์ง„ | | OKX | ํ˜„๋ฌผ, ๋ฌด๊ธฐํ•œ, ์˜ต์…˜ | | Bitget | ํ˜„๋ฌผ, ์„ ๋ฌผ, ์นดํ”ผ ํŠธ๋ ˆ์ด๋”ฉ | | Bybit | ํ˜„๋ฌผ, ์„ ํ˜• ์„ ๋ฌผ | | Coinbase Exchange | ํ˜„๋ฌผ | | Kraken | ํ˜„๋ฌผ, ์„ ๋ฌผ | | KuCoin | ํ˜„๋ฌผ, ์„ ๋ฌผ | | Gate.io | ํ˜„๋ฌผ, ์„ ๋ฌผ | | Bitfinex | ํ˜„๋ฌผ, ํŒŒ์ƒ์ƒํ’ˆ | | Deepcoin | ํ˜„๋ฌผ, ๋ฌด๊ธฐํ•œ | ### ์ „ํ†ต์ ์ธ ๋ธŒ๋กœ์ปค | ๋ธŒ๋กœ์ปค | ์‹œ์žฅ | ํ”Œ๋žซํผ | |:------:|:--------|:---------| | **Interactive Brokers (IBKR)** | ๋ฏธ๊ตญ ์ฃผ์‹, ํ™์ฝฉ ์ฃผ์‹ | TWS / IB Gateway ๐Ÿ†• | | **MetaTrader 5 (MT5)** | ์™ธํ™˜ | MT5 ํ„ฐ๋ฏธ๋„ ๐Ÿ†• | ### ์‹œ์žฅ ๋ฐ์ดํ„ฐ(CCXT ๊ฒฝ์œ ) Bybit, Gate.io, Kraken, KuCoin, HTX ๋ฐ 100๊ฐœ ์ด์ƒ์˜ ๊ธฐํƒ€ ๊ฑฐ๋ž˜์†Œ๊ฐ€ ์‹œ์žฅ ๋ฐ์ดํ„ฐ์šฉ์œผ๋กœ ์ง€์›๋ฉ๋‹ˆ๋‹ค. --- ### ๋‹ค๊ตญ์–ด ์ง€์› QuantDinger๋Š” ํฌ๊ด„์ ์ธ ๊ตญ์ œํ™”๋ฅผ ํ†ตํ•ด ๊ธ€๋กœ๋ฒŒ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค:

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

๋ชจ๋“  UI ์š”์†Œ, ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ๋ฐ ๋ฌธ์„œ๋Š” ์™„๋ฒฝํ•˜๊ฒŒ ๋ฒˆ์—ญ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์–ธ์–ด๋Š” ๋ธŒ๋ผ์šฐ์ € ์„ค์ •์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ๊ฐ์ง€๋˜๊ฑฐ๋‚˜ ์•ฑ์—์„œ ์ˆ˜๋™์œผ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --- ### ์ง€์›๋˜๋Š” ์‹œ์žฅ | ์‹œ์žฅ ์œ ํ˜• | ๋ฐ์ดํ„ฐ ์†Œ์Šค | ๊ฑฐ๋ž˜ | |-------------|--------------|---------| | **์•”ํ˜ธํ™”ํ** | Binance, OKX, Bitget, + 100 ๊ฑฐ๋ž˜์†Œ | โœ… ์™„์ „ ์ง€์› | | **๋ฏธ๊ตญ ์ฃผ์‹** | Yahoo Finance, Finnhub, Tiingo | โœ… IBKR ๊ฒฝ์œ  ๐Ÿ†• | | **ํ™์ฝฉ ์ฃผ์‹** | AkShare, East Money | โœ… IBKR ๊ฒฝ์œ  ๐Ÿ†• | | **์ค‘๊ตญ ์ฃผ์‹(A์ฃผ)** | AkShare, East Money | โšก ๋ฐ์ดํ„ฐ๋งŒ | | **์™ธํ™˜** | Finnhub, OANDA | โœ… MT5 ๊ฒฝ์œ  ๐Ÿ†• | | **์„ ๋ฌผ** | ๊ฑฐ๋ž˜์†Œ 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` - **๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค**: `DATABASE_URL` (PostgreSQL ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด) - **AI / LLM**: `LLM_PROVIDER` (openrouter/openai/google/deepseek/grok), ๊ฐ ์ œ๊ณต์ž API ํ‚ค - **OAuth**: `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET`, `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET` - **๋ณด์•ˆ**: `TURNSTILE_SITE_KEY`, `TURNSTILE_SECRET_KEY`, `ENABLE_REGISTRATION` - **์›น ๊ฒ€์ƒ‰**: `SEARCH_PROVIDER`, `SEARCH_GOOGLE_*`, `SEARCH_BING_API_KEY` - **์ฃผ๋ฌธ ์‹คํ–‰**: `ORDER_MODE` (maker/market), `MAKER_WAIT_SEC`, `MAKER_OFFSET_BPS` - **ํ”„๋ก์‹œ (์˜ต์…˜)**: `PROXY_PORT` ๋˜๋Š” `PROXY_URL` - **๋ฐฑ๊ทธ๋ผ์šด๋“œ ์„œ๋น„์Šค**: `ENABLE_PENDING_ORDER_WORKER`, `ENABLE_PORTFOLIO_MONITOR` --- ## ๐Ÿค ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฐ ์ง€์› - **๊ธฐ์—ฌ**: [๊ธฐ์—ฌ ๊ฐ€์ด๋“œ](CONTRIBUTING.md) ยท [๊ธฐ์—ฌ์ž](CONTRIBUTORS.md) - **Telegram**: [QuantDinger ๊ทธ๋ฃน](https://t.me/quantdinger) - **Discord**: [์„œ๋ฒ„ ์ฐธ์—ฌ](https://discord.gg/vwJ8zxFh9Q) - **๐Ÿ“บ ๋™์˜์ƒ ๋ฐ๋ชจ**: [ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ](https://youtu.be/HPTVpqL7knM) - **YouTube**: [@quantdinger](https://youtube.com/@quantdinger) - **Email**: [brokermr810@gmail.com](mailto:brokermr810@gmail.com) - **GitHub Issues**: [๋ฒ„๊ทธ ์‹ ๊ณ  / ๊ธฐ๋Šฅ ์š”์ฒญ](https://github.com/brokermr810/QuantDinger/issues) --- ## ๐Ÿ’ผ ์ƒ์šฉ ๋ผ์ด์„ ์Šค & ์Šคํฐ์„œ(Commercial License & Sponsorship) QuantDinger์˜ ์ฝ”๋“œ๋Š” **Apache License 2.0**์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ **Apache 2.0์€ ์ƒํ‘œ๊ถŒ์„ ๋ถ€์—ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค**. QuantDinger์˜ ์ด๋ฆ„/๋กœ๊ณ /๋ธŒ๋žœ๋”ฉ์€ ์ƒํ‘œ ๋ฐ ๋ธŒ๋žœ๋“œ ์ •์ฑ…์˜ ์ ์šฉ์„ ๋ฐ›์œผ๋ฉฐ(์ฝ”๋“œ ๋ผ์ด์„ ์Šค์™€ ๋ณ„๊ฐœ): - **์ €์ž‘๊ถŒ/ํ‘œ๊ธฐ**: LICENSE/NOTICE ๋“ฑ ํ•„์š”ํ•œ ์ €์ž‘๊ถŒยท๋ผ์ด์„ ์Šค ๊ณ ์ง€๋Š” ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. - **์ƒํ‘œ(์ด๋ฆ„/๋กœ๊ณ /๋ธŒ๋žœ๋”ฉ)**: QuantDinger์˜ ์ด๋ฆ„/๋กœ๊ณ /๋ธŒ๋žœ๋”ฉ์„ ์‚ฌ์šฉํ•ด ์ถœ์ฒ˜๋ฅผ ์˜ค์ธ์‹œํ‚ค๊ฑฐ๋‚˜ ๋ณด์ฆ(endorsement)์„ ์•”์‹œํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ˆ˜์ • ๋ฒ„์ „์„ ์žฌ๋ฐฐํฌํ•  ๋•Œ๋Š” ์„œ๋ฉด ํ—ˆ๊ฐ€๊ฐ€ ์—†๋Š” ํ•œ QuantDinger ๋ธŒ๋žœ๋”ฉ์„ ์ œ๊ฑฐ/๋Œ€์ฒดํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์žฌ๋ฐฐํฌ๋ฌผ์—์„œ QuantDinger ๋ธŒ๋žœ๋”ฉ์„ **์œ ์ง€/์ˆ˜์ •**ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด(UI ๋กœ๊ณ  ์‚ฌ์šฉ ํฌํ•จ) **์ƒ์šฉ ๋ผ์ด์„ ์Šค**๋ฅผ ๋ฌธ์˜ํ•ด ์ฃผ์„ธ์š”. ์ฐธ๊ณ : `TRADEMARKS.md` ### ์ƒ์šฉ ๋ผ์ด์„ ์Šค๋กœ ์ œ๊ณต๋˜๋Š” ๊ฒƒ - ํ•ฉ์˜๋œ ๋ฒ”์œ„ ๋‚ด **๋ธŒ๋žœ๋”ฉ/ํ‘œ์‹œ์˜ ์ƒ์šฉ ํ—ˆ๊ฐ€** - **์šด์˜ ์ง€์›**: ๋ฐฐํฌ, ์—…๊ทธ๋ ˆ์ด๋“œ, ์žฅ์•  ๋Œ€์‘, ์œ ์ง€๋ณด์ˆ˜ ๊ฐ€์ด๋“œ - **์ปจ์„คํŒ…**: ์•„ํ‚คํ…์ฒ˜ ๋ฆฌ๋ทฐ, ์„ฑ๋Šฅ ํŠœ๋‹, ์ „๋žต ์›Œํฌํ”Œ๋กœ์šฐ ์ปจ์„คํŒ… - **์Šคํฐ์„œ ์˜ต์…˜**: ์Šคํฐ์„œ๋กœ์„œ ๋กœ๊ณ /๊ด‘๊ณ  ๋…ธ์ถœ(README/์›น์‚ฌ์ดํŠธ/์•ฑ ๋‚ด ๋“ฑ ํ•ฉ์˜์— ๋”ฐ๋ฆ„) ### ์—ฐ๋ฝ์ฒ˜ - **Telegram**: [QuantDinger Group](https://t.me/worldinbroker) - **Email**: [brokermr810@gmail.com](mailto:brokermr810@gmail.com) --- ### ๐Ÿ’ ์ง์ ‘ ์ง€์›(๊ธฐ๋ถ€) ๊ท€ํ•˜์˜ ๊ธฐ์—ฌ๋Š” QuantDinger์˜ ์œ ์ง€ ๋ฐ ๊ฐœ์„ ์— ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. **์•”ํ˜ธํ™”ํ ๊ธฐ๋ถ€ (ERC-20 / BEP-20 / Polygon / Arbitrum)** ``` 0x96fa4962181bea077f8c7240efe46afbe73641a7 ```

USDT ETH

--- ### ๐ŸŽ“ ์ง€์› ํŒŒํŠธ๋„ˆ ์–‘์  ๊ธˆ์œต ๊ต์œก ๋ฐ ์—ฐ๊ตฌ๋ฅผ ๋ฐœ์ „์‹œํ‚ค๋Š” ํ•™์ˆ  ๊ธฐ๊ด€๊ณผ ์กฐ์ง์˜ ์ง€์›์„ ๋ฐ›๊ฒŒ ๋˜์–ด ์ž๋ž‘์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.
์ธ๋””์• ๋‚˜ ๋Œ€ํ•™๊ต ์–‘์ ๊ธˆ์œตํ•™ํšŒ

์–‘์ ๊ธˆ์œตํ•™ํšŒ (QFS)
์ธ๋””์• ๋‚˜ ๋Œ€ํ•™๊ต ๋ธ”๋ฃจ๋ฐํ„ด
์ฐจ์„ธ๋Œ€ ์–‘์  ๊ธˆ์œต ์ „๋ฌธ๊ฐ€ ์–‘์„ฑ
> ๐Ÿ’ก **์ง€์› ํŒŒํŠธ๋„ˆ๊ฐ€ ๋˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์œผ์‹ ๊ฐ€์š”?** ๋Œ€ํ•™, ์—ฐ๊ตฌ ๊ธฐ๊ด€ ๋ฐ ์กฐ์ง๊ณผ์˜ ํ˜‘๋ ฅ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. [brokermr810@gmail.com](mailto:brokermr810@gmail.com) ๋˜๋Š” [Telegram](https://t.me/worldinbroker)์œผ๋กœ ์—ฐ๋ฝ์ฃผ์„ธ์š”. --- ### ๊ฐ์‚ฌ์˜ ๋ง QuantDinger๋Š” Flask, Pandas, CCXT, Vue.js, Ant Design Vue, KlineCharts ๋“ฑ๊ณผ ๊ฐ™์€ ํ›Œ๋ฅญํ•œ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์˜ ์–ด๊นจ ์œ„์— ์„œ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ด€๋ฆฌ์ž์™€ ๊ธฐ์—ฌ์ž์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! โค๏ธ