mcpField
I
indicator-scanner

indicator-scanner

github.com/marketcalls数据与数据库20582 次安装20 周前更新
代码仓库

关于 indicator-scanner

indicator-scanner 是用于生成 Python 脚本的技能,可按技术指标条件筛选股票观察列表。它面向需要重复执行扫描并导出表格和 CSV 结果的用户。

主要功能

  1. 01按技术条件扫描股票
  2. 02支持预设和自定义扫描类型
  3. 03使用 openalgo.ta 指标
  4. 04格式化输出并保存 CSV
  5. 05可获取实时 LTP 报价

适用场景

  1. 01查找 RSI 超卖或超买股票
  2. 02筛选 EMA 或 MACD 交叉信号
  3. 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

如果没有参数,请询问用户想要扫描什么。

说明

  1. 阅读 indicator-expert 规则以供参考
  2. 按需创建 scanners/{scan_type}/ 目录
  3. 创建 {scan_type}_scanner.py
  4. 脚本必须:
    • 从项目根目录加载 .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-oversoldRSI(14) < 30RSI
rsi-overboughtRSI(14) > 70RSI
ema-crossoverEMA(10) 在最近 3 根柱线上穿 EMA(20)EMA
ema-crossunderEMA(10) 在最近 3 根柱线下穿 EMA(20)EMA
supertrend-buySupertrend 方向变为 -1(上升趋势)Supertrend
supertrend-sellSupertrend 方向变为 1(下降趋势)Supertrend
macd-crossoverMACD 在最近 3 根柱线上穿 SignalMACD
adx-trendingADX > 25(强趋势)ADX
bb-squeezeBollinger 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