自动化与脚本
用 Plotly Dash 或 Streamlit…
当需要为股票等技术指标分析构建可交互的 Web 仪表盘时,按类型选择 Dash 或 Streamlit 模板并生成 app.py。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
用 Plotly Dash 或 Stre特定
解决思路
- 解析 $ARGUMENTS 为 type 和 symbol:$0 为仪表盘类型(默认 single),$1 为标的代码(默认 SBIN);若无参数则询问用户想要的仪表盘类型以及偏好 Dash 还是 Streamlit。
- 框架选择:默认使用 Plotly Dash;仅当用户明确要求 Streamlit(说出 "streamlit" 或选择 streamlit-* 类型)时才构建 Streamlit 应用,绝不静默切换框架。
- 先阅读 indicator-expert 规则,尤其是 rules/dashboard-patterns.md(Dash 应用模式)、rules/streamlit-patterns.md(Streamlit 应用模式)、rules/plotting.md(图表模式)、rules/data-fetching.md(数据加载)。
- 按需创建 dashboards/{dashboard_name}/ 目录,并在其中创建 app.py,使用 rules/assets/ 中匹配的模板。
- 所有仪表盘必须包含:深色主题(Dash 用 dbc.themes.DARKLY;Streamlit 用 [theme] base = "dark" 或注入 CSS)。
- 所有仪表盘必须包含:标的输入(文本框或下拉框)。
- 所有仪表盘必须包含:交易所选择器(NSE、BSE、NFO、NSE_INDEX)。
- 所有仪表盘必须包含:周期选择器(1m、5m、15m、1h、D)。
- 所有仪表盘必须包含:指标选择器(用于叠加指标和子图指标的复选框/多选框)。
- 所有仪表盘必须包含:交互式图表(Plotly 图表,设置 template="plotly_dark"、xaxis_type="category")。
- 所有仪表盘必须包含:统计展示(关键指标:LTP、涨跌幅、成交量、指标值)。
- 所有仪表盘必须包含:自动刷新(Dash 用 dcc.Interval;Streamlit 用 st.rerun() 配合 time.sleep())。
- 所有仪表盘必须包含:通过 find_dotenv() 从项目根目录加载 .env。
- Dash 类型 single:单标的可配置指标;叠加指标 EMA、SMA、Bollinger、Supertrend、Ichimoku(复选框);子图 RSI、MACD、Stochastic、Volume、ADX、OBV(复选框);统计面板显示 LTP、当日涨跌、成交量、所选指标值;模板 rules/assets/dashboard_basic/app.py。
- Dash 类型 multi-symbol:4-6 个标的以网格布局展示;每个单元格显示 K 线 + 一个叠加指标;底部一行显示所有标的的 RSI 对比;标的列表可通过输入编辑。
- Dash 类型 multi-timeframe:4 面板网格,同一标的的 5m、15m、1h、D;每个周期计算相同指标;汇总结论如 "3/4 timeframes bullish";模板 rules/assets/dashboard_multi/app.py。
- Dash 类型 scanner-dashboard:10+ 标的的自选列表;表格显示 Symbol、LTP、RSI、EMA trend、Signal;行按颜色区分(绿色=看涨,红色=看跌);点击标的显示详细图表;每 30 秒自动刷新。
- Streamlit 类型 streamlit-single:侧边栏包含标的、交易所、周期、叠加/子图多选框;用 st.plotly_chart() 显示交互式图表;用 st.metric() 显示 LTP、涨跌幅、RSI、EMA 统计;通过复选框 + st.rerun() 实现自动刷新;模板 rules/assets/streamlit_basic/app.py。
- Streamlit 类型 streamlit-multi:用 st.columns(2) 构建 2x2 网格展示 4 个周期;每个周期显示 K 线 + EMA 叠加;用 st.success()/st.error()/st.warning() 显示汇总结论;用 st.metric() 卡片显示每个周期的趋势;模板 rules/assets/streamlit_multi/app.py。
- Streamlit 类型 streamlit-scanner:侧边栏包含扫描类型选择器和运行按钮;扫描过程中用 st.progress();用 st.dataframe() 显示结果表格;用 st.download_button() 导出 CSV。
- 创建应用后提供运行说明。Dash:cd dashboards/{dashboard_name} && python app.py,浏览器打开 http://127.0.0.1:8050。Streamlit:cd dashboards/{dashboard_name} && streamlit run app.py,浏览器打开 http://localhost:8501。
适用边界 · 注意事项
- 用户未明确要求 Streamlit 时不要使用 Streamlit,默认应使用 Plotly Dash。
- 缺少 .env 或数据源配置时无法加载数据,仪表盘无法正常工作。