Create a web dashboard for interactive technical analysis using Plotly Dash or Streamlit.
Arguments
Parse $ARGUMENTS as: type symbol
$0 = dashboard type. Default: single
- Dash types:
single, multi-symbol, multi-timeframe, scanner-dashboard
- Streamlit types:
streamlit-single, streamlit-multi, streamlit-scanner
$1 = symbol (e.g., SBIN, RELIANCE). Default: SBIN
If no arguments, ask the user what kind of dashboard they want and whether they prefer Dash or Streamlit.
Framework choice: Plotly Dash is the default. Build a Streamlit app ONLY when the user explicitly asks for Streamlit (says "streamlit" or picks a streamlit-* type). Never silently switch frameworks.
Instructions
- Read the indicator-expert rules, especially:
rules/dashboard-patterns.md — Dash app patterns
rules/streamlit-patterns.md — Streamlit app patterns
rules/plotting.md — Chart patterns
rules/data-fetching.md — Data loading
- Create
dashboards/{dashboard_name}/ directory (on-demand)
- Create
app.py in dashboards/{dashboard_name}/
- Use the matching template from
rules/assets/
Dashboard Requirements
All dashboards must include:
- Dark theme: Dash uses
dbc.themes.DARKLY; Streamlit uses [theme] base = "dark" or CSS injection
- Symbol input: Text input or dropdown for symbol selection
- Exchange selector: NSE, BSE, NFO, NSE_INDEX
- Interval selector: 1m, 5m, 15m, 1h, D
- Indicator selectors: Checkboxes/multiselect for overlay and subplot indicators
- Interactive chart: Plotly chart with
template="plotly_dark", xaxis_type="category"
- Stats display: Key metrics (LTP, Change, Volume, indicator values)
- Auto-refresh: Dash uses
dcc.Interval; Streamlit uses st.rerun() with time.sleep()
- Load
.env from project root via find_dotenv()
Dash Dashboard Types
single — Single Symbol Dashboard (Dash)
- One symbol with configurable indicators
- Overlays: EMA, SMA, Bollinger, Supertrend, Ichimoku (checkboxes)
- Subplots: RSI, MACD, Stochastic, Volume, ADX, OBV (checkboxes)
- Stats panel: LTP, day change, volume, selected indicator values
- Template:
rules/assets/dashboard_basic/app.py
multi-symbol — Multi-Symbol Watchlist (Dash)
- 4-6 symbols in a grid layout
- Each cell shows candlestick + one overlay indicator
- Bottom row: RSI comparison across all symbols
- Symbol list editable via input
multi-timeframe — MTF Analysis (Dash)
- 4-panel grid: 5m, 15m, 1h, D for same symbol
- Same indicators computed on each timeframe
- Confluence summary: "3/4 timeframes bullish"
- Template:
rules/assets/dashboard_multi/app.py
scanner-dashboard — Live Scanner (Dash)
- Watchlist of 10+ symbols
- Table showing: Symbol, LTP, RSI, EMA trend, Signal
- Color-coded rows (green=bullish, red=bearish)
- Click symbol to show detailed chart
- Auto-refresh every 30 seconds
Streamlit Dashboard Types
streamlit-single — Single Symbol Dashboard (Streamlit)
- Sidebar: symbol, exchange, interval, overlay/subplot multiselect
st.plotly_chart() for interactive charts
st.metric() for LTP, Change, RSI, EMA stats
- Auto-refresh via checkbox +
st.rerun()
- Template:
rules/assets/streamlit_basic/app.py
streamlit-multi — MTF Analysis (Streamlit)
- 2x2 grid via
st.columns(2) for 4 timeframes
- Candlestick + EMA overlay per timeframe
- Confluence summary with
st.success()/st.error()/st.warning()
st.metric() cards for each timeframe trend
- Template:
rules/assets/streamlit_multi/app.py
streamlit-scanner — Scanner Dashboard (Streamlit)
- Sidebar: scan type selector, run button
st.progress() during scan
st.dataframe() for results table
st.download_button() for CSV export
Running the Dashboard
After creating the app, provide instructions:
Dash:
cd dashboards/{dashboard_name}
python app.py
# Open http://127.0.0.1:8050 in browser
Streamlit:
cd dashboards/{dashboard_name}
streamlit run app.py
# Open http://localhost:8501 in browser
Example Usage
/indicator-dashboard single SBIN
/indicator-dashboard multi-timeframe RELIANCE
/indicator-dashboard scanner-dashboard
/indicator-dashboard streamlit-single SBIN
/indicator-dashboard streamlit-multi RELIANCE
/indicator-dashboard streamlit-scanner
1---2name: indicator-dashboard3description: Build a web dashboard for technical indicator analysis using Plotly Dash or Streamlit. Supports single-symbol, multi-symbol, and multi-timeframe layouts with real-time refresh.4---5
6Create a web dashboard for interactive technical analysis using Plotly Dash or Streamlit.
7
8## Arguments
9
10Parse `$ARGUMENTS` as: type symbol
11
12- `$0` = dashboard type. Default: single
13 - **Dash types**: `single`, `multi-symbol`, `multi-timeframe`, `scanner-dashboard`
14 - **Streamlit types**: `streamlit-single`, `streamlit-multi`, `streamlit-scanner`
15- `$1` = symbol (e.g., SBIN, RELIANCE). Default: SBIN
16
17If no arguments, ask the user what kind of dashboard they want and whether they prefer Dash or Streamlit.
18
19**Framework choice**: Plotly Dash is the default. Build a Streamlit app ONLY when the user explicitly asks for Streamlit (says "streamlit" or picks a `streamlit-*` type). Never silently switch frameworks.
20
21## Instructions
22
231. Read the indicator-expert rules, especially:
24 - `rules/dashboard-patterns.md` — Dash app patterns
25 - `rules/streamlit-patterns.md` — Streamlit app patterns
26 - `rules/plotting.md` — Chart patterns
27 - `rules/data-fetching.md` — Data loading
282. Create `dashboards/{dashboard_name}/` directory (on-demand)
293. Create `app.py` in `dashboards/{dashboard_name}/`
304. Use the matching template from `rules/assets/`
31
32### Dashboard Requirements
33
34All dashboards must include:
35- **Dark theme**: Dash uses `dbc.themes.DARKLY`; Streamlit uses `[theme] base = "dark"` or CSS injection
36- **Symbol input**: Text input or dropdown for symbol selection
37- **Exchange selector**: NSE, BSE, NFO, NSE_INDEX
38- **Interval selector**: 1m, 5m, 15m, 1h, D
39- **Indicator selectors**: Checkboxes/multiselect for overlay and subplot indicators
40- **Interactive chart**: Plotly chart with `template="plotly_dark"`, `xaxis_type="category"`
41- **Stats display**: Key metrics (LTP, Change, Volume, indicator values)
42- **Auto-refresh**: Dash uses `dcc.Interval`; Streamlit uses `st.rerun()` with `time.sleep()`
43- **Load `.env`** from project root via `find_dotenv()`
44
45### Dash Dashboard Types
46
47#### `single` — Single Symbol Dashboard (Dash)
48- One symbol with configurable indicators
49- Overlays: EMA, SMA, Bollinger, Supertrend, Ichimoku (checkboxes)
50- Subplots: RSI, MACD, Stochastic, Volume, ADX, OBV (checkboxes)
51- Stats panel: LTP, day change, volume, selected indicator values
52- Template: `rules/assets/dashboard_basic/app.py`
53
54#### `multi-symbol` — Multi-Symbol Watchlist (Dash)
55- 4-6 symbols in a grid layout
56- Each cell shows candlestick + one overlay indicator
57- Bottom row: RSI comparison across all symbols
58- Symbol list editable via input
59
60#### `multi-timeframe` — MTF Analysis (Dash)
61- 4-panel grid: 5m, 15m, 1h, D for same symbol
62- Same indicators computed on each timeframe
63- Confluence summary: "3/4 timeframes bullish"
64- Template: `rules/assets/dashboard_multi/app.py`
65
66#### `scanner-dashboard` — Live Scanner (Dash)
67- Watchlist of 10+ symbols
68- Table showing: Symbol, LTP, RSI, EMA trend, Signal
69- Color-coded rows (green=bullish, red=bearish)
70- Click symbol to show detailed chart
71- Auto-refresh every 30 seconds
72
73### Streamlit Dashboard Types
74
75#### `streamlit-single` — Single Symbol Dashboard (Streamlit)
76- Sidebar: symbol, exchange, interval, overlay/subplot multiselect
77- `st.plotly_chart()` for interactive charts
78- `st.metric()` for LTP, Change, RSI, EMA stats
79- Auto-refresh via checkbox + `st.rerun()`
80- Template: `rules/assets/streamlit_basic/app.py`
81
82#### `streamlit-multi` — MTF Analysis (Streamlit)
83- 2x2 grid via `st.columns(2)` for 4 timeframes
84- Candlestick + EMA overlay per timeframe
85- Confluence summary with `st.success()`/`st.error()`/`st.warning()`
86- `st.metric()` cards for each timeframe trend
87- Template: `rules/assets/streamlit_multi/app.py`
88
89#### `streamlit-scanner` — Scanner Dashboard (Streamlit)
90- Sidebar: scan type selector, run button
91- `st.progress()` during scan
92- `st.dataframe()` for results table
93- `st.download_button()` for CSV export
94
95### Running the Dashboard
96
97After creating the app, provide instructions:
98
99**Dash:**
100```bash
101cd dashboards/{dashboard_name}
102python app.py
103# Open http://127.0.0.1:8050 in browser
104```
105
106**Streamlit:**
107```bash
108cd dashboards/{dashboard_name}
109streamlit run app.py
110# Open http://localhost:8501 in browser
111```
112
113## Example Usage
114
115`/indicator-dashboard single SBIN`
116`/indicator-dashboard multi-timeframe RELIANCE`
117`/indicator-dashboard scanner-dashboard`
118`/indicator-dashboard streamlit-single SBIN`
119`/indicator-dashboard streamlit-multi RELIANCE`
120`/indicator-dashboard streamlit-scanner`