关于 indicator-scanner
indicator-scanner 是用于生成 Python 脚本的技能,可按技术指标条件筛选股票观察列表。它面向需要重复执行扫描并导出表格和 CSV 结果的用户。
主要功能
- 01按技术条件扫描股票
- 02支持预设和自定义扫描类型
- 03使用 openalgo.ta 指标
- 04格式化输出并保存 CSV
- 05可获取实时 LTP 报价
适用场景
- 01查找 RSI 超卖或超买股票
- 02筛选 EMA 或 MACD 交叉信号
- 03识别成交量激增或 ADX 趋势
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ marketcalls/ openalgo-indicator-skills --skill indicator-scanner安装后在 Claude Code 中输入/indicator-scanner确认已加载。
详细介绍
创建一个多标的指标扫描器,根据技术条件筛选股票。
参数
按以下格式解析 $ARGUMENTS:scan-type watchlist
$0= 扫描类型(例如,rsi-oversold、rsi-overbought、ema-crossover、supertrend-buy、supertrend-sell、macd-crossover、adx-trending、custom)。默认值:rsi-oversold$1= 观察列表(例如,nifty50、banknifty、custom)。默认值:nifty50
如果没有参数,请询问用户想要扫描什么。
说明
- 阅读 indicator-expert 规则以供参考
- 按需创建
scanners/{scan_type}/目录 - 创建
{scan_type}_scanner.py - 脚本必须:
- 从项目根目录加载
.env - 定义观察列表(预定义或自定义)
- 通过
client.history()获取每个标的的数据 - 使用
openalgo.ta计算指标 - 检查扫描条件
- 将结果打印为格式化表格
- 将结果保存为 CSV
- 可选:通过
client.quotes()获取实时 LTP,以显示当前值
- 从项目根目录加载
扫描逻辑模式
results = []
for symbol in watchlist:
df = fetch_data(symbol, exchange, interval)
close = df["close"]
# Compute indicator
rsi = ta.rsi(close, 14)
current_rsi = rsi.iloc[-1]
# Check condition
if current_rsi < 30: # RSI oversold
results.append({
"symbol": symbol,
"ltp": close.iloc[-1],
"rsi": current_rsi,
"signal": "OVERSOLD",
})
# Print table
df_results = pd.DataFrame(results)
print(df_results.to_string(index=False))
df_results.to_csv(script_dir / f"{scan_type}_results.csv", index=False)
预定义扫描类型
| 扫描类型 | 条件 | 指标 |
|---|---|---|
rsi-oversold | RSI(14) < 30 | RSI |
rsi-overbought | RSI(14) > 70 | RSI |
ema-crossover | EMA(10) 在最近 3 根柱线上穿 EMA(20) | EMA |
ema-crossunder | EMA(10) 在最近 3 根柱线下穿 EMA(20) | EMA |
supertrend-buy | Supertrend 方向变为 -1(上升趋势) | Supertrend |
supertrend-sell | Supertrend 方向变为 1(下降趋势) | Supertrend |
macd-crossover | MACD 在最近 3 根柱线上穿 Signal | MACD |
adx-trending | ADX > 25(强趋势) | ADX |
bb-squeeze | Bollinger Width 处于 20 根柱线低位(波动率挤压) | Bollinger |
volume-spike | 成交量 > 20 日均量的 2 倍 | 成交量 |
custom | 询问用户条件 | 任意 |
预定义观察列表
NIFTY 50(nifty50)
NIFTY50 = [
"ADANIENT", "ADANIPORTS", "APOLLOHOSP", "ASIANPAINT", "AXISBANK",
"BAJAJ-AUTO", "BAJFINANCE", "BAJAJFINSV", "BPCL", "BHARTIARTL",
"BRITANNIA", "CIPLA", "COALINDIA", "DIVISLAB", "DRREDDY",
"EICHERMOT", "GRASIM", "HCLTECH", "HDFCBANK", "HDFCLIFE",
"HEROMOTOCO", "HINDALCO", "HINDUNILVR", "ICICIBANK", "INDUSINDBK",
"INFY", "ITC", "JSWSTEEL", "KOTAKBANK", "LT",
"M&M", "MARUTI", "NESTLEIND", "NTPC", "ONGC",
"POWERGRID", "RELIANCE", "SBILIFE", "SBIN", "SUNPHARMA",
"TCS", "TATACONSUM", "TATAMOTORS", "TATASTEEL", "TECHM",
"TITAN", "ULTRACEMCO", "UPL", "WIPRO",
]
Bank NIFTY(banknifty)
BANKNIFTY = [
"HDFCBANK", "ICICIBANK", "KOTAKBANK", "AXISBANK", "SBIN",
"INDUSINDBK", "BANKBARODA", "FEDERALBNK", "PNB", "IDFCFIRSTB",
"BANDHANBNK", "AUBANK",
]
输出格式
Symbol LTP RSI(14) Signal
------ --- ------- ------
SBIN 769.60 28.4 OVERSOLD
TATASTEEL 142.30 25.1 OVERSOLD
COALINDIA 385.00 29.7 OVERSOLD
Scan: RSI Oversold (<30) | Watchlist: NIFTY 50 | Date: 2025-02-28
Found 3 / 50 symbols matching condition
Results saved to: scanners/rsi_oversold/rsi_oversold_results.csv
示例用法
/indicator-scanner rsi-oversold nifty50
/indicator-scanner ema-crossover banknifty
/indicator-scanner supertrend-buy nifty50
/indicator-scanner volume-spike nifty50
/indicator-scanner custom
评论
支持 Markdown