{"repo":"shy3130/tickflow-stock-panel","free":true,"listed":false,"github":"https://github.com/shy3130/tickflow-stock-panel","clone":"git clone https://github.com/shy3130/tickflow-stock-panel.git","description":"TSP自托管、零运维的 A 股「选股 + 监控 + 回测」量化工作台 | 基于 TickFlow 数据源  | LLM能力驱使策略定制+个股分析+复盘 | 自由接入第三方数据源与个性化扩展数据 | 个人开源 ,非TickFlow官方项目","language":"Python","stars":2884,"topics":["a-stock","ai-agent","aigc","backtesting","daily","duckdb","fastapi","llm","polars","quant","quantitative-finance","quantitative-trading","react","screener","self-hosted","stock","stock-analysis","tdx","tickflow","tsp"],"license":"MIT","category":"quant_trading_platform","readme_excerpt":"\n<div align=\"center\">\n\n# 📈 A股智能量化工作台\n\n[![声明:个人开源](https://img.shields.io/badge/⚠️_声明-个人开源_非_TickFlow_官方项目-green?style=for-the-badge&labelColor=red)](https://github.com/shy3130/tickflow-stock-panel)\n\n\n\n**自托管、零运维的 A 股「选股 + 监控 + 回测」量化工作台**\n\n**面向个人散户与量化爱好者而生**\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)\n[![Python](https://img.shields.io/badge/Python-≥3.11-blue.svg)](https://www.python.org/)\n[![React](https://img.shields.io/badge/React-18-61dafb.svg)](https://react.dev/)\n[![Data: TickFlow](https://img.shields.io/badge/Data-TickFlow-00b386.svg)](https://tickflow.org/auth/register?ref=V3KDKGXPEA)\n[![Deploy: Docker](https://img.shields.io/badge/Deploy-Docker-2496ed.svg)](./Dockerfile)\n[![GitHub stars](https://img.shields.io/github/stars/shy3130/tickflow-stock-panel?style=social)](https://github.com/shy3130/tickflow-stock-panel/stargazers)\n\n</div>\n\n<div align=\"center\">\n  \n\n\n**[快速开始](#-快速开始)** · **[核心功能](#-核心功能)** · **[配置](#️-配置)** · **[完整文档](#-完整文档)**\n\n</div>\n\n\n---\n\n\n\n**本项目个人开源，基于 [TickFlow](https://tickflow.org/auth/register?ref=V3KDKGXPEA) 数据源，非 [TickFlow](https://tickflow.org/auth/register?ref=V3KDKGXPEA) 官方项目。仅供学习研究使用，严禁商业用途。** \n\n\n\n\n> ⚠️ 小白请绕路，本开源项目谨作为本地量化提供解决思路Demo，不作为投资软件或者看盘软件。\n>\n> **明确不做**:不对标同花顺 / 通达信,不内置「AI 荐股 / 涨停预测」。\n\n有问题可以邮件415333856@qq.com,交流群二维码在文末。\n\n觉得有用可以点个 Star\n\n---\n\n## ✨ 核心功能\n\n| 模块             | 一句话                                                                 | 详见                              |\n| :--------------- | :--------------------------------------------------------------------- | :-------------------------------- |\n| 🔍 **选股引擎**   | 18 个内置策略 + 自定义信号 + AI 生成 + 代码迁移,Polars 毫秒级扫全 A 股 | [strategy.md](./docs/strategy.md) |\n| 📊 **指标流水线** | MA/EMA/MACD/RSI/KDJ/布林/量比等,一次扫表落盘 enriched Parquet          | [features.md](./docs/features.md) |\n| 🧪 **回测引擎**   | 三种模式(个股/策略组合/自由信号),T+1/手续费/滑点/止损,SSE 流式进度     | [features.md](./docs/features.md) |\n| 📡 **监控中心**   | 四类监控(策略/个股信号/价格/异动),多条件 AND/OR + 语音播报 + 飞书推送  | [features.md](./docs/features.md) |\n| 📈 **个股分析**   | 9 类关键价位 + AI 四维分析(技术/基本面/财务/消息面)                    | [features.md](./docs/features.md) |\n| 🏆 **连板梯队**   | 连板层级统计 + 概念涨幅轮动 + 盘后 AI 复盘 + 炸板/翘板预警             | [features.md](./docs/features.md) |\n| 🧰 **数据扩展**   | TickFlow 多源 + 第三方接入(接口/推送/CSV/JSON)同台分析                   | [features.md](./docs/features.md) |\n\n\n\n\n\n<details>\n<summary><b>📦 主要页面与功能</b></summary>\n\n**📊 行情总览**\n- **看板** Dashboard — 市场情绪评分 + 涨跌/成交额榜单 + 概念领涨领跌 + 大盘异动事件流,一日全貌\n- **自选** Watchlist — 自选股池,表格/卡片双视图,换手/量比/RSI 等实时指标\n- **指数** Indices — 沪深指数浏览与同步\n\n**🔍 选股与回测**\n- **策略** Screener — Polars 毫秒级扫描全 A 股,18 个内置策略卡片 + 自定义条件\n- **回测** Backtest — 两种模式:\n  - **因子回测** — IC/IR、分层收益、多空组合,先筛掉无效指标\n  - **策略回测** — 净值曲线、回撤、夏普、胜率,支持 T+1/手续费/滑点/止损,SSE 流式进度\n\n**📈 个股与板块分析**\n- **个股分析** Stock Analysis (Beta) — 日K + 9 类关键价位 + AI 四维分析(技术/基本面/财务/消息面)\n- **财务分析** Financials — 利润表/资负表/现金流/关键指标 + AI 解读\n- **概念分析** Concept Analysis — ths 概念涨幅轮动矩阵 + 领涨/领跌主线 + 个股穿透\n- **行业分析** Industry Analysis — 行业分层涨幅轮动 + 领涨/领跌主线 + 成分股\n- **连板梯队** Limit Up Ladder — 连板层级统计 + 概念/行业分布 + 封单监控(可切换连跌梯队)\n\n**🔔 监控与复盘**\n- **监控中心** Monitor — 策略/个股信号/价格/异动四类规则,盘中实时弹窗 + 语音播报(播报个股名称与信号) + 触发记录持久化\n- **复盘** Review (Beta) — 盘后 AI 自动生成市场复盘,可定时执行、推送飞书、下载 Markdown\n\n**🗄️ 数据与扩展**\n- **数据** Data — 本地数据画像与同步状态(维表/日K/除权/Enriched/指数/ETF/分钟K/财务),盘后管道与历史扩展\n- **扩展分析** (动态菜单) — 把任意第三方/扩展数据字段配成一级菜单,与内置数据同台分析\n- **设置** Settings — TickFlow Key 与订阅档位、AI 接口、实时监控、扩展页面、信号库、菜单与系统设置\n\n</details>\n\n\n---\n\n## 📸 界面预览\n\n<table>\n  <tr>\n    <td width=\"50%\" align=\"center\"><b>看板 Dashboard</b></td>\n    <td width=\"50%\" align=\"center\"><b>策略 Screener</b></td>\n  </tr>\n  <tr>\n    <td width=\"50%\"><img src=\"./screenshots/dashboard.png\" alt=\"看板页面\"></td>\n    <td width=\"50%\"><img src=\"./screenshots/screener.png\" alt=\"策略页\"></td>\n  </tr>\n  <tr>\n    <td width=\"50%\" align=\"center\"><b>回测 Backtest</b></td>\n    <td width=\"50%\" align=\"center\"><b>监控中心 Monitor</b></td>\n  </tr>\n  <tr>\n    <td width=\"50%\"><img src=\"./screenshots/backtest.png\" alt=\"回测页\"></td>\n    <td width=\"50%\"><img src=\"./screenshots/monitor.png\" alt=\"监控中心\"></td>\n  </tr>\n  <tr>\n    <td width=\"50%\" align=\"center\"><b>连板梯队 Limit Ladder</b></td>\n    <td width=\"50%\" align=\"center\"><b>概念分析 Concept</b></td>\n  </tr>\n  <tr>\n    <td width=\"50%\"><img src=\"./screenshots/limit-ladder.png\" alt=\"连板梯队页\"></td>\n    <td width=\"50%\"><img src=\"./screenshots/concept-analysis.png\" alt=\"概念分析\"></td>\n  </tr>\n</table>\n\n<div align=\"center\">\n\n### 📸 [查看更多界面截图 »](./screenshots/README.md)\n\n</div>\n\n\n---\n\n\n\n\n## 🚀 快速开始\n\n> 前置依赖:Python ≥ 3.11 · Node ≥ 20 · [`uv`](https://docs.astral.sh/uv/) · `pnpm`(`npm i -g pnpm`)\n\n### 方式 A:Dev 模式(二次开发推荐)\n\n```bash\ncp .env.example .env       # 按需填 TICKFLOW_API_KEY(留空 = None 模式)\n./dev.sh                   # Windows: .\\dev.ps1\n```\n\n自动检查 / 下载依赖、释放端口、同时起前后端。后端 → <http://localhost:3018> · 前端 → <http://localhost:3011>。\n\n### 方式 B:Docker(部署最省心)\n\n```bash\ncp .env.example .env\ndocker compose up --build\n# 打开 http://localhost:3018\n```\n\nDocker 镜像内置固定版本的 **Codex CLI**，Compose 会将主机 `${HOME}/.codex` 只读挂载到容器，因此主机需先完成 Codex 登录。若主机 Codex 使用 loopback local-access provider，容器会保留实际端口并自动将主机名映射为 `host.docker.internal`。需要覆盖镜像内版本时可设置构建参数：\n\n```bash\nCODEX_CLI_VERSION=0.144.3 docker compose up --build\n```\n\n> **Windows 用户注意**：纯 PowerShell / CMD 下 `HOME` 环境变量通常未设置，会导致挂载路径解析失败、容器读不到 Codex 登录态。请在 `.env` 中显式指定主机 Codex 目录：\n> ```bash\n> # PowerShell 示例(实际路径以本机为准)\n> echo \"CODEX_HOME_HOST=C:\\Users\\你的用户名\\.codex\" >> .env\n> ```\n\n> Codex CLI 模式允许 TickFlow 容器读取本机 Codex 登录凭据，仅应在受信任的本机环境启用。凭据目录以只读方式挂载，不会写入镜像。\n\n镜像已内置 **stock-sdk** 数据源插件(Node 运行时 + 依赖),开箱即用。\n\n> 📖 Docker 进阶、GitHub Actions 自构建、老 CPU 兼容、访问密码设置等见 [docs/deployment.md](./docs/deployment.md)。\n\n### 跑起来后的第一次使用\n\n1. **设置 → 凭据与能力** → 点 **重新检测**,确认档位标签\n2. **设置** → **立即跑盘后管道**:拉日 K + 计算 enriched 表(None / Free 走 free-api,当日数据盘后 1-2 小时可用)\n3. **自选**页加标的 → **选股**页点策略卡片扫描 / 配自定义信号\n4. **回测**页选策略 + 区间 → 看净值 / 夏普 / 交易明细(SSE 实时进度)\n5. **监控中心**配规则,盘中实时弹窗 + 持久化记录\n\n---\n\n## ⚙️ 配置\n\n所有配置从根目录 `.env` 读取(复制 `.env.example` 开始),也可在面板 **设置** 页修改。最常用的三项:\n\n```ini\nTICKFLOW_API_KEY=              # 留空 = None 模式(历史日K免费);填 Key 解锁更多\nAI_API_KEY=                    # 留空 = 关闭 AI;填 Key 启用策略生成\nPORT=3018                      # 服务端口\n```\n\n> 📖 完整配置项(数据源档位、AI、服务、密码、老 CPU 兼容)见 [docs/configuration.md](./docs/configuration.md)。\n\n---\n\n## 🏗️ 技术栈\n\n| 层           | 选型                                                                                              |\n| :----------- | :------------------------------------------------------------------------------------------------ |\n| **后端**     | FastAPI · Pydantic v2 · APScheduler · sse-starlette                                               |\n| **数据**     | Polars(计算)· DuckDB(查询)· Parquet(存储)                                                         |\n| **回测**     | vectorbt(全项目唯一 pandas 边界)                                                                  |\n| **数据源**   | [TickFlow](https://tickflow.org/auth/register?ref=V3KDKGXPEA) 官方 SDK · 其他数据源后续迭代实装   |\n| **AI**(可选) | OpenAI 兼容接口(DeepSeek / 通义 / Ollama 等)                                                      |\n| **前端**     | React 18 · Vite · TypeScript · Tailwind · Tanstack Query · Lightweight Charts · ECharts · dnd-kit |\n| **部署**     | Docker 两阶段构建,前端 dist 拷进后端镜像,**单容器**                                               |\n\n---\n\n## 🗺️ 路线图\n\n| Phase  | 内容                                                               | 状态 |\n| :----- | :----------------------------------------------------------------- | :--- |\n| 0-1    | 仓库骨架 · FastAPI 壳 · 能力探测 · K 线同步与分析页                | ✅    |\n| 2-3    | Polars enriched 流水线 · Screener · vectorbt 回测(T+1/手续费/止损) | ✅    |\n| 4-5    | 监控引擎 · 四类监控规则 · 实时 SSE 推送 · 持久化记录               | ✅    |\n| 6      | 个股分析(专用日 K + 9 类关键价位 + AI 四维分析)                    | ✅    |\n| **v2** | Webhook 推送· 板块异动 · 早晚报 · 更多扩展           | 🚧    |\n\n---\n\n## 📚 完整文档\n\n| 文档                                                                                               | 内容                                                                 |\n| :------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------- |\n| [docs/deployment.md](./docs/deployment.md)                                                         | 部署方式(Dev / Docker / GH Actions)、老 CPU 兼容、更新代码、访问密码 |\n| [docs/configuration.md](./docs/configuration.md)                                                   | 所有 `.env` 配置项详解(数据源、AI、服务、密码、数据目录)             |\n| [docs/features.md](./docs/features.md)                                                             | 各功能模块详细说明(选股/指标/回测/监控/个股分析/数据扩展)            |\n| [docs/custom-data-source.md](./docs/custom-data-source.md)                                         | 自定义数据源接入、YAML 配置与 mock 联调示例                         |\n| [docs/strategy.md](./docs/strategy.md)                                                             | 策略体系(18 内置策略 + 三种扩展方式 + 文件结构)                      |\n| [backend/app/strategy/prompts/strategy-guide.md](./backend/app/strategy/prompts/strategy-guide.md) | 策略开发完整规范(AI 生成与手写)                                      |\n\nfork同时请点个star哦,欢迎 Issue 和 PR。\n\n---\n\n## 💬 交流群\n\n欢迎加入交流群,讨论交流。\n\n<img src=\"./community-qr-code.jpg\" alt=\"交流群二维码\" width=\"240\" />\n\n---\n\n## ⚠️ 免责声明\n\n本项目仅供**学习与量化研究**,**不构成任何投资建议**。回测结果不代表未来收益。A 股有风险,入市需谨慎。数据准确性以数据源 TickFlow 官方为准。\n\n## 📄 License\n\n[MIT](./LICENSE) © tickflow-stock-panel contributors \n\n本项目依赖 [TickFlow](https://tickflow.org/auth/register?ref=V3KDKGXPEA) 提供数据服务,使用前请遵守其服务条款\n\n数据源插件 [stock-sdk](https://stock-sdk.linkdiary.cn) 遵循其各自的 ISC 协议。\n\n## 社区\n\n本开源项目已链接并认可 [LINUX DO 社区](https://linux.do)。\n","default_branch":"main","files":454,"tree":[".dockerignore",".env.example",".gitattributes",".github/workflows/docker.yml",".github/workflows/release.yml",".gitignore","AGENTS.md","CONTRIBUTING.md","Dockerfile","LICENSE","README.md","VERSION","backend/app/__init__.py","backend/app/api/__init__.py","backend/app/api/alerts.py","backend/app/api/analysis.py","backend/app/api/auth.py","backend/app/api/backtest.py","backend/app/api/data.py","backend/app/api/ext_data.py","backend/app/api/financials.py","backend/app/api/indices.py","backend/app/api/intraday.py","backend/app/api/kline.py","backend/app/api/market_recap.py","backend/app/api/monitor_rules.py","backend/app/api/overview.py","backend/app/api/pipeline.py","backend/app/api/regime.py","backend/app/api/routes.py","backend/app/api/rps.py","backend/app/api/screener.py","backend/app/api/settings.py","backend/app/api/signals.py","backend/app/api/stock_analysis.py","backend/app/api/strategy.py","backend/app/api/watchlist.py","backend/app/backtest/__init__.py","backend/app/backtest/engine.py","backend/app/backtest/factor.py","backend/app/backtest/matrix.py","backend/app/backtest/minute_trigger.py","backend/app/backtest/numba_runtime.py","backend/app/backtest/optimizer.py","backend/app/backtest/strategy.py","backend/app/backtest/walkforward.py","backend/app/backtest/worker.py","backend/app/config.py","backend/app/data_providers/__init__.py","backend/app/data_providers/base.py","backend/app/data_providers/custom/__init__.py","backend/app/data_providers/custom/config.py","backend/app/data_providers/custom/loader.py","backend/app/data_providers/custom/mapper.py","backend/app/data_providers/custom/provider.py","backend/app/data_providers/normalizer.py","backend/app/data_providers/registry.py","backend/app/data_providers/schemas.py","backend/app/data_providers/tickflow_provider.py","backend/app/db_safe.py","backend/app/desktop.py","backend/app/indicators/__init__.py","backend/app/indicators/levels.py","backend/app/indicators/pipeline.py","backend/app/jobs/__init__.py","backend/app/jobs/daily_pipeline.py","backend/app/main.py","backend/app/market_time.py","backend/app/parquet.py","backend/app/plugins/stocksdk/__init__.py","backend/app/plugins/stocksdk/bridge.mjs","backend/app/plugins/stocksdk/bridge.py","backend/app/plugins/stocksdk/package-lock.json","backend/app/plugins/stocksdk/package.json","backend/app/plugins/stocksdk/plugin.yaml","backend/app/plugins/stocksdk/provider.py","backend/app/price_limits.py","backend/app/secrets_store.py","backend/app/services/__init__.py","backend/app/services/ai_provider.py","backend/app/services/ai_reports.py","backend/app/services/alert_store.py","backend/app/services/auth.py","backend/app/services/backtest.py","backend/app/services/concept_rotation_analyzer.py","backend/app/services/depth_service.py","backend/app/services/ext_data.py","backend/app/services/ext_presets.py","backend/app/services/ext_pull.py","backend/app/services/extend_history.py","backend/app/services/financial_analyzer.py","backend/app/services/financial_sync.py","backend/app/services/index_sync.py","backend/app/services/instrument_sync.py","backend/app/services/json_report_store.py","backend/app/services/kline_sync.py","backend/app/services/market_overview_builder.py","backend/app/services/market_recap.py","backend/app/services/market_recap_reports.py","backend/app/services/notify_adapter.py","backend/app/services/pipeline_jobs.py","backend/app/services/preferences.py","backend/app/services/quote_service.py","backend/app/services/regime_builder.py","backend/app/services/repair_daily.py","backend/app/services/rps_rotation.py","backend/app/services/screener.py","backend/app/services/sector_monitor.py","backend/app/services/stock_analyzer.py","backend/app/services/stock_reports.py","backend/app/services/strategy_cache.py","backend/app/services/watchlist.py","backend/app/services/watchlist_ocr/__init__.py","backend/app/services/watchlist_ocr/pipeline.py","backend/app/services/watchlist_ocr/provider.py","backend/app/services/webhook_adapter.py","backend/app/services/wecom_bot_service.py","backend/app/share_capital.py","backend/app/strategy/__init__.py","backend/app/strategy/ai_generator.py","backend/app/strategy/builtin/__init__.py","backend/app/strategy/builtin/boll_breakout.py","backend/app/strategy/builtin/broken_board_recovery.py","backend/app/strategy/builtin/bullish_alignment.py","backend/app/strategy/builtin/consecutive_limit_ups.py","backend/app/strategy/builtin/high_turnover_surge.py","backend/app/strategy/builtin/limit_up_momentum.py","backend/app/strategy/builtin/low_volatility_leader.py","backend/app/strategy/builtin/ma_golden_cross.py","backend/app/strategy/builtin/macd_golden.py","backend/app/strategy/builtin/n_day_low_reversal.py","backend/app/strategy/builtin/near_limit_up.py","backend/app/strategy/builtin/oversold_bounce.py","backend/app/strategy/builtin/oversold_reversal.py","backend/app/strategy/builtin/pullback_ma20_bounce.py","backend/app/strategy/builtin/pullback_to_support.py","backend/app/strategy/builtin/strong_open.py","backend/app/strategy/builtin/trend_breakout.py","backend/app/strategy/builtin/volume_price_surge.py","backend/app/strategy/composite.py","backend/app/strategy/config.py","backend/app/strategy/custom_signals.py","backend/app/strategy/engine.py","backend/app/strategy/intraday_signals.py","backend/app/strategy/monitor.py","backend/app/strategy/monitor_rules.py","backend/app/strategy/prompt_builder.py","backend/app/strategy/prompts/strategy-builder-step1.md","backend/app/strategy/prompts/strategy-builder-step2.md","backend/app/strategy/prompts/strategy-example.md","backend/app/strategy/prompts/strategy-guide-compact.md","backend/app/strategy/prompts/strategy-guide.md","backend/app/strategy/scoring.py","backend/app/tickflow/__init__.py","backend/app/tickflow/capabilities.py","backend/app/tickflow/client.py","backend/app/tickflow/policy.py","backend/app/tickflow/pools.py","backend/app/tickflow/rate_limits.py","backend/app/tickflow/repository.py","backend/app/tickflow/scheduler.py","backend/pyproject.toml","backend/scripts/__init__.py","backend/scripts/cleanup_halt_days.py","backend/scripts/probe_tickflow_pro.py","backend/tests/backtest/test_composite_backtest_e2e.py","backend/tests/backtest/test_cost_model.py","backend/tests/backtest/test_dependencies.py","backend/tests/backtest/test_engine_portfolio.py","backend/tests/backtest/test_full_simulation_tail.py","backend/tests/backtest/test_market_matrix.py","backend/tests/backtest/test_matrix_compute_cache.py","backend/tests/backtest/test_matrix_strategy.py","backend/tests/backtest/test_minute_fill.py","backend/tests/backtest/test_numba_runtime.py","backend/tests/backtest/test_optimizer_api.py","backend/tests/backtest/test_optimizer_grid.py","backend/tests/backtest/test_optimizer_run.py","backend/tests/backtest/test_robustness_metrics.py","backend/tests/backtest/test_strategy_backtest_correctness.py","backend/tests/backtest/test_walkforward.py","backend/tests/backtest/test_worker_process.py","backend/tests/test_ai_generator_prompt.py","backend/tests/test_ai_provider.py","backend/tests/test_ai_strategy_meta_normalize.py","backend/tests/test_backtest_etf.py","backend/tests/test_composite_override.py","backend/tests/test_composite_strategy.py","backend/tests/test_composite_strategy_api.py","backend/tests/test_custom_minute_config.py","backend/tests/test_daily_batch_asset.py","backend/tests/test_depth_continuous_trading.py","backend/tests/test_enriched_full_rebuild.py","backend/tests/test_ext_data_dimension_members.py","backend/tests/test_ext_preset_dimension_values.py","backend/tests/test_ext_sql_safety.py","backend/tests/test_financial_shares.py","backend/tests/test_high_turnover_strategy.py","backend/tests/test_indicator_needed.py","backend/tests/test_instrument_search.py","backend/tests/test_intraday_monitor_signals.py","backend/tests/test_limit_ladder_one_word.py","backend/tests/test_live_enriched_metadata.py","backend/tests/test_minute_routing.py","backend/tests/test_monitor_etf.py","backend/tests/test_monitor_index.py","backend/tests/test_parquet_schema_compat.py","backend/tests/test_pipeline_and_monitor_fixes.py","backend/tests/test_price_limits.py","backend/tests/test_probe_tickflow_pro_gate.py","backend/tests/test_probe_tickflow_pro_live.py","backend/tests/test_quote_index_merge.py","backend/tests/test_rate_limit_safety_budget.py","backend/tests/test_realtime_enriched_resume.py","backend/tests/test_realtime_turnover_rate.py","backend/tests/test_regime_builder.py","backend/tests/test_repository_index.py","backend/tests/test_resolve_universe_index.py","backend/tests/test_screener_builtin_params.py","backend/tests/test_screener_cache_api.py","backend/tests/test_screener_etf.py","backend/tests/test_sector_monitor.py","backend/tests/test_st_limit_and_sharpe.py","backend/tests/test_stock_analyzer_index.py","backend/tests/test_stocksdk_provider.py","backend/tests/test_strategy_build_stream.py","backend/tests/test_strategy_cache.py","backend/tests/test_strategy_code_save.py","backend/tests/test_strategy_delete.py","backend/tests/test_strategy_detail_signals.py","backend/tests/test_strategy_monitor_events.py","backend/tests/test_strategy_param_normalize.py","backend/tests/test_strategy_realtime_refresh.py","backend/tests/test_strategy_registry.py","backend/tests/test_strategy_saved_params.py","backend/tests/test_strategy_scoring.py","backend/tests/test_watchlist_batch.py","backend/tests/test_watchlist_enriched_join.py","backend/tests/test_watchlist_ocr.py","backend/tests/test_watchlist_realtime_split.py","backend/uv.lock","community-qr-code.jpg","dev.ps1","dev.sh","docker-compose.yml","docs/configuration.md","docs/custom-data-source.md","docs/deploy-password.md","docs/deployment.md","docs/examples/custom-data-source/README.md","docs/examples/custom-data-source/mock_server.py","docs/examples/custom-data-source/mock_source.yaml","docs/features.md","docs/plugin-development.md","docs/strategy.md","docs/tickflow-pro-phase1-probe.md","docs/tickflow-pro-shared-rate-limit.md","frontend/.gitignore","frontend/index.html","frontend/package.json","frontend/pnpm-lock.yaml","frontend/postcss.config.js","frontend/public/favicon.svg","frontend/src/components/AlertToast.tsx","frontend/src/components/CandlestickChart.tsx","frontend/src/components/ColumnCustomizer.tsx","frontend/src/components/DatePicker.tsx","frontend/src/components/DimensionMembersDialog.tsx","frontend/src/components/EChartsCandlestick.tsx","frontend/src/components/EChartsIntraday.tsx","frontend/src/components/EmptyState.tsx","frontend/src/components/EndpointTestDialog.tsx","frontend/src/components/ExtDimensionAnalysis.tsx","frontend/src/components/LastStockChip.tsx","frontend/src/components/Layout.tsx","frontend/src/components/ListColumnCustomizer.tsx","frontend/src/components/Logo.tsx","frontend/src/components/Modal.tsx","frontend/src/components/PageHeader.tsx","frontend/src/components/RpsRotationDialog.tsx","frontend/src/components/SealedBadge.tsx","frontend/src/components/StockDailyKChart.tsx","frontend/src/components/StockInfoBar.tsx","frontend/src/components/StockIntradayChart.tsx","frontend/src/components/StockPanel.tsx","frontend/src/components/StockPreviewDialog.tsx","frontend/src/components/Toast.tsx","frontend/src/components/WarmupBadge.tsx","frontend/src/components/WatchlistImportDialog.tsx","frontend/src/components/analysis-shared.tsx","frontend/src/components/data/ActiveJobCard.tsx","frontend/src/components/data/DepthConfigCard.tsx","frontend/src/components/data/EnrichedRebuildPanel.tsx","frontend/src/components/data/ExtendHistoryPanel.tsx","frontend/src/components/data/MinuteSyncConfig.tsx","frontend/src/components/data/PageSettingsModal.tsx","frontend/src/components/data/PipelineScopeConfig.tsx","frontend/src/components/data/QuoteConfigCard.tsx","frontend/src/components/data/RegimeConfigCard.tsx","frontend/src/components/data/RepairDailyPanel.tsx","frontend/src/components/data/ScheduleEditor.tsx","frontend/src/components/data/SchemaModal.tsx","frontend/src/components/data/SectionTitle.tsx","frontend/src/components/data/SettingsModal.tsx","frontend/src/components/data/Skeleton.tsx","frontend/src/components/data/StatCard.tsx","frontend/src/components/ext-data/CreateExtDialog.tsx","frontend/src/components/ext-data/EditExtDialog.tsx","frontend/src/components/ext-data/ExtDataApiPanel.tsx","frontend/src/components/ext-data/ExtDataPullPanel.tsx","frontend/src/components/ext-data/ExtDataStatCard.tsx","frontend/src/components/financials/AiAnalysisDialog.tsx","frontend/src/components/financials/AiAnalysisHost.tsx","frontend/src/components/financials/AiReportBubble.tsx","frontend/src/components/financials/MarkdownRenderer.tsx","frontend/src/components/financials/ReportHistoryPanel.tsx","frontend/src/components/financials/StockFinancialDetail.tsx","frontend/src/components/financials/StockFinancialSearch.tsx","frontend/src/components/monitor/RuleEditor.tsx","frontend/src/components/screener/CompositeStrategyDialog.tsx","frontend/src/components/screener/ScreenerFilter.tsx","frontend/src/components/screener/ScreenerTable.tsx","frontend/src/components/screener/SignalPicker.tsx","frontend/src/components/screener/StrategyBuilderDialog.tsx","frontend/src/components/screener/StrategyCard.tsx","frontend/src/components/screener/StrategyPoolDialog.tsx","frontend/src/components/screener/StrategySettingsDialog.tsx","frontend/src/components/screener/StrategyStoreDialog.tsx","frontend/src/components/signals/CustomSignalDialog.tsx","frontend/src/components/signals/SignalTriggerActions.tsx","frontend/src/components/stock-analysis/AnalysisKChart.tsx","frontend/src/components/stock-analysis/PriceAlertDialog.tsx","frontend/src/components/stock-analysis/StockAnalysisBubble.tsx","frontend/src/components/stock-analysis/StockAnalysisDialog.tsx","frontend/src/components/stock-analysis/StockAnalysisHost.tsx","frontend/src/components/stock-table/MiniCandlestick.tsx","frontend/src/components/stock-table/MiniIntraday.tsx","frontend/src/components/stock-table/StockDataTable.tsx","frontend/src/components/stock-table/primitives.tsx","frontend/src/components/stock-table/useTableSort.ts","frontend/src/components/virtual-list/useParentScroll.ts","frontend/src/index.css","frontend/src/lib/aiReportStore.ts","frontend/src/lib/analysis-adapter.ts","frontend/src/lib/api.ts","frontend/src/lib/backtestTask.ts","frontend/src/lib/board.ts","frontend/src/lib/capability-labels.tsx","frontend/src/lib/clipboard.ts","frontend/src/lib/cn.ts","frontend/src/lib/colors.ts","frontend/src/lib/format.ts","frontend/src/lib/list-columns.ts","frontend/src/lib/monitorBadge.ts","frontend/src/lib/notificationSound.ts","frontend/src/lib/ocrInstallHint.ts","frontend/src/lib/optimizerTask.ts","frontend/src/lib/queryKeys.ts","frontend/src/lib/reviewStore.ts","frontend/src/lib/screener-columns.ts","frontend/src/lib/signals.ts","frontend/src/lib/stock-info-fields.ts","frontend/src/lib/stock-table.ts","frontend/src/lib/stockAnalysisStore.ts","frontend/src/lib/storage.ts","frontend/src/lib/strategyMonitorEvents.ts","frontend/src/lib/strategyOverrides.ts","frontend/src/lib/theme.ts","frontend/src/lib/useDialogBackdrop.ts","frontend/src/lib/useFinancials.ts","frontend/src/lib/useLastStock.ts","frontend/src/lib/useQueryConfig.ts","frontend/src/lib/useQuoteStream.ts","frontend/src/lib/useReviewStore.ts","frontend/src/lib/useSharedMutations.ts","frontend/src/lib/useSharedQueries.ts","frontend/src/lib/useStrategyPool.ts","frontend/src/lib/voiceBroadcast.ts","frontend/src/lib/walkforwardTask.ts","frontend/src/lib/watchlist-columns.ts","frontend/src/main.tsx","frontend/src/pages/Analysis.tsx","frontend/src/pages/AnalysisDetail.tsx","frontend/src/pages/Auth.tsx","frontend/src/pages/Backtest.tsx","frontend/src/pages/Branding.tsx","frontend/src/pages/ConceptAnalysis.tsx","frontend/src/pages/Dashboard.tsx","frontend/src/pages/Data.tsx","frontend/src/pages/Dev.tsx","frontend/src/pages/Financials.tsx","frontend/src/pages/Indices.tsx","frontend/src/pages/IndustryAnalysis.tsx","frontend/src/pages/LimitUpLadder.tsx","frontend/src/pages/Monitor.tsx","frontend/src/pages/Onboarding.tsx","frontend/src/pages/Regime.tsx","frontend/src/pages/Review.tsx","frontend/src/pages/Screener.tsx","frontend/src/pages/Settings.tsx"],"storefront":"/r/shy3130","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/shy3130/tickflow-stock-panel/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}