[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-72139":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":47,"readmeContent":48,"aiSummary":49,"trendingCount":16,"starSnapshotCount":16,"syncStatus":50,"lastSyncTime":51,"discoverSource":52},72139,"QuantDinger","brokermr810\u002FQuantDinger","brokermr810","AI quantitative trading platform for crypto, stocks, and forex with backtesting, live trading, market data, and multi-agent research.vibe-trading ,trading-agents,ai-trader,ai-trading","https:\u002F\u002Fwww.quantdinger.com",null,"Python",7727,1670,55,6,0,385,692,1409,1155,40.67,"Apache License 2.0",false,"main",true,[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"ai-trade","ai-trading-algorithm","algorithmic-trading-portfolio","algotrade","backtesting-frameworks","cryptocurrencies","cryptocurrency-analyser","financial-analysis","forex-trading","ibkr","live-trading","multi-agents","multi-exchange-trading","open-source-trading-platform","quant","quantitative-finance","quantitative-trading","stock-trading","trade","trading-platform","2026-06-12 02:02:59","\u003Cdiv align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbrokermr810\u002FQuantDinger\">\n    \u003Cimg src=\"docs\u002Fscreenshots\u002Flogo.jpg\" alt=\"QuantDinger Logo\" width=\"220\" height=\"220\">\n  \u003C\u002Fa>\n\n  \u003Ch1>QuantDinger\u003C\u002Fh1>\n  \u003Ch3>Your Private AI Quant Operating System\u003C\u002Fh3>\n  \u003Cp>\u003Cstrong>One deployable stack for charting, AI market research, Python indicators &amp; strategies, backtests, and live execution—on your own servers and your own keys.\u003C\u002Fstrong>\u003C\u002Fp>\n  \u003Cp>\u003Cem>Self-hosted quantitative platform: from idea and AI-assisted coding to paper-style workflows and exchange-connected live trading, with optional multi-user and billing primitives for operators.\u003C\u002Fem>\u003C\u002Fp>\n\n  \u003Cdiv align=\"center\" style=\"max-width: 680px; margin: 1.25rem auto 0; padding: 20px 22px 22px; border: 1px solid #d1d9e0; border-radius: 16px;\">\n    \u003Cp style=\"margin: 0 0 14px; line-height: 1.65;\">\n      \u003Ca href=\"README.md\">\u003Cstrong>English\u003C\u002Fstrong>\u003C\u002Fa>\n      \u003Cspan style=\"color: #afb8c1;\"> · \u003C\u002Fspan>\n      \u003Ca href=\"docs\u002FREADME_CN.md\">\u003Cstrong>简体中文\u003C\u002Fstrong>\u003C\u002Fa>\n      \u003Cspan style=\"color: #afb8c1;\"> · \u003C\u002Fspan>\n      \u003Ca href=\"docs\u002FREADME_JA.md\">\u003Cstrong>日本語\u003C\u002Fstrong>\u003C\u002Fa>\n      \u003Cspan style=\"color: #afb8c1;\"> · \u003C\u002Fspan>\n      \u003Ca href=\"docs\u002FREADME_KO.md\">\u003Cstrong>한국어\u003C\u002Fstrong>\u003C\u002Fa>\n      \u003Cspan style=\"color: #afb8c1;\"> · \u003C\u002Fspan>\n      \u003Ca href=\"docs\u002FREADME_TH.md\">\u003Cstrong>ไทย\u003C\u002Fstrong>\u003C\u002Fa>\n      \u003Cspan style=\"color: #afb8c1;\"> · \u003C\u002Fspan>\n      \u003Ca href=\"docs\u002FREADME_VI.md\">\u003Cstrong>Tiếng Việt\u003C\u002Fstrong>\u003C\u002Fa>\n      \u003Cspan style=\"color: #afb8c1;\"> · \u003C\u002Fspan>\n      \u003Ca href=\"docs\u002FREADME_AR.md\">\u003Cstrong>العربية\u003C\u002Fstrong>\u003C\u002Fa>\n    \u003C\u002Fp>\n    \u003Cp style=\"margin: 0 0 18px; padding-bottom: 16px; border-bottom: 1px solid #eaeef2; line-height: 2;\">\n      \u003Ca href=\"https:\u002F\u002Fai.quantdinger.com\">\u003Cstrong>SaaS\u003C\u002Fstrong>\u003C\u002Fa>\n      \u003Cspan style=\"color: #d8dee4;\"> &nbsp;·&nbsp; \u003C\u002Fspan>\n      \u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=tNAZ9uMiUUw\">\u003Cstrong>Video Demo\u003C\u002Fstrong>\u003C\u002Fa>\n      \u003Cspan style=\"color: #d8dee4;\"> &nbsp;·&nbsp; \u003C\u002Fspan>\n      \u003Ca href=\"https:\u002F\u002Fwww.quantdinger.com\">\u003Cstrong>Website\u003C\u002Fstrong>\u003C\u002Fa>\n      \u003Cspan style=\"color: #d8dee4;\"> &nbsp;·&nbsp; \u003C\u002Fspan>\n      \u003Ca href=\"https:\u002F\u002Faws.amazon.com\u002Fmarketplace\u002Fpp\u002Fprodview-naanrb7d2mbc6\">\u003Cstrong>AWS Marketplace\u003C\u002Fstrong>\u003C\u002Fa>\n    \u003C\u002Fp>\n    \u003Cp style=\"margin: 0; line-height: 2;\">\n      \u003Ca href=\"https:\u002F\u002Ft.me\u002Fquantdinger\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTelegram-Join-26A5E4?style=flat-square&logo=telegram&logoColor=white\" alt=\"Telegram\">\u003C\u002Fa>\n      &nbsp;\n      \u003Ca href=\"https:\u002F\u002Fdiscord.com\u002Finvite\u002Ftyx5B6TChr\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-Server-5865F2?style=flat-square&logo=discord&logoColor=white\" alt=\"Discord\">\u003C\u002Fa>\n      &nbsp;\n      \u003Ca href=\"https:\u002F\u002Fyoutube.com\u002F@quantdinger\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FYouTube-%40quantdinger-FF0000?style=flat-square&logo=youtube&logoColor=white\" alt=\"YouTube\">\u003C\u002Fa>\n      &nbsp;\n      \u003Ca href=\"https:\u002F\u002Fx.com\u002FQuantDinger_EN\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FX-%40QuantDinger_EN-000000?style=flat-square&logo=x&logoColor=white\" alt=\"X\">\u003C\u002Fa>\n    \u003C\u002Fp>\n  \u003C\u002Fdiv>\n\n  \u003Cp style=\"margin-top: 1.45rem; margin-bottom: 10px;\">\n    \u003Ca href=\"LICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache%202.0-blue.svg?style=flat-square&logo=apache\" alt=\"License\">\u003C\u002Fa>\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FVersion-3.0.10-orange?style=flat-square\" alt=\"Version\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.10%2B%20%7C%20Docker%20image%203.12-3776AB?style=flat-square&logo=python&logoColor=white\" alt=\"Python\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocker-Compose%20Ready-2496ED?style=flat-square&logo=docker&logoColor=white\" alt=\"Docker\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFrontend-Prebuilt-1f8b4c?style=flat-square\" alt=\"Frontend\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fbrokermr810\u002FQuantDinger?style=flat-square&logo=github\" alt=\"Stars\">\n  \u003C\u002Fp>\n  \u003Cp style=\"margin: 10px 0 12px;\">\n    \u003Ca href=\"https:\u002F\u002Faws.amazon.com\u002Fmarketplace\u002Fpp\u002Fprodview-naanrb7d2mbc6\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAWS%20Marketplace-AMI%20%7C%20CentOS%209-232F3E?style=flat-square&logo=amazonaws&logoColor=white\" alt=\"QuantDinger on AWS Marketplace (ThinkCloud AMI)\">\u003C\u002Fa>\n  \u003C\u002Fp>\n  \u003Cp style=\"margin: 12px 0 10px;\">\n    \u003Ca href=\"https:\u002F\u002Foosmetrics.com\u002Frepo\u002Fbrokermr810\u002FQuantDinger\">\u003Cimg src=\"https:\u002F\u002Fapi.oosmetrics.com\u002Fapi\u002Fv1\u002Fbadge\u002Fachievement\u002F4991ab54-52d2-46d4-a03a-67b47b61ae4b.svg\" alt=\"oosmetrics — Top 7 in Training by acceleration (2026-04-25)\">\u003C\u002Fa>\n  \u003C\u002Fp>\n  \u003Cp style=\"margin-top: 14px;\">\n    \u003Ca href=\"https:\u002F\u002Fwww.producthunt.com\u002Fproducts\u002Fquantdinger\u002Flaunches\u002Fquantdinger?embed=true&amp;utm_source=badge-featured&amp;utm_medium=badge&amp;utm_campaign=badge-quantdinger\" target=\"_blank\" rel=\"noopener noreferrer\">\u003Cimg alt=\"QuantDinger - A local-first, open-source AI quant trading workspace | Product Hunt\" width=\"250\" height=\"54\" src=\"https:\u002F\u002Fapi.producthunt.com\u002Fwidgets\u002Fembed-image\u002Fv1\u002Ffeatured.svg?post_id=1057439&amp;theme=light&amp;t=1777556016131\">\u003C\u002Fa>\n  \u003C\u002Fp>\n\u003C\u002Fdiv>\n\n---\n\n## Contents\n\n[Quick start](#try-in-2-minutes) · [Repositories](#related-repositories) · [AI agents & MCP](#use-it-from-an-ai-agent-cursor--claude-code--codex--mcp) · [Overview](#product-overview) · [Features](#features-at-a-glance) · [Visual tour](#visual-tour) · [Architecture](#architecture) · [Install](#installation--first-time-setup-docker-compose) · [Docs](#documentation) · [FAQ](#faq) · [License](#license-and-commercial-terms)\n\n---\n\n> QuantDinger is a **self-hosted, local-first** quantitative platform: **AI-assisted research**, **Python-native strategies**, **backtesting**, and **live trading** (crypto, IBKR stocks, MT5 forex, Alpaca US stocks\u002FETFs\u002Fcrypto) in one product—not a loose collection of scripts and SaaS tabs.\n\n\u003Cdiv align=\"center\">\n  \u003Cimg src=\"docs\u002Fscreenshots\u002Farchitecture.png\" alt=\"QuantDinger system architecture: Data Sources → Indicator \u002F Signal \u002F Strategy \u002F Backtesting \u002F AI Analysis layers → Execution, with the closed-loop quant workflow (Idea → Indicator → Strategy → Backtest → Optimize → Execute → Monitor)\" width=\"960\">\n  \u003Cp>\u003Csub>\u003Cem>End-to-end architecture: market data feeds the five-layer engine and exits to live execution, closing the quant loop from idea to monitoring.\u003C\u002Fem>\u003C\u002Fsub>\u003C\u002Fp>\n\u003C\u002Fdiv>\n\n## Try in 2 minutes\n\n> **Lightest path: pull images, start the stack — no `npm`, no Vue source folder, and no `docker compose up --build`.** The UI comes from GHCR (`quantdinger-frontend:3.0.10` by default); only the backend is built locally on first boot.\n\n**Prerequisites:** [Docker](https:\u002F\u002Fdocs.docker.com\u002Fget-docker\u002F) with Compose v2 (Docker Desktop on Windows\u002FmacOS). **Git** for the standard path below. **Node.js is not required.**\n\n### Lightest: two files only (no `git clone`)\n\nIf you only need a running stack and can reach GHCR + Docker Hub (or a mirror):\n\n```bash\ncurl -O https:\u002F\u002Fraw.githubusercontent.com\u002Fbrokermr810\u002FQuantDinger\u002Fmain\u002Fdocker-compose.ghcr.yml\ncurl -o backend.env https:\u002F\u002Fraw.githubusercontent.com\u002Fbrokermr810\u002FQuantDinger\u002Fmain\u002Fbackend_api_python\u002Fenv.example\ndocker compose -f docker-compose.ghcr.yml pull\ndocker compose -f docker-compose.ghcr.yml up -d\n```\n\n`SECRET_KEY` is auto-generated on first backend start. Open **`http:\u002F\u002Flocalhost:8888`**.\n\n### Standard: clone this repo (recommended for config & docs)\n\n**macOS \u002F Linux (Bash) — one line**\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fbrokermr810\u002FQuantDinger.git && cd QuantDinger && cp backend_api_python\u002Fenv.example backend_api_python\u002F.env && chmod +x scripts\u002Fgenerate-secret-key.sh && .\u002Fscripts\u002Fgenerate-secret-key.sh && docker compose pull && docker compose up -d\n```\n\n**Windows (PowerShell)** — folder name after clone is **`QuantDinger`** (same spelling as the GitHub repo; `cd quantdinger` also works on Windows when case-insensitive):\n\n```powershell\ngit clone https:\u002F\u002Fgithub.com\u002Fbrokermr810\u002FQuantDinger.git\nSet-Location QuantDinger\nCopy-Item backend_api_python\\env.example -Destination backend_api_python\\.env\n$key = & python -c \"import secrets; print(secrets.token_hex(32))\" 2>$null\nif (-not $key) { $key = & py -c \"import secrets; print(secrets.token_hex(32))\" 2>$null }\nif (-not $key) { $key = & python3 -c \"import secrets; print(secrets.token_hex(32))\" 2>$null }\nif (-not $key) { Write-Error \"Install Python 3 from python.org (tick 'Add to PATH') or use Git Bash with the Bash one-liner above.\" }\n(Get-Content backend_api_python\\.env) -replace '^SECRET_KEY=.*$', \"SECRET_KEY=$key\" | Set-Content backend_api_python\\.env -Encoding utf8\ndocker compose pull\ndocker compose up -d\n```\n\nUse **`docker compose`** (space). Legacy **`docker-compose`** (hyphen) works on many installs. **Git Bash** can run the Bash one-liner as-is.\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Do not use \u003Ccode>docker compose up --build\u003C\u002Fcode> for a normal install\u003C\u002Fb>\u003C\u002Fsummary>\n\n`--build` forces a **frontend** build from `.\u002FQuantDinger-Vue\u002F`. That directory is **not** shipped in this repo — you will see `QuantDinger-Vue not found` or extra pulls for `node:18-alpine`.\n\n| Goal | Command |\n|------|---------|\n| First-time \u002F routine start | `docker compose pull` then `docker compose up -d` |\n| Rebuild **backend** only after code changes | `docker compose up -d --build backend` |\n| Hack on Vue UI from source | Clone [QuantDinger-Vue](https:\u002F\u002Fgithub.com\u002Fbrokermr810\u002FQuantDinger-Vue) into `.\u002FQuantDinger-Vue\u002F`, then `docker compose up -d --build` |\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Slow or failed \u003Ccode>docker pull\u003C\u002Fcode> (China \u002F VPN)\u003C\u002Fb>\u003C\u002Fsummary>\n\nSystem VPN often **does not** proxy Docker Desktop. Either configure **Docker Desktop → Settings → Proxies** (e.g. `http:\u002F\u002F127.0.0.1:7890` for Clash), or add to a **repository-root** `.env`:\n\n```ini\nIMAGE_PREFIX=docker.m.daocloud.io\u002Flibrary\u002F\n```\n\nThen run `docker compose pull` again. Errors like `content size of zero` or `connectex` on `registry-1.docker.io` are registry\u002Fnetwork issues, not application bugs.\n\n\u003C\u002Fdetails>\n\n---\n\nThen open **`http:\u002F\u002Flocalhost:8888`**, sign in with **`quantdinger` \u002F `123456`**, and **change the default admin password** before any real use.\n\nFor step-by-step detail and troubleshooting, see **[Installation & first-time setup](#installation--first-time-setup-docker-compose)**.\n\n## Related repositories\n\nThis repo ships the **backend**, **Docker Compose** stack, and **documentation**. The web UI image is published independently to GHCR by the sibling Vue repo. Use the sibling repos when you need source-level UI changes or the mobile app:\n\n| Repository | What it is |\n|------------|------------|\n| **[QuantDinger](https:\u002F\u002Fgithub.com\u002Fbrokermr810\u002FQuantDinger)** (this repo) | Backend (Flask\u002FPython), Compose stack, docs |\n| **[QuantDinger-Vue](https:\u002F\u002Fgithub.com\u002Fbrokermr810\u002FQuantDinger-Vue)** | **Web frontend source** (Vue) — tagging `v*` publishes `ghcr.io\u002Fbrokermr810\u002Fquantdinger-frontend` automatically |\n| **[QuantDinger-Mobile](https:\u002F\u002Fgithub.com\u002Fbrokermr810\u002FQuantDinger-Mobile)** | **Open-source mobile client** — pairs with your self-hosted or SaaS backend |\n\n**Note:** Node.js is only required if you build the web UI from **QuantDinger-Vue**; the default Docker quick start pulls the published image and does not need it.\n\n## Use it from an AI agent (Cursor \u002F Claude Code \u002F Codex \u002F MCP)\n\nQuantDinger ships an **Agent Gateway** at `\u002Fapi\u002Fagent\u002Fv1` plus a small **MCP server** ([`quantdinger-mcp`](https:\u002F\u002Fpypi.org\u002Fproject\u002Fquantdinger-mcp\u002F) on PyPI) that wraps it as Model Context Protocol tools. Issue a token once and your AI client can read markets, manage strategies, run backtests, and (paper-only by default) place trades — without ever seeing your exchange keys or your admin JWT.\n\n> Every agent call is **audit-logged**, and trading-class tokens are **paper-only by default**. Live execution requires both `paper_only=false` on the token AND `AGENT_LIVE_TRADING_ENABLED=true` on the server.\n\n**Two backends, same client config — only `QUANTDINGER_BASE_URL` differs:**\n\n- **Hosted (30 s try-out)** — sign up at [ai.quantdinger.com](https:\u002F\u002Fai.quantdinger.com) → **Sidebar → Agent Tokens** → Issue Token. Locked to `paper_only=true`, no real-money orders.\n- **Self-hosted (this repo)** — after the [Try in 2 minutes](#try-in-2-minutes) Docker bring-up, open `http:\u002F\u002Flocalhost:8888\u002F#\u002Fagent-tokens`. You control scopes, allowlists, rate limits, and live-trading flag.\n\nThen point Cursor \u002F Claude Code \u002F Codex at the MCP server (`.cursor\u002Fmcp.json` template: [`docs\u002Fagent\u002Fcursor-mcp.example.json`](docs\u002Fagent\u002Fcursor-mcp.example.json)):\n\n```json\n{ \"mcpServers\": { \"quantdinger\": {\n  \"command\": \"uvx\", \"args\": [\"quantdinger-mcp\"],\n  \"env\": { \"QUANTDINGER_BASE_URL\": \"http:\u002F\u002Flocalhost:8888\",\n           \"QUANTDINGER_AGENT_TOKEN\": \"qd_agent_xxxxxxxx\" }\n} } }\n```\n\n**Full setup recipe** — local stdio config, remote HTTP transport, Claude Code CLI helper, example agent prompts, audit-log walkthrough: **[`docs\u002Fagent\u002FMCP_SETUP.md`](docs\u002Fagent\u002FMCP_SETUP.md)**.\n\nDeeper references: [AI Integration design](docs\u002Fagent\u002FAI_INTEGRATION_DESIGN.md) · [Quickstart with `curl`](docs\u002Fagent\u002FAGENT_QUICKSTART.md) · [OpenAPI 3.0 spec](docs\u002Fagent\u002Fagent-openapi.json) · [MCP server README](mcp_server\u002FREADME.md)\n\n## Product overview\n\nQuantDinger is a **self-hosted** quantitative OS: **AI-assisted research**, **Python-native strategies** (`IndicatorStrategy` + `ScriptStrategy`), **backtesting**, and **live trading** (crypto, IBKR, MT5, Alpaca)—with optional multi-user roles, notifications, credits, and USDT billing. It replaces a patchwork of charts, notebooks, bots, and disconnected LLM chats with **one Compose stack** and **your** credentials in Postgres + `.env`.\n\n| Typical DIY stack | QuantDinger |\n|-------------------|-------------|\n| Chat AI separate from execution | Analysis, NL→code, backtests, and execution in one product |\n| Many tools wired by hand | Nginx + Vue UI, Flask API, workers, exchange\u002FLLM adapters |\n| Opaque SaaS keys | Your infra, your exchange keys, your LLM keys |\n\n**Audience:** traders and quants, Python strategy authors, small teams building internal or commercial trading products.\n\n## Visual Tour\n\n\u003Ctable align=\"center\" width=\"100%\">\n  \u003Ctr>\n    \u003Ctd colspan=\"2\" align=\"center\">\n      \u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=wHIvvv6fmHA\">\n        \u003Cimg src=\"docs\u002Fscreenshots\u002Fvideo_demo.png\" alt=\"Video Demo\" width=\"80%\" style=\"border-radius: 12px;\">\n      \u003C\u002Fa>\n      \u003Cbr\u002F>\n      \u003Csub>\n        \u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=wHIvvv6fmHA\">\n          \u003Cstrong>▶ Watch Product Demo on YouTube\u003C\u002Fstrong>\n        \u003C\u002Fa>\n      \u003C\u002Fsub>\n      \u003Cbr\u002F>\n      \u003Csub>Click the preview card above to open the full video walkthrough.\u003C\u002Fsub>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd width=\"50%\" align=\"center\">\u003Cimg src=\"docs\u002Fscreenshots\u002Fv31.png\" alt=\"Indicator IDE\" style=\"border-radius: 6px;\">\u003Cbr\u002F>\u003Csub>Indicator IDE, charting, backtest, and quick trade\u003C\u002Fsub>\u003C\u002Ftd>\n    \u003Ctd width=\"50%\" align=\"center\">\u003Cimg src=\"docs\u002Fscreenshots\u002Fv32.png\" alt=\"AI Asset Analysis\" style=\"border-radius: 6px;\">\u003Cbr\u002F>\u003Csub>AI asset analysis and opportunity radar\u003C\u002Fsub>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd align=\"center\">\u003Cimg src=\"docs\u002Fscreenshots\u002Fv33.png\" alt=\"Trading Bots\" style=\"border-radius: 6px;\">\u003Cbr\u002F>\u003Csub>Trading bot workspace and automation templates\u003C\u002Fsub>\u003C\u002Ftd>\n    \u003Ctd align=\"center\">\u003Cimg src=\"docs\u002Fscreenshots\u002Fv34.png\" alt=\"Strategy Live\" style=\"border-radius: 6px;\">\u003Cbr\u002F>\u003Csub>Strategy live operations, performance, and monitoring\u003C\u002Fsub>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## Features at a glance\n\n- **Research & AI** — Multi-LLM analysis, watchlists, analysis history; optional ensemble\u002Fcalibration; NL→indicator\u002Fstrategy; post-backtest AI hints. **[Agent Gateway + MCP](#use-it-from-an-ai-agent-cursor--claude-code--codex--mcp)** for Cursor \u002F Claude Code \u002F Codex.\n- **Build** — `IndicatorStrategy` (dataframe signals, chart overlays) and `ScriptStrategy` (`on_bar`, explicit orders); professional chart UI.\n- **Validate** — Server-side backtests, metrics, equity curves, strategy snapshots.\n- **Operate** — Crypto execution, quick trade, IBKR \u002F MT5 \u002F Alpaca (US stocks, ETFs, crypto), notifications (Telegram, email, SMS, Discord, webhooks). **Unified Broker Accounts page** centralises connection, account KPIs, positions and open-order management across all brokers.\n- **Platform** — Docker Compose, Postgres, Redis, OAuth, multi-user patterns, credits \u002F membership \u002F USDT billing toggles.\n\n## Architecture\n\n**Stack:** Nginx serves the prebuilt Vue app (published as `ghcr.io\u002Fbrokermr810\u002Fquantdinger-frontend`); **Flask** API runs strategy\u002FAI\u002Fbilling services; **PostgreSQL** holds state; **Redis** backs workers. Exchanges, brokers, LLMs, and payments plug in through env-driven adapters. Crypto **market data** and **order execution** paths are separated by design.\n\n**Runtime (short):** data feeds → backtest\u002Fstrategy engine → live runtime → exchange adapters; pending orders dispatched per venue.\n\n### System diagram\n\n```mermaid\nflowchart LR\n    U[Trader \u002F Operator \u002F Researcher]\n\n    subgraph FE[Frontend Layer]\n        WEB[Vue Web App]\n        NG[Nginx Delivery]\n    end\n\n    subgraph BE[Application Layer]\n        API[Flask API Gateway]\n        AI[AI Analysis Services]\n        STRAT[Strategy and Backtest Engine]\n        EXEC[Execution and Quick Trade]\n        BILL[Billing and Membership]\n    end\n\n    subgraph DATA[State Layer]\n        PG[(PostgreSQL 16)]\n        REDIS[(Redis 7)]\n        FILES[Logs and Runtime Data]\n    end\n\n    subgraph EXT[External Integrations]\n        LLM[LLM Providers]\n        EXCH[Crypto Exchanges]\n        BROKER[IBKR \u002F MT5 \u002F Alpaca]\n        MARKET[Market Data \u002F News]\n        PAY[TronGrid \u002F USDT Payment]\n        NOTIFY[Telegram \u002F Email \u002F SMS \u002F Webhook]\n    end\n\n    U --> WEB\n    WEB --> NG --> API\n    API --> AI\n    API --> STRAT\n    API --> EXEC\n    API --> BILL\n\n    AI --> PG\n    STRAT --> PG\n    EXEC --> PG\n    BILL --> PG\n    API --> REDIS\n    API --> FILES\n\n    AI --> LLM\n    AI --> MARKET\n    EXEC --> EXCH\n    EXEC --> BROKER\n    BILL --> PAY\n    API --> NOTIFY\n```\n\n## Installation & first-time setup (Docker Compose)\n\n> **Already ran [Try in 2 minutes](#try-in-2-minutes)?** Skip this section — it's the same outcome, just expanded into a step-by-step checklist for first-time deployers and operations folks who want to understand every knob.\n\nThis section mirrors a typical “local deploy” path: **prepare the host → obtain the code → configure secrets → start the stack → verify → harden → optionally wire AI**. Node.js is **not** required: the `frontend` service pulls `ghcr.io\u002Fbrokermr810\u002Fquantdinger-frontend` directly, so Nginx serves the SPA without any local build step.\n\n### Prerequisites\n\n| Item | Notes |\n|------|--------|\n| [Docker](https:\u002F\u002Fdocs.docker.com\u002Fget-docker\u002F) + Docker Compose v2 | Used for Postgres, Redis, API, and static UI. |\n| `git` | To clone this repository. |\n| Ports (defaults) | `8888` (web), `5000` (API, bound to **127.0.0.1**), `5432` \u002F `6379` (DB\u002FRedis, loopback by default). Change via root `.env` if they collide. |\n| Disk | Postgres volume grows with users, strategies, and logs; plan a few GB minimum for serious use. |\n\n### 1) Clone the repository\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fbrokermr810\u002FQuantDinger.git\ncd QuantDinger\n```\n\n### 2) Create backend configuration (mandatory)\n\n```bash\ncp backend_api_python\u002Fenv.example backend_api_python\u002F.env\n```\n\nAlmost all runtime behavior is driven by **`backend_api_python\u002F.env`** (database URL, admin user, LLM keys, workers, billing toggles, etc.). The optional **repository root** `.env` only adjusts Compose-level concerns such as **ports** and **image mirrors** (`IMAGE_PREFIX`).\n\n### 3) Set `SECRET_KEY` before the first boot (mandatory)\n\nThe API **refuses to start** if `SECRET_KEY` is still the placeholder from `env.example`. This blocks accidental insecure deployments.\n\n**Linux \u002F macOS** (recommended):\n\n```bash\n.\u002Fscripts\u002Fgenerate-secret-key.sh\n```\n\nThe script overwrites the `SECRET_KEY=` line in `backend_api_python\u002F.env` using Python’s `secrets` module.\n\n**Manual** (any OS): generate a long random string (for example 64 hex chars) and set `SECRET_KEY=...` in `backend_api_python\u002F.env`.\n\n### 4) Start the stack\n\n```bash\ndocker compose pull\ndocker compose up -d\n```\n\n- **`frontend`** — pulls `ghcr.io\u002Fbrokermr810\u002Fquantdinger-frontend:3.0.10` (no local Vue tree required).\n- **`backend`** — built from `.\u002Fbackend_api_python` on first start if no local image exists yet.\n- Do **not** run `docker compose up -d --build` unless you have cloned **QuantDinger-Vue** into `.\u002FQuantDinger-Vue\u002F` for UI development.\n\nServices: **`postgres`**, **`redis`**, **`backend`**, **`frontend`** (see `docker-compose.yml`).\n\n#### Alternative: zero-repo install from GHCR (lightest)\n\nPrebuilt multi-arch (amd64\u002Farm64) images for **both** backend and frontend — no `git clone`:\n\n```bash\ncurl -O https:\u002F\u002Fraw.githubusercontent.com\u002Fbrokermr810\u002FQuantDinger\u002Fmain\u002Fdocker-compose.ghcr.yml\ncurl -o backend.env https:\u002F\u002Fraw.githubusercontent.com\u002Fbrokermr810\u002FQuantDinger\u002Fmain\u002Fbackend_api_python\u002Fenv.example\ndocker compose -f docker-compose.ghcr.yml pull\ndocker compose -f docker-compose.ghcr.yml up -d\n```\n\nThe backend entrypoint auto-generates a random `SECRET_KEY` on first start and applies the schema (`migrations\u002Finit.sql`) idempotently. Edit `backend.env` for persistent overrides (API keys, OAuth, broker credentials). Compose orchestration knobs go in a separate `.env` (optional) — e.g. pin a version:\n\n```env\n# Common case: lockstep both sides to one tag\nIMAGE_TAG=3.0.10\n\n# Advanced (opt-in): decouple sides. Either var alone overrides only\n# that side; the other still follows IMAGE_TAG.\n# BACKEND_TAG=v3.0.9\n# FRONTEND_TAG=v3.1.0-rc1\n\n# BACKEND_IMAGE=ghcr.io\u002F\u003Cyour-fork>\u002Fquantdinger-backend     # optional, for forks\n# FRONTEND_IMAGE=ghcr.io\u002F\u003Cyour-fork>\u002Fquantdinger-frontend\n```\n\nTag resolution: `BACKEND_TAG` \u002F `FRONTEND_TAG` → `IMAGE_TAG` → compose defaults. Without a root `.env`, `docker-compose.yml` pulls `ghcr.io\u002Fbrokermr810\u002Fquantdinger-frontend:3.0.10` (bundled `frontend\u002Fdist` was removed); `docker-compose.ghcr.yml` defaults to backend `3.0.9` + frontend `3.0.10`.\n\n#### Alternative: build the frontend from Vue source\n\nIf you have access to the **QuantDinger-Vue** repo and want to iterate on UI source (theme tweaks, forks, debugging) instead of pulling the published image, clone it into the `.\u002FQuantDinger-Vue\u002F` slot at the repo root (gitignored) and let Compose build from there:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fbrokermr810\u002FQuantDinger-Vue.git QuantDinger-Vue\ndocker compose up -d --build      # frontend builds from .\u002FQuantDinger-Vue\n```\n\nWithout `--build` Compose pulls the GHCR image as usual — the `.\u002FQuantDinger-Vue\u002F` directory is referenced lazily and may not exist. Point `FRONTEND_SRC_PATH=\u002Fabs\u002Fpath\u002Fto\u002FQuantDinger-Vue` if you'd rather keep the source somewhere else. The locally built image is tagged the same way as the published one (`FRONTEND_TAG` \u002F `IMAGE_TAG` rules apply), so it slots into the rest of the stack with no further changes.\n\n### 5) Verify and sign in\n\n| Check | URL \u002F command |\n|--------|----------------|\n| Web UI | `http:\u002F\u002Flocalhost:8888` (override host\u002Fport with `FRONTEND_HOST` \u002F `FRONTEND_PORT` in root `.env` if needed). |\n| API health | `http:\u002F\u002Flocalhost:5000\u002Fapi\u002Fhealth` |\n| Logs | `docker-compose logs -f backend` |\n\nDefault admin (change immediately in production):\n\n- **User**: `quantdinger`\n- **Password**: `123456` (from `env.example`; override with `ADMIN_USER` \u002F `ADMIN_PASSWORD` in `.env` before first use if you prefer).\n\nAlso set **`FRONTEND_URL`** in `backend_api_python\u002F.env` to the URL users actually use (including `https:\u002F\u002F` behind a reverse proxy); it affects redirects, CORS-related settings, and some generated links.\n\n### 6) Optional: enable AI features\n\nAI analysis, NL→code, and related flows need at least one LLM provider configured. Open `backend_api_python\u002Fenv.example`, find the **AI \u002F LLM** block, copy the relevant keys into your `.env` (for example `LLM_PROVIDER` + `OPENROUTER_API_KEY`, or another supported provider). Restart the backend after edits.\n\n### 7) Windows notes\n\nUse **Docker Desktop** (WSL2 backend recommended). From PowerShell in the repo root:\n\n```powershell\ngit clone https:\u002F\u002Fgithub.com\u002Fbrokermr810\u002FQuantDinger.git\nSet-Location QuantDinger\nCopy-Item backend_api_python\\env.example -Destination backend_api_python\\.env\n$key = py -c \"import secrets; print(secrets.token_hex(32))\"\n(Get-Content backend_api_python\\.env) -replace '^SECRET_KEY=.*$', \"SECRET_KEY=$key\" | Set-Content backend_api_python\\.env -Encoding UTF8\ndocker compose pull\ndocker compose up -d\n```\n\nIf `py` is not on PATH, use `python` or `python3` in the one-liner that generates `$key`. Line endings should remain UTF-8; avoid editors that strip newlines from `.env`.\n\n### Troubleshooting (first boot)\n\n| Symptom | What to check |\n|---------|----------------|\n| `QuantDinger-Vue` not found | You used `--build` without cloning Vue source. Use `docker compose up -d` (no `--build`) or clone into `.\u002FQuantDinger-Vue\u002F` first. |\n| `redis` \u002F `python` \u002F `node` pull fails, `content size of zero` | Docker Hub unreachable from Docker Desktop. Set root `.env` `IMAGE_PREFIX=docker.m.daocloud.io\u002Flibrary\u002F` and\u002For configure **Docker Desktop → Proxies** (system VPN alone is often not enough). |\n| Backend exits immediately | `SECRET_KEY` still default, or invalid `.env` syntax. Read `docker compose logs backend`. |\n| Blank page or API errors from browser | `FRONTEND_URL` \u002F origins mismatch; API not reachable from the host you opened. |\n| Port already in use | Another Postgres, Redis, or local service on `5432` \u002F `6379` \u002F `5000` \u002F `8888`. Adjust variables in root `.env` per `docker-compose.yml`. |\n| Many live strategies, “start denied” | Raise `STRATEGY_MAX_THREADS` in `backend_api_python\u002F.env` and restart API (see comments in `env.example`). |\n\n### Common Docker commands\n\n```bash\ndocker compose ps\ndocker compose logs -f backend\ndocker compose restart backend\ndocker compose pull\ndocker compose up -d\ndocker compose up -d --build backend   # backend code changes only\ndocker compose down\n```\n\n### Optional root `.env` (Compose only)\n\nFor **custom ports** or **mirror\u002Fprefix** for base images (slow Docker Hub pulls), create a file named `.env` in the **repository root** (same directory as `docker-compose.yml`):\n\n```ini\nFRONTEND_PORT=3000\nBACKEND_PORT=127.0.0.1:5001\nIMAGE_PREFIX=docker.m.daocloud.io\u002Flibrary\u002F\n```\n\nProduction-style TLS, domain, and reverse-proxy placement are covered in **[Cloud deployment](docs\u002FCLOUD_DEPLOYMENT_EN.md)**.\n\n### Suggested first session (product walkthrough)\n\nAfter the stack is healthy: (1) run an **AI asset \u002F market analysis** so LLM and data paths are verified; (2) open the **Indicator IDE**, load a symbol, and run a **signal backtest** on a small date range; (3) optionally use **AI code generation** to draft an indicator, then edit the Python; (4) when ready, attach **exchange API keys** (profile \u002F credentials), use **test connection**, then explore **live strategy** or **quick trade** with execution mode you intend. This order surfaces configuration issues early before real capital.\n\n## Minimal Example: Python Indicator Strategy\n\nThis is the kind of Python-native strategy logic QuantDinger is designed for:\n\n```python\n# @param sma_short int 14 Short moving average\n# @param sma_long int 28 Long moving average\n\nsma_short_period = params.get('sma_short', 14)\nsma_long_period = params.get('sma_long', 28)\n\nmy_indicator_name = \"Dual Moving Average Strategy\"\nmy_indicator_description = f\"SMA {sma_short_period}\u002F{sma_long_period} crossover\"\n\ndf = df.copy()\nsma_short = df[\"close\"].rolling(sma_short_period).mean()\nsma_long = df[\"close\"].rolling(sma_long_period).mean()\n\nbuy = (sma_short > sma_long) & (sma_short.shift(1) \u003C= sma_long.shift(1))\nsell = (sma_short \u003C sma_long) & (sma_short.shift(1) >= sma_long.shift(1))\n\ndf[\"buy\"] = buy.fillna(False).astype(bool)\ndf[\"sell\"] = sell.fillna(False).astype(bool)\n```\n\nSee full examples:\n\n- [`docs\u002Fexamples\u002Fdual_ma_with_params.py`](docs\u002Fexamples\u002Fdual_ma_with_params.py)\n- [`docs\u002Fexamples\u002Fmulti_indicator_composite.py`](docs\u002Fexamples\u002Fmulti_indicator_composite.py)\n- [`docs\u002Fexamples\u002Fcross_sectional_momentum_rsi.py`](docs\u002Fexamples\u002Fcross_sectional_momentum_rsi.py)\n\n## Supported Markets, Brokers, and Exchanges\n\n### Crypto Exchanges\n\n| Venue | Coverage |\n|-------|----------|\n| Binance | Spot, Futures, Margin |\n| OKX | Spot, Perpetual, Options |\n| Bitget | Spot, Futures, Copy Trading |\n| Bybit | Spot, Linear Futures |\n| Coinbase | Spot |\n| Kraken | Spot, Futures |\n| KuCoin | Spot, Futures |\n| Gate.io | Spot, Futures |\n| Deepcoin | Derivatives integration |\n| HTX | Spot, USDT-margined perpetuals |\n\n### Traditional Markets\n\n| Market | Broker \u002F Source | Execution |\n|--------|------------------|-----------|\n| US Stocks | IBKR, Alpaca, Yahoo Finance, Finnhub | Via IBKR or Alpaca (paper + live) |\n| ETFs | Alpaca | Via Alpaca (paper + live) |\n| Forex | MT5, OANDA | Via MT5 |\n| Futures | Exchange and data integrations | Data and workflow support |\n\n> **Broker Accounts page (`\u002Fbroker-accounts`, v3.0.5+)** — IBKR, MT5 and Alpaca share a single unified management page: per-broker connect form, account KPIs, positions table and open-order management with one-click cancel. Multi-tenant safe: each user's session is isolated via `BrokerSessionRegistry`, so one user reconnecting doesn't kick everyone else off.\n\n## Strategy Development Modes\n\nQuantDinger supports two main strategy authoring models:\n\n### IndicatorStrategy\n\n- dataframe-based Python scripts\n- `buy` \u002F `sell` signal generation\n- chart rendering and signal-style backtests\n- best for research, indicator logic, and visual strategy prototyping\n\n### ScriptStrategy\n\n- event-driven `on_init(ctx)` \u002F `on_bar(ctx, bar)` scripts\n- explicit runtime control with `ctx.buy()`, `ctx.sell()`, `ctx.close_position()`\n- best for stateful strategies, execution-oriented logic, and live alignment\n\nFor the full developer workflow, see:\n\n- [Strategy Development Guide](docs\u002FSTRATEGY_DEV_GUIDE.md)\n- [Cross-Sectional Strategy Guide](docs\u002FCROSS_SECTIONAL_STRATEGY_GUIDE_EN.md)\n- [Strategy Examples](docs\u002Fexamples\u002F)\n\nThe example scripts live in `docs\u002Fexamples\u002F` and are kept aligned with the current strategy development guides.\n\n## Repository Layout\n\n```text\nQuantDinger\u002F\n├── backend_api_python\u002F      # Open backend source code\n│   ├── app\u002Froutes\u002F          # REST endpoints\n│   ├── app\u002Fservices\u002F        # AI, trading, billing, backtest, integrations\n│   ├── migrations\u002Finit.sql  # Database initialization\n│   ├── env.example          # Main environment template\n│   └── Dockerfile\n├── docs\u002F                    # Product, strategy, and deployment documentation\n├── docker-compose.yml       # Web UI via GHCR; optional .\u002FQuantDinger-Vue\u002F for local UI builds\n├── LICENSE\n└── TRADEMARKS.md\n```\n\n## Configuration Areas\n\nUse `backend_api_python\u002Fenv.example` as the primary template. Key areas include:\n\n| Area | Examples |\n|------|----------|\n| Authentication | `SECRET_KEY`, `ADMIN_USER`, `ADMIN_PASSWORD` |\n| Database | `DATABASE_URL` |\n| LLM \u002F AI | `LLM_PROVIDER`, `OPENROUTER_API_KEY`, `OPENAI_API_KEY` |\n| OAuth | `GOOGLE_CLIENT_ID`, `GITHUB_CLIENT_ID` |\n| Security | `TURNSTILE_SITE_KEY`, `ENABLE_REGISTRATION` |\n| Billing | `BILLING_ENABLED`, `BILLING_COST_AI_ANALYSIS` |\n| Membership | `MEMBERSHIP_MONTHLY_PRICE_USD`, `MEMBERSHIP_MONTHLY_CREDITS` |\n| USDT Payment | `USDT_PAY_ENABLED`, `USDT_TRC20_XPUB`, `TRONGRID_API_KEY` |\n| Optional data APIs | `TWELVE_DATA_API_KEY`, `FINNHUB_API_KEY`, `TIINGO_API_KEY`, `ADANOS_API_KEY` |\n| Proxy | `PROXY_URL` |\n| Workers | `ENABLE_PENDING_ORDER_WORKER`, `ENABLE_PORTFOLIO_MONITOR`, `ENABLE_REFLECTION_WORKER` |\n| AI tuning | `ENABLE_AI_ENSEMBLE`, `ENABLE_CONFIDENCE_CALIBRATION`, `AI_ENSEMBLE_MODELS` |\n\n## Documentation\n\n| Doc | Notes |\n|-----|--------|\n| [Changelog](docs\u002FCHANGELOG.md) | Releases & migrations |\n| [README (中文)](docs\u002FREADME_CN.md) | Chinese overview |\n| [JA](docs\u002FREADME_JA.md) · [KO](docs\u002FREADME_KO.md) · [TH](docs\u002FREADME_TH.md) · [VI](docs\u002FREADME_VI.md) · [AR](docs\u002FREADME_AR.md) | Concise localized READMEs (Japanese, Korean, Thai, Vietnamese, Arabic) |\n| [Cloud deployment](docs\u002FCLOUD_DEPLOYMENT_EN.md) | HTTPS, reverse proxy, production |\n| [Multi-user](docs\u002Fmulti-user-setup.md) | Postgres multi-tenant patterns |\n| [Agent environment](docs\u002Fagent\u002FAGENT_ENVIRONMENT_DESIGN.md) · [AI integration](docs\u002Fagent\u002FAI_INTEGRATION_DESIGN.md) · [Quickstart](docs\u002Fagent\u002FAGENT_QUICKSTART.md) · [OpenAPI](docs\u002Fagent\u002Fagent-openapi.json) · [MCP server](mcp_server\u002FREADME.md) | Coding agents & MCP (`quantdinger-mcp` on PyPI) |\n\n**Strategy:** [EN](docs\u002FSTRATEGY_DEV_GUIDE.md) · [CN](docs\u002FSTRATEGY_DEV_GUIDE_CN.md) · [TW](docs\u002FSTRATEGY_DEV_GUIDE_TW.md) · [JA](docs\u002FSTRATEGY_DEV_GUIDE_JA.md) · [KO](docs\u002FSTRATEGY_DEV_GUIDE_KO.md) · [Cross-sectional EN](docs\u002FCROSS_SECTIONAL_STRATEGY_GUIDE_EN.md) \u002F [CN](docs\u002FCROSS_SECTIONAL_STRATEGY_GUIDE_CN.md) · [Examples](docs\u002Fexamples\u002F)\n\n**Integrations & alerts:** [IBKR](docs\u002FIBKR_TRADING_GUIDE_EN.md) · [MT5 EN](docs\u002FMT5_TRADING_GUIDE_EN.md) \u002F [CN](docs\u002FMT5_TRADING_GUIDE_CN.md) · [OAuth EN](docs\u002FOAUTH_CONFIG_EN.md) \u002F [CN](docs\u002FOAUTH_CONFIG_CN.md) · Telegram \u002F Email \u002F SMS configs under [`docs\u002F`](docs\u002F) (`NOTIFICATION_*`).\n\n## FAQ\n\n### Is QuantDinger really self-hosted?\n\nYes. The default deployment model is your own Docker Compose stack with your own database, Redis instance, credentials, and environment configuration.\n\n### Is QuantDinger only for crypto trading?\n\nNo. Crypto is a major focus, but the platform also includes IBKR and Alpaca workflows for US stocks \u002F ETFs (Alpaca additionally covers crypto) and MT5 workflows for forex.\n\n### Can I write strategies directly in Python?\n\nYes. QuantDinger supports both dataframe-style `IndicatorStrategy` development and event-driven `ScriptStrategy` development. You can also use AI to generate a starting point and then edit it yourself.\n\n### Is this a research tool or a live trading platform?\n\nIt is both. QuantDinger is built to connect AI research, charting, strategy development, backtesting, quick trade flows, and live execution operations in one system.\n\n### Can I use QuantDinger commercially?\n\nThe backend is licensed under Apache 2.0. The **web** frontend source ([QuantDinger-Vue](https:\u002F\u002Fgithub.com\u002Fbrokermr810\u002FQuantDinger-Vue)) uses a separate source-available license—review both and contact the project for commercial frontend authorization if needed. The **[mobile app repo](https:\u002F\u002Fgithub.com\u002Fbrokermr810\u002FQuantDinger-Mobile)** is open source under its own license (see that repository).\n\n### Is there a mobile app?\n\nYes—see **[QuantDinger-Mobile](https:\u002F\u002Fgithub.com\u002Fbrokermr810\u002FQuantDinger-Mobile)** (open source). It connects to the same backend you self-host or to SaaS.\n\n## Exchange Partner Links\n\nThe following links are available in-app under **Profile -> Open account** and may qualify users for trading-fee rebates depending on venue policies.\n\n| Exchange | Signup Link |\n|----------|-------------|\n| Binance | [Register](https:\u002F\u002Fwww.bsmkweb.cc\u002Fregister?ref=QUANTDINGER) |\n| Bitget | [Register](https:\u002F\u002Fpartner.hdmune.cn\u002Fbg\u002F7r4xz8kd) |\n| Bybit | [Register](https:\u002F\u002Fpartner.bybit.com\u002Fb\u002FDINGER) |\n| OKX | [Register](https:\u002F\u002Fwww.xqmnobxky.com\u002Fjoin\u002FQUANTDINGER) |\n| Gate.io | [Register](https:\u002F\u002Fwww.gateport.company\u002Fshare\u002FDINGER) |\n| HTX | [Register](https:\u002F\u002Fwww.htx.com\u002Finvite\u002Fzh-cn\u002F1f?invite_code=dinger) |\n\n## License and Commercial Terms\n\n- Backend source code is licensed under **Apache License 2.0**. See `LICENSE`.\n- This repository distributes the frontend UI here as **prebuilt files** for integrated deployment.\n- The frontend source code is available separately at [QuantDinger Frontend](https:\u002F\u002Fgithub.com\u002Fbrokermr810\u002FQuantDinger-Vue) under the **QuantDinger Frontend Source-Available License v1.0**.\n- Under that frontend license, non-commercial use and eligible qualified non-profit use are permitted free of charge, while commercial use requires a separate commercial license from the copyright holder.\n- Trademark, branding, attribution, and watermark usage are governed separately and may not be removed or altered without permission. See `TRADEMARKS.md`.\n\nFor commercial licensing, frontend source access, branding authorization, or deployment support:\n\n- Website: [quantdinger.com](https:\u002F\u002Fquantdinger.com)\n- Telegram: [t.me\u002Fworldinbroker](https:\u002F\u002Ft.me\u002Fworldinbroker)\n- Email: [support@quantdinger.com](mailto:support@quantdinger.com)\n\n## Legal Notice and Compliance\n\nQuantDinger is intended for **lawful** research, education, and compliant trading only—not for fraud, market manipulation, sanctions evasion, money laundering, or other illegal activity. Operators must follow applicable laws, licensing, and exchange rules in every jurisdiction where they deploy. **This project does not provide legal, tax, investment, or regulatory advice.** You use the software at your own risk; to the extent permitted by law, contributors disclaim liability for trading losses, service interruption, or regulatory enforcement arising from use or misuse.\n\n## Community and Support\n\n\u003Cp>\n  \u003Ca href=\"https:\u002F\u002Ft.me\u002Fquantdinger\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTelegram-Group-26A5E4?style=for-the-badge&logo=telegram\" alt=\"Telegram\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fdiscord.com\u002Finvite\u002Ftyx5B6TChr\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-Server-5865F2?style=for-the-badge&logo=discord\" alt=\"Discord\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fyoutube.com\u002F@quantdinger\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FYouTube-Channel-FF0000?style=for-the-badge&logo=youtube\" alt=\"YouTube\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n- [Contributing Guide](CONTRIBUTING.md)\n- [Contributors](CONTRIBUTORS.md)\n- [Report Bugs \u002F Request Features](https:\u002F\u002Fgithub.com\u002Fbrokermr810\u002FQuantDinger\u002Fissues)\n- Email: [support@quantdinger.com](mailto:support@quantdinger.com)\n\n## Support the Project\n\nCrypto donations:\n\n```text\n0x96fa4962181bea077f8c7240efe46afbe73641a7\n```\n\n## Star History\n\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=brokermr810\u002FQuantDinger&type=Date)](https:\u002F\u002Fstar-history.com\u002F#brokermr810\u002FQuantDinger&Date)\n\n## Acknowledgements\n\nQuantDinger stands on top of a strong open-source ecosystem. Special thanks to projects such as:\n\n- [Flask](https:\u002F\u002Fflask.palletsprojects.com\u002F)\n- [Pandas](https:\u002F\u002Fpandas.pydata.org\u002F)\n- [CCXT](https:\u002F\u002Fgithub.com\u002Fccxt\u002Fccxt)\n- [yfinance](https:\u002F\u002Fgithub.com\u002Franaroussi\u002Fyfinance)\n- [Vue.js](https:\u002F\u002Fvuejs.org\u002F)\n- [Ant Design Vue](https:\u002F\u002Fantdv.com\u002F)\n- [KLineCharts](https:\u002F\u002Fgithub.com\u002Fklinecharts\u002FKLineChart)\n- [ECharts](https:\u002F\u002Fecharts.apache.org\u002F)\n- [Capacitor](https:\u002F\u002Fcapacitorjs.com\u002F)\n- [bip-utils](https:\u002F\u002Fgithub.com\u002Febellocchia\u002Fbip_utils)\n\n## P.S. — A Note on the Name\n\n**QuantDinger** is a small tribute to **[Erwin Schrödinger](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FErwin_Schr%C3%B6dinger)** — the \"-dinger\" in our name is the tail of \"Schrödinger\". The cat in the box was a thought experiment; every un-fired strategy is its own little version of it — simultaneously winning and losing until the order actually fills. Backtests open the box. Live trading collapses the wavefunction. Trade carefully.\n\n\u003Cp align=\"center\">\u003Csub>If QuantDinger is useful to you, a GitHub star helps the project a lot.\u003C\u002Fsub>\u003C\u002Fp>\n","QuantDinger 是一个用于加密货币、股票和外汇的AI量化交易平台，支持回测、实时交易、市场数据分析及多代理研究。其核心功能包括图表绘制、基于Python的指标与策略开发、历史数据回测以及连接交易所进行实盘操作。技术上采用模块化设计，允许用户自定义部署环境，并且支持多用户协作与计费系统集成。适用于需要高度定制化解决方案的专业投资者或机构，在确保数据安全的同时实现从概念验证到实际交易的一站式服务。",2,"2026-06-11 03:40:32","high_star"]