其他
多标的技条件筛选:批量扫描观察列表找出匹配股票
需要从多个股票或观察列表中找出满足 RSI、EMA、Supertrend、MACD、ADX、Bollinger、Volume 等技术条件的标的时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 35/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 38/100 ×0.15
适用场景
多标的技条件筛选:批量扫描观察列表找出匹特定
解决思路
- 解析 `$ARGUMENTS` 为 `scan-type watchlist`:`$0` 是扫描类型,默认 `rsi-oversold`;`$1` 是观察列表,默认 `nifty50`;无参数时询问用户要扫描什么。
- 读取 indicator-expert rules 作为参考。
- 按需创建 `scanners/{scan_type}/` 目录。
- 创建 `{scan_type}_scanner.py`。
- 脚本必须从项目根目录加载 `.env`。
- 定义 watchlist(预定义或自定义)。
- 对每个 symbol 通过 `client.history()` 获取数据。
- 使用 `openalgo.ta` 计算指标。
- 检查扫描条件。
- 将结果打印为格式化表格。
- 将结果保存到 CSV。
- 可选地通过 `client.quotes()` 获取实时 LTP 作为当前值。
- 使用扫描逻辑模式:初始化 `results = []`;遍历 `watchlist`;调用 `fetch_data(symbol, exchange, interval)` 得到 `df`;取 `df` 的 `close` 列;计算指标,例如 `rsi = ta.rsi(close, 14)`;取当前值,例如 `current_rsi = rsi.iloc[-1]`;检查条件,例如 `if current_rsi < 30`;满足时向 `results` 追加包含 `symbol`、`ltp`、`rsi`、`signal` 字段的记录;将 `results` 转成 `pd.DataFrame`;用 `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-overbought`:RSI(14) > 70。
- 内置 `ema-crossover`:EMA(10) 在最近 3 根 bars 上穿 EMA(20)。
- 内置 `ema-crossunder`:EMA(10) 在最近 3 根 bars 下穿 EMA(20)。
- 内置 `supertrend-buy`:Supertrend 方向变为 -1(uptrend)。
- 内置 `supertrend-sell`:Supertrend 方向变为 1(downtrend)。
- 内置 `macd-crossover`:MACD 在最近 3 根 bars 上穿 Signal。
- 内置 `adx-trending`:ADX > 25(强趋势)。
- 内置 `bb-squeeze`:Bollinger Width 处于 20-bar low(波动率挤压)。
- 内置 `volume-spike`:Volume > 2x 20 日均值。
- 内置 `custom`:询问用户条件;可扫描任意指标。
- 预定义 watchlist `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。
- 预定义 watchlist `banknifty` 使用 BANKNIFTY 列表:HDFCBANK、ICICIBANK、KOTAKBANK、AXISBANK、SBIN、INDUSINDBK、BANKBARODA、FEDERALBNK、PNB、IDFCFIRSTB、BANDHANBNK、AUBANK。
- 输出格式:打印表格列 `Symbol`、`LTP`、`RSI(14)`、`Signal`;底部输出类似 `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`。
适用边界 · 注意事项
- 未配置 OpenAlgo/`client`、`.env` 或无法获取历史/实时行情数据时不适用。
- 需要执行交易下单、仓位管理、基本面筛选或单标的快速分析时不适用。
- 没有可用观察列表且用户也不能提供自定义标的时不适用。