indicator-expert
OpenAlgo indicator expert. Use when user asks about technical indicators, charting, plotting indicators, creating custom indicators, building dashboards, real-time feeds, scanning stocks, indicator combinations, or using openalgo.ta. Also triggers for indicator functions (sma, ema, rsi, macd, supert
By marketcalls · 577 installs
npx skills add marketcalls/openalgo-indicator-skills --skill indicator-expert
Source repository · Upstream listing
OpenAlgo Indicator Expert Skill
Environment
Python 3.12+ (required by openalgo 2.x) with openalgo, pandas, numpy, plotly, dash, streamlit
Data sources: OpenAlgo (Indian markets via client.history() , client.quotes() , client.depth() ), yfinance (US/Global)
Real time: OpenAlgo WebSocket ( client.connect() , subscribe ltp , subscribe quote , subscribe depth )
Indicators: openalgo.ta (ALWAYS — 100+ indicators computed by a compiled Rust core, full speed from the first call)
Charts: Plotly with template="plotly dark"
Dashboards: Plotly Dash with dash bootstrap components (default) OR Streamlit with st.plotly chart() — use Streamlit only when the user explicitly asks for it
Custom indicators: vectorized NumPy composed from openalgo.ta primitives (Rust core — no JIT, no warmup)
API keys loaded from single root .env via python dotenv + find dotenv() — never hardcode keys
Scripts go in appropriate directories (charts/, dashboards/, custom indicators/, scanners/) created on demand
Never use icons/emojis in code or logger output
Critical Rules
1. ALWAYS use openalgo.ta for ALL technical indicators. Never reimplement what already exists in the library.
2. Data normalization : Always convert DataFrame index to datetime, sort, and strip timezone after fetching.
3. Signal cleaning : Always use ta.exrem() after generating raw buy/sell signals. Always .fillna(False) before exrem.
4. Plotly dark theme : All charts use template="plotly dark" with xaxis type="category" for candlesticks.
5. Custom indicators : Compose from openalgo.ta primitives ( ta.sma , ta.stdev , ta.bbands , ...) plus vectorized NumPy. Never reimplement built ins; no JIT or warmup is needed.
6. Input flexibility : openalgo.ta accepts numpy arrays, pandas Series, or lists. Output matches input type.
7. WebSocket feeds : Use client.connect() , client.subscribe ltp() / subscribe quote() / subscribe depth() for real time data.
8. Environment : Load .env from project root via find dotenv() — never hardcode API keys.
9. Market detection : If symbol looks Indian (SBIN, RELIANCE, NIFTY), use OpenAlgo. If US (AAPL, MSFT), use yfinance.
10. Always explain chart outputs in plain language so traders understand what the indicator shows.
Data Source Priority
Market Data Source Method Example Symbols
India (equity) OpenAlgo client.history() SBIN, RELIANCE, INFY
India (index) OpenAlgo client.history(exchange="NSE INDEX") NIFTY, BANKNIFTY
India (F&O) OpenAlgo client.history(exchange="NFO") NIFTY30DEC25FUT
US/Global yfinance yf.download() AAPL, MSFT, SPY
OpenAlgo API Methods for Data
Method Purpose Returns
client.history(symbol, exchange, interval, start date, end date) OHLCV candles DataFrame (timestamp, open, high, low, close, volume)
client.quotes(symbol, exchange) Real time snapshot Dict (open, high, low, ltp, bid, ask, prev close, volume)
client.multiquotes(symbols=[...]) Multi symbol quotes List of quote dicts
client.depth(symbol, exchange) Market depth (L5) Dict (bids, asks, ohlc, volume, oi)
client.intervals() Available intervals Dict (minutes, hours, days, weeks, months)
client.optionchain(underlying, exchange, expiry date, strike count) Option chain around ATM Dict (underlying ltp, atm strike, chain with ce/pe per strike)
client.optiongreeks(symbol, exchange, interest rate, ...) Option greeks + IV Dict (greeks: delta/gamma/theta/vega/rho, implied volatility, days to expiry)
client.expiry(symbol, exchange, instrumenttype) Expiry dates list Dict (data: list of expiry dates)
client.connect() WebSocket connect None (sets up WS connection)
client.subscribe ltp(instruments, callback) Live LTP stream Callback with {symbol, exchange, ltp}
client.subscribe quote(instruments, callback) Live quote stream Callback with {symbol, exchange, ohlc, ltp, volume}
client.subscribe depth(instruments, callback) Live depth stream Callback with {symbol, exchange, bids, asks}
Indicator Library Reference
All indicators accessed via from openalgo import ta :
Trend (20)
ta.sma , ta.ema , ta.wma , ta.dema , ta.tema , ta.hma , ta.vwma , ta.alma , ta.kama , ta.zlema , ta.t3 , ta.frama , ta.supertrend , ta.ichimoku , ta.chande kroll stop , ta.trima , ta.mcginley , ta.vidya , ta.alligator , ta.ma envelopes
Momentum (9)
ta.rsi , ta.macd , ta.stochastic , ta.cci , ta.williams r , ta.bop , ta.elder ray , ta.fisher , ta.crsi
Volatility (16)
ta.atr , ta.bbands , ta.keltner , ta.donchian , ta.chaikin volatility , ta.natr , ta.rvi , ta.ultimate oscillator , ta.true range , ta.massindex , ta.bb percent , ta.bb width , ta.chandelier exit , ta.historical volatility , ta.ulcer index , ta.starc
Volume (15)
ta.obv , ta.obv smoothed , ta.vwap , ta.mfi , ta.adl , ta.cmf , ta.emv , ta.force index , ta.nvi , ta.pvi , ta.volosc , ta.vroc , ta.kvo , ta.pvt , ta.rvol
Oscillators (20+)
ta.cmo , ta.trix , ta.uo oscillator , ta.awesome oscillator , ta.accelerator oscillator , ta.ppo , ta.po , ta.dpo , ta.aroon oscillator , ta.stoch rsi , ta.rvi oscillator , ta.cho , ta.chop , ta.kst , ta.tsi , ta.vortex , ta.gator oscillator , ta.stc , ta.coppock , ta.roc
Statistical (9)
ta.linreg , ta.lrslope , ta.correlation , ta.beta , ta.variance , ta.tsf , ta.median , ta.mode , ta.median bands
Hybrid (6+)
ta.adx , ta.dmi , ta.aroon , ta.pivot points , ta.sar , ta.williams fractals , ta.rwi
TA Lib Compatible (18, new in openalgo 2.0)
ta.mom , ta.rocp , ta.rocr , ta.rocr100 , ta.apo , ta.midpoint , ta.midprice , ta.avgprice , ta.medprice , ta.typprice , ta.wclprice , ta.plus dm , ta.minus dm , ta.dx , ta.adxr , ta.stochf , ta.linregangle , ta.linregintercept
Utilities
ta.crossover , ta.crossunder , ta.cross , ta.highest , ta.lowest , ta.change , ta.roc , ta.stdev , ta.exrem , ta.flip , ta.valuewhen , ta.rising , ta.falling
Modular Rule Files
Detailed reference for each topic is in rules/ :
Rule File Topic
[indicator catalog](rules/indicator catalog.md) Complete 100+ indicator reference with signatures and parameters
[data fetching](rules/data fetching.md) OpenAlgo history/quotes/depth, yfinance, data normalization
[plotting](rules/plotting.md) Plotly candlestick, overlay, subplot, multi panel charts
[custom indicators](rules/custom indicators.md) Building custom indicators with vectorized NumPy + ta primitives
[websocket feeds](rules/websocket feeds.md) Real time LTP/Quote/Depth streaming via WebSocket
[performance](rules/performance.md) Rust core performance, O(n) guarantees, benchmarking
[dashboard patterns](rules/dashboard patterns.md) Plotly Dash web applications with callbacks
[streamlit patterns](rules/streamlit patterns.md) Streamlit web applications with sidebar, metrics, plotly charts
[multi timeframe](rules/multi timeframe.md) Multi timeframe indicator analysis
[signal generation](rules/signal generation.md) Signal generation, cleaning, crossover/crossunder
[indicator combinations](rules/indicator combinations.md) Combining indicators for confluence analysis
[symbol format](rules/symbol format.md) OpenAlgo symbol format, exchange codes, index symbols
Chart Templates (in rules/assets/)
Template Path Description
EMA Chart assets/ema chart/chart.py EMA overlay on candlestick
RSI Chart assets/rsi chart/chart.py RSI with overbought/oversold zones
MACD Chart assets/macd chart/chart.py MACD line, signal, histogram
Supertrend assets/supertrend chart/chart.py Supertrend overlay with direction coloring
Bollinger assets/bollinger chart/chart.py Bollinger Bands with squeeze detection
Multi Indicator assets/multi indicator/chart.py Candlestick + EMA + RSI + MACD + Volume
Basic Dashboard assets/dashboard basic/app.py Single symbol Plotly Dash app
Multi Dashboard assets/dashboard multi/app.py Multi symbol multi timeframe dashboard
Streamlit Basic assets/streamlit basic/app.py Single symbol Streamlit app
Streamlit Multi assets/streamlit multi/app.py Multi timeframe Streamlit app
Custom Indicator assets/custom indicator/template.py NumPy custom indicator template (composes ta primitives)
Live Feed assets/live feed/template.py WebSocket real time indicator
Scanner assets/scanner/template.py Multi symbol indicator scanner
Quick Template: Standard Indicator Chart Script