23 KiB
QuantDinger
â¡ 5åã§ç«ã¡äžãããããªãã ãã®ããŒã«ã«TradingView + AIã¯ãªã³ãç ç©¶ã©ã
ð€ AIãã€ãã£ã · ð ãã©ã€ãã·ãŒéèŠ Â· ð ãªãŒã«ã€ã³ã¯ã³å®éçã¯ãŒã¯ã¹ããŒã¹
次äžä»£ã®ããŒã«ã«ã»ã¯ãªã³ããã©ãããã©ãŒã ïŒãã«ãããŒã±ããããŒã¿ãAIãªãµãŒããèŠèŠçããã¯ãã¹ããèªåååŒã
å ¬åŒã³ãã¥ãã㣠· ã©ã€ãã㢠· ðº åç»ã㢠· ð åå ãã
ð QuantDinger DAOã³ãã¥ããã£ã«åå - æ©æè²¢ç®è ã¯QDTããŒã¯ã³ãç²åŸïŒ
忣åãã³ãã¥ããã£äž»å°ã®ååŒãã©ãããã©ãŒã ãæ§ç¯äžã§ããæ©æè²¢ç®è ã¯QDTã¬ããã³ã¹ããŒã¯ã³ãåãåããŸãïŒ
ð 詳现ãèŠã · ð¬ Telegramã«åå · ð® Discordã«åå
ð ã¯ããã«
QuantDinger ã¯ããã¬ãŒããŒãç ç©¶è ããããŠã®ãŒã¯ã®ããã«èšèšããã ããŒã«ã«ãã¡ãŒã¹ãïŒLocal-FirstïŒ ã®å®éçååŒã¯ãŒã¯ã¹ããŒã¹ã§ãã
é«äŸ¡ãªSaaSãã©ãããã©ãŒã ãšã¯ç°ãªããQuantDinger㯠ããŒã¿ã®æææš© ãããªãã«åãæ»ããŸããLLMããŒã¹ã®ãã«ããšãŒãžã§ã³ãã»ãªãµãŒãããŒã ãå èµããŠããããŠã§ãããéèæ å ±ãèªåŸçã«åéããããŒã«ã«ã®åžå ŽããŒã¿ãšçµã¿åããããããã§ãã·ã§ãã«ãªåæã¬ããŒããäœæããæŠç¥éçºãããã¯ãã¹ããå®ååŒã®ã¯ãŒã¯ãããŒãšã·ãŒã ã¬ã¹ã«çµ±åããŸãã
ã³ã¢ããªã¥ãŒ
- ð¡ïž ãã©ã€ãã·ãŒç¬¬äž: ãã¹ãŠã®æŠç¥ãååŒãã°ãAPIããŒã¯ããŒã«ã«ã®SQLiteããŒã¿ããŒã¹ã«ä¿åãããŸãã
- ð§ AIã«ãã匷å: åãªãã³ãŒãè£å®ã§ã¯ãªããOpenRouter/LLMãæèŒããæ¬ç©ã®AIãªãµãŒãã¢ããªã¹ãã§ãã
- â¡ ãã«ãããŒã±ãã: æå·è³ç£ãç±³åœæ ªãäžåœ/éŠæž¯æ ªãFXãå ç© ããã€ãã£ããµããŒãã
- ð ããã«äœ¿ãã: Dockerã«ããã¯ã³ã¯ãªãã¯ãããã€ãè€éãªç°å¢èšå®ã¯äžèŠã§ãã
ðº åç»ãã¢
ð ããã¥ã¡ã³ã
ðž ããžã¥ã¢ã«ãã¢ãŒ
ð ãããã§ãã·ã§ãã«ã»ã¯ãªã³ãããã·ã¥ããŒã
åžå Žã®ååãè³ç£ãæŠç¥ã¹ããŒã¿ã¹ããªã¢ã«ã¿ã€ã ã§ç£èŠã
âš äž»ãªæ©èœ
1. ãŠãããŒãµã«ããŒã¿ãšã³ãžã³
ããŒã¿APIã«ã€ããŠå¿é ããå¿ èŠã¯ãããããŸãããQuantDingerã¯åŒ·åãªããŒã¿ãœãŒã¹ãã¡ã¯ããªãŒãã¿ãŒã³ãåããŠããŸãïŒ
- æå·è³ç£: ååŒã®ããã® çŽæ¥APIæ¥ç¶ïŒ10以äžã®ååŒæïŒãšãåžå ŽããŒã¿ã®ããã® CCXTïŒ100以äžã®ãœãŒã¹ïŒã®çµã¿åããã
- æ ªåŒ: Yahoo FinanceãFinnhubãTiingoïŒç±³åœïŒãAkShareïŒäžåœ/éŠæž¯ïŒãçµ±åã
- å ç©/FX: OANDAããã³äž»èŠãªå ç©ããŒã¿ãœãŒã¹ããµããŒãã
- ãããã·ãµããŒã: å¶éããããããã¯ãŒã¯ç°å¢ã®ããã®å èµãããã·èšå®ã
2. AI ãã«ããšãŒãžã§ã³ããªãµãŒã
ç²ããç¥ããªãã¢ããªã¹ãããŒã ïŒ
- ã³ãŒãã£ããŒã¿ãŒãšãŒãžã§ã³ã: ã¿ã¹ã¯ãåè§£ããã¯ãŒã¯ãããŒã管çããŸãã
- ãªãµãŒããšãŒãžã§ã³ã: ãã¯ããã¥ãŒã¹ã®ããã«ãŠã§ãå šäœïŒGoogle/BingïŒãæ€çŽ¢ããŸãã
- æå·è³ç£/æ ªåŒãšãŒãžã§ã³ã: ç¹å®ã®åžå Žã®ãã¯ãã«ã«åæãšè³éãããŒåæã«ç¹åããŠããŸãã
- ã¬ããŒãçæ: æ§é åãããæ¥æ¬¡/鱿¬¡ãªãµãŒãã¬ããŒããèªåçã«äœæããŸãã
2.1 ð§ èšæ¶æ¡åŒµãšãŒãžã§ã³ãïŒMemory-Augmented AgentsïŒ
QuantDinger ã®ãšãŒãžã§ã³ãã¯æ¯åããŒããããã§ã¯ãããŸãããããã¯ãšã³ãã« ããŒã«ã«èšæ¶DB + åçïŒæ€èšŒïŒã«ãŒã ãå èµããéå»ã®çµéšãæ€çŽ¢ã㊠system prompt ã«æ³šå ¥ããŸãïŒRAG 颚ïŒã
- ããã¯äœãïŒçµéšæ€çŽ¢ã«ããããã³ããæ¡åŒµïŒâ»ã¢ãã«ã®åŠç¿/埮調æŽã§ã¯ãããŸããïŒ
- ä¿åå
ïŒããŒã«ã« SQLiteïŒ
backend_api_python/data/memory/ïŒ
ãããŒå³ïŒãªã¯ãšã¹ã â èšæ¶éã«ãŒãïŒ
flowchart TB
%% ===== ð å
¥å£å±€ =====
subgraph Entry["ð API ãšã³ããªãŒ"]
A["ð¡ POST /api/analysis/multi"]
A2["ð POST /api/analysis/reflect"]
end
%% ===== âïž ãµãŒãã¹å±€ =====
subgraph Service["âïž ãµãŒãã¹ç·šæ"]
B[AnalysisService]
C[AgentCoordinator]
D["ð ã³ã³ããã¹ãæ§ç¯<br/>price · kline · news · indicators"]
end
%% ===== ð€ ãã«ããšãŒãžã§ã³ãã¯ãŒã¯ãã㌠=====
subgraph Agents["ð€ ãã«ããšãŒãžã§ã³ãã¯ãŒã¯ãããŒ"]
subgraph P1["ð Phase 1 · 倿¬¡å
åæïŒäžŠåïŒ"]
E1["ð MarketAnalyst<br/><i>ãã¯ãã«ã«</i>"]
E2["ð FundamentalAnalyst<br/><i>ãã¡ã³ãã¡ã³ã¿ã«</i>"]
E3["ð° NewsAnalyst<br/><i>ãã¥ãŒã¹</i>"]
E4["ð SentimentAnalyst<br/><i>ã»ã³ãã¡ã³ã</i>"]
E5["â ïž RiskAnalyst<br/><i>ãªã¹ã¯è©äŸ¡</i>"]
end
subgraph P2["ð¯ Phase 2 · 匷æ°åŒ±æ°è«äºïŒäžŠåïŒ"]
F1["ð BullResearcher<br/><i>匷æ°ã®è«ç¹</i>"]
F2["ð» BearResearcher<br/><i>匱æ°ã®è«ç¹</i>"]
end
subgraph P3["ð¹ Phase 3 · ååŒå€æ"]
G["ð° TraderAgent<br/><i>ç·åå€å® â BUY / SELL / HOLD</i>"]
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_LIMITAGENT_MEMORY_ENABLE_VECTOR,AGENT_MEMORY_EMBEDDING_DIMAGENT_MEMORY_HALF_LIFE_DAYS,AGENT_MEMORY_W_SIM,AGENT_MEMORY_W_RECENCY,AGENT_MEMORY_W_RETURNSENABLE_REFLECTION_WORKER,REFLECTION_WORKER_INTERVAL_SEC
3. å ç¢ãªæŠç¥ã©ã³ã¿ã€ã
- ã¹ã¬ããããŒã¹ã®ãšã°ãŒãã¥ãŒã¿ãŒ: æŠç¥å®è¡ã®ããã®ç¬ç«ããã¹ã¬ããããŒã«ç®¡çã
- èªå埩å : ã·ã¹ãã åèµ·ååŸã«å®è¡äžã®æŠç¥ãèªåçã«åéããŸãã
- æå€æ³šæã¯ãŒã«ãŒ: ä¿¡é Œæ§ã®é«ãããã¯ã°ã©ãŠã³ããã¥ãŒããæ£ç¢ºãªã·ã°ãã«å®è¡ãä¿èšŒããã¹ãªãããŒãžãé²ããŸãã
4. ææ°ã®æè¡ã¹ã¿ãã¯
- ããã¯ãšã³ã: Python (Flask) + SQLite + Redis (ãªãã·ã§ã³) â ã·ã³ãã«ã匷åãæ¡åŒµå¯èœã
- ããã³ããšã³ã: Vue 2 + Ant Design Vue + KlineCharts/ECharts â ã¬ã¹ãã³ã·ãã§ã€ã³ã¿ã©ã¯ãã£ãã
- ãããã€: Docker Compose ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ã
ðŠ å¯Ÿå¿ååŒæ & ãªããŒã
QuantDingerã¯ãäœé å»¶å®è¡ã®ããã«äž»èŠãªæå·è³ç£ååŒæãžã® çŽæ¥æ¥ç¶ ããµããŒãããåºç¯ãªåžå ŽããŒã¿ã«ãã¬ããžã®ããã« CCXT ã䜿çšããŸãã
ð¡ éå®ç¹å ž: 以äžã®ããŒãããŒãªã³ã¯ããã¢ã«ãŠã³ããäœæãããšãååŒææ°æã®å²åŒ ã éå®ããŒãã¹ ãåãåãããšãã§ããŸããããã¯ã远å è²»çšãªãã§ãããžã§ã¯ããæ¯æŽããããšã«ã€ãªãããŸãïŒ
ãã®ä»ãµããŒã (Direct/CCXT):
å€èšèªãµããŒã
QuantDingerã¯ãå æ¬çãªåœéå察å¿ã«ãããäžçäžã®ãŠãŒã¶ãŒåãã«æ§ç¯ãããŠããŸãã
å šãŠã®UIèŠçŽ ããšã©ãŒã¡ãã»ãŒãžãããã¥ã¡ã³ãã¯å®å šã«ç¿»èš³ãããŠããŸããèšèªã¯ãã©ãŠã¶ã®èšå®ã«åºã¥ããŠèªåæ€åºãããŸãããã¢ããªå ã§æåã§åãæ¿ããããšãå¯èœã§ãã
察å¿åžå Ž
| åžå Žã¿ã€ã | ããŒã¿ãœãŒã¹ | ååŒ |
|---|---|---|
| æå·è³ç£ | Binance, OKX, Bitget, + 100 ååŒæ | â å®å šãµããŒã |
| ç±³åœæ ª | Yahoo Finance, Finnhub, Tiingo | â ãããŒã«ãŒAPIçµç± |
| äžåœ/éŠæž¯æ ª | AkShare, East Money | â¡ ããŒã¿ã®ã¿ |
| FX | Finnhub, OANDA | â ãããŒã«ãŒAPIçµç± |
| å ç© | ååŒæAPI, AkShare | â¡ ããŒã¿ã®ã¿ |
ã¢ãŒããã¯ã㣠(çŸåšã®ãªããžããª)
âââââââââââââââââââââââââââââââ
â quantdinger_vue â
â (Vue 2 + Ant Design Vue) â
ââââââââââââââââ¬âââââââââââââââ
â HTTP (/api/*)
âŒ
âââââââââââââââââââââââââââââââ
â backend_api_python â
â (Flask + æŠç¥ã©ã³ã¿ã€ã ) â
ââââââââââââââââ¬âââââââââââââââ
â
ââ SQLite (quantdinger.db)
ââ Redis (ãªãã·ã§ã³ ãã£ãã·ã¥)
ââ ããŒã¿ãããã€ã㌠/ LLMs / ååŒæ
ãªããžããªæ§é
.
ââ 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
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)
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 ã³ãã³ããªãã¡ã¬ã³ã¹
# å®è¡ç¶æ
ã®è¡šç€º
docker-compose ps
# ãã°ã®è¡šç€º
docker-compose logs -f
# ãµãŒãã¹ã®åæ¢
docker-compose down
# 忢ããŠããªã¥ãŒã ãåé€ (èŠå: ããŒã¿ããŒã¹ãåé€ãããŸãïŒ)
docker-compose down -v
ããŒã¿ã®æ°žç¶å
以äžã®ããŒã¿ã¯ãã¹ãã«ããŠã³ããããã³ã³ããã®åèµ·ååŸãä¿æãããŸãïŒ
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)
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)
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
ð€ ã³ãã¥ããã£ãšãµããŒã
æŠç¥ã®å ±æãæè¡ãµããŒãã®ããã«ãã°ããŒãã«ã³ãã¥ããã£ã«åå ããŸãããïŒ
- ð è²¢ç®ãããã§ããïŒ: è²¢ç®è ããã°ã©ã ã«åå - æ©æè²¢ç®è ã¯QDTã¬ããã³ã¹ããŒã¯ã³ãåãåããŸãïŒ
- Telegram (Group): Join QuantDinger Telegram Group
- Discord: ãµãŒããŒã«åå
- ðº åç»ãã¢: ãããžã§ã¯ã玹ä»åç»ãèŠã
- YouTube: @quantdinger
- Email: brokermr810@gmail.com
- GitHub Issues: ãã°å ±å / æ©èœãªã¯ãšã¹ã
â ãããžã§ã¯ããæ¯æŽãã
ããQuantDingerãããªãã®å©çã«è²¢ç®ãããªããéçºè ã«ã³ãŒããŒãäžæ¯å¥¢ãããšãæ€èšããŠãã ãããããªãã®æ¯æŽããããžã§ã¯ããåç¶ãããŸãïŒ
ERC-20 / BEP-20 / Polygon / Arbitrum
0x96fa4962181bea077f8c7240efe46afbe73641a7
åçšãµãŒãã¹
QuantDingerãæå€§éã«æŽ»çšããããã®ãããã§ãã·ã§ãã«ãµãŒãã¹ãæäŸããŠããŸãïŒ
| ãµãŒãã¹ | 説æ |
|---|---|
| ããã〠& ã»ããã¢ãã | ãµãŒããŒã®ãããã€ãèšå®ãæé©åã«é¢ãããã³ããŒãã³ã®ãµããŒã |
| ã«ã¹ã¿ã æŠç¥éçº | ç¹å®ã®ããŒãºãåžå Žã«åãããŠèšèšãããååŒæŠç¥ã®éçº |
| ãšã³ã¿ãŒãã©ã€ãºã¢ããã°ã¬ãŒã | åçšã©ã€ã»ã³ã¹ãåªå ãµããŒããããžãã¹åãã®é«åºŠãªæ©èœ |
| ãã¬ãŒãã³ã° & ã³ã³ãµã«ãã£ã³ã° | ååŒããŒã åãã®å®è·µçãªãã¬ãŒãã³ã°ã»ãã·ã§ã³ãšæŠç¥ã³ã³ãµã«ãã£ã³ã° |
ãèå³ããããŸããïŒ ä»¥äžãããåãåãããã ããïŒ
- ð§ Email: brokermr810@gmail.com
- ð¬ Telegram: QuantDinger Group
è¬èŸ
QuantDingerã¯ãFlask, Pandas, CCXT, Vue.js, Ant Design Vue, KlineChartsãªã©ã®çŽ æŽããããªãŒãã³ãœãŒã¹ãããžã§ã¯ãã®äžã«æãç«ã£ãŠããŸãã
ãã¹ãŠã®ã¡ã³ãããšã³ã³ããªãã¥ãŒã¿ãŒã«æè¬ããŸãïŒ â€ïž



