OPEN-SOURCE SCRIPT
Updated 4h 相对超跌筛选器 · Webhook v2.0

## 指标用途
用于你的「框架第2步」:在**美股 RTH**里,按**4h 收盘**(06:30–10:30 PT 为首根)筛出相对大盘/行业**显著超跌**且结构健康的候选标的,并可**通过 Webhook 自动推送**`symbol + ts`给下游 AI 执行新闻甄别(第3步)与进出场评估(第4步)。
## 工作原理(核心逻辑)
* **结构健康**:最近 80 根 4h 中,收盘 > 4h_SMA50 的占比 ≥ 阈值(默认 55%)。
* **跌深条件**:4h 跌幅 ≤ −4%,且近两根累计(≈8h)≤ −6%。
* **相对劣化**:相对大盘(SPY/QQQ)与相对行业(XLK/XLF/… 或 KWEB/CQQQ)各 ≤ −3%。
* **流动性与价格**:ADV20_USD ≥ 2000 万;价格 ≥ 3 美元。
* **只在 4h 收盘刻评估与触发**,历史点位全部保留,便于回放核验。
* **冷却**:同一标的信号间隔 ≥ N 天(默认 10)。
## 主要输入参数
* **bench / sector**:大盘与行业基准(例:SPY/QQQ,XLK/XLF/XLY;中概用 KWEB/CQQQ)。
* **advMinUSD / priceMin**:20 日美元成交额下限、最小价格。
* **pctAboveTh**:结构健康阈值(%)。
* **drop4hTh / drop8hTh**:4h/8h 跌幅阈值(%)。
* **relMktTh / relSecTh**:相对大盘/行业阈值(%)。
* **coolDays**:冷却天数。
* **fromDate**:仅显示此日期后的历史信号(图表拥挤时可用)。
* **showTable / tableRows**:是否显示右上角“最近信号表”及行数。
## 图表信号
* **S2 绿点**:当根 4h 收盘满足全部筛选条件。
* **右上角表格**:滚动列出最近 N 条命中(`SYMBOL @ yyyy-MM-dd HH:mm`,按图表本地时区)。
## Webhook 联动(生产用)
1. 添加指标 → 🔔 新建警报(Alert):
* **Condition**:`Any alert() function call`
* **Options**:`Once per bar close`
* **Webhook URL**:填你的接收地址(可带 `?token=...`)
* **Message**:留空(脚本内部 `alert(payload)` 会发送 JSON)。
2. 典型 JSON 载荷(举例):
```json
{
"event": "step2_signal",
"symbol": "LULU",
"symbol_id": "NASDAQ:LULU",
"venue": "NASDAQ",
"bench": "SPY",
"sector": "XLY",
"ts_bar_close_ms": 1754524200000,
"ts_bar_close_local": "2025-06-06 10:30",
"price_close": 318.42,
"ret_4h_pct": -5.30,
"ret_8h_pct": -7.45,
"rel_mkt_pct": -4.90,
"rel_sec_pct": -3.80
}
```
> 建议以 `symbol + ts_bar_close_ms` 做去重键;接收端先快速 `200 OK`,后续异步处理并交给第3步 AI。
## 使用建议
* **时间框架**:任意周期可用,指标内部统一拉取 240 分钟数据并仅在 4h 收盘刻触发。
* **行业映射**:尽量选与个股业务最贴近的 ETF;中国 ADR 可用 `PGJ/KWEB/CQQQ` 叠加细分行业对照。
* **回放验证**:Bar Replay **不发送真实 Webhook**;仅用于查看历史命中与表格。测试接收端请用 Alert 面板的 **Test**。
## 适配说明
* Pine Script **v5**。
* 不含成分筛查逻辑(请在你的 500–600 只候选池内使用)。
* 数字常量不使用下划线分隔;如需大数可用 `20000000` 或 `2e7`。
## 常见问题
* ⛔️ 报错 `tostring(...)`:Pine 无时间格式化重载,脚本已内置 `timeToStr()`。
* ⛔️ `syminfo.exchange` 不存在:已改用 `syminfo.prefix`(交易所前缀)。
* ⛔️ 多行字符串拼接报 `line continuation`:本脚本已用括号包裹或 `str.format` 规避。
## 免责声明
该指标仅供筛选与研究使用,不构成投资建议。请结合你的第3步新闻/基本面甄别与第4步执行规则共同决策。
用于你的「框架第2步」:在**美股 RTH**里,按**4h 收盘**(06:30–10:30 PT 为首根)筛出相对大盘/行业**显著超跌**且结构健康的候选标的,并可**通过 Webhook 自动推送**`symbol + ts`给下游 AI 执行新闻甄别(第3步)与进出场评估(第4步)。
## 工作原理(核心逻辑)
* **结构健康**:最近 80 根 4h 中,收盘 > 4h_SMA50 的占比 ≥ 阈值(默认 55%)。
* **跌深条件**:4h 跌幅 ≤ −4%,且近两根累计(≈8h)≤ −6%。
* **相对劣化**:相对大盘(SPY/QQQ)与相对行业(XLK/XLF/… 或 KWEB/CQQQ)各 ≤ −3%。
* **流动性与价格**:ADV20_USD ≥ 2000 万;价格 ≥ 3 美元。
* **只在 4h 收盘刻评估与触发**,历史点位全部保留,便于回放核验。
* **冷却**:同一标的信号间隔 ≥ N 天(默认 10)。
## 主要输入参数
* **bench / sector**:大盘与行业基准(例:SPY/QQQ,XLK/XLF/XLY;中概用 KWEB/CQQQ)。
* **advMinUSD / priceMin**:20 日美元成交额下限、最小价格。
* **pctAboveTh**:结构健康阈值(%)。
* **drop4hTh / drop8hTh**:4h/8h 跌幅阈值(%)。
* **relMktTh / relSecTh**:相对大盘/行业阈值(%)。
* **coolDays**:冷却天数。
* **fromDate**:仅显示此日期后的历史信号(图表拥挤时可用)。
* **showTable / tableRows**:是否显示右上角“最近信号表”及行数。
## 图表信号
* **S2 绿点**:当根 4h 收盘满足全部筛选条件。
* **右上角表格**:滚动列出最近 N 条命中(`SYMBOL @ yyyy-MM-dd HH:mm`,按图表本地时区)。
## Webhook 联动(生产用)
1. 添加指标 → 🔔 新建警报(Alert):
* **Condition**:`Any alert() function call`
* **Options**:`Once per bar close`
* **Webhook URL**:填你的接收地址(可带 `?token=...`)
* **Message**:留空(脚本内部 `alert(payload)` 会发送 JSON)。
2. 典型 JSON 载荷(举例):
```json
{
"event": "step2_signal",
"symbol": "LULU",
"symbol_id": "NASDAQ:LULU",
"venue": "NASDAQ",
"bench": "SPY",
"sector": "XLY",
"ts_bar_close_ms": 1754524200000,
"ts_bar_close_local": "2025-06-06 10:30",
"price_close": 318.42,
"ret_4h_pct": -5.30,
"ret_8h_pct": -7.45,
"rel_mkt_pct": -4.90,
"rel_sec_pct": -3.80
}
```
> 建议以 `symbol + ts_bar_close_ms` 做去重键;接收端先快速 `200 OK`,后续异步处理并交给第3步 AI。
## 使用建议
* **时间框架**:任意周期可用,指标内部统一拉取 240 分钟数据并仅在 4h 收盘刻触发。
* **行业映射**:尽量选与个股业务最贴近的 ETF;中国 ADR 可用 `PGJ/KWEB/CQQQ` 叠加细分行业对照。
* **回放验证**:Bar Replay **不发送真实 Webhook**;仅用于查看历史命中与表格。测试接收端请用 Alert 面板的 **Test**。
## 适配说明
* Pine Script **v5**。
* 不含成分筛查逻辑(请在你的 500–600 只候选池内使用)。
* 数字常量不使用下划线分隔;如需大数可用 `20000000` 或 `2e7`。
## 常见问题
* ⛔️ 报错 `tostring(...)`:Pine 无时间格式化重载,脚本已内置 `timeToStr()`。
* ⛔️ `syminfo.exchange` 不存在:已改用 `syminfo.prefix`(交易所前缀)。
* ⛔️ 多行字符串拼接报 `line continuation`:本脚本已用括号包裹或 `str.format` 规避。
## 免责声明
该指标仅供筛选与研究使用,不构成投资建议。请结合你的第3步新闻/基本面甄别与第4步执行规则共同决策。
Release Notes
4h 相对超跌筛选器 · Webhook v2.0## 作用
在**美股 RTH**以**4h收盘**为准筛出:结构健康、当根跌幅大且**相对大盘/行业显著更弱**的标的;并在触发时通过 **Webhook** 把 `symbol + ts` 等关键字段 POST 给你的后续 AI(“第3步新闻甄别 / 第4步执行”)。
## 触发机制(严格在已收盘的4h上)
* 只在**新一根 4h 开始的那一刻**评估上一根 4h 的数据;
* 告警与显示使用**上一根 4h 的收盘时间**(例:06:30–10:30 这根 → 时间写 10:30);
* 图上标记 `offset = -1`,绿点画在**刚收完的那根 4h**上;
* 可选“**仅监测每日首根 4h**(06:30–10:30)”。
## 核心判定(上一根 4h 数据)
1. **结构健康**:近 80 根 4h 中,`收盘 > 4h_SMA50` 的**占比 ≥ 阈值**(默认 55%)。
* 注意:占比在 **4h 周期内一次性计算**,与图表分辨率无关。
2. **跌深**:上一根 `4h_ret ≤ −4%` 且 `8h_ret ≤ −6%`。
3. **相对劣化**:
* 对**大盘**(SPY/QQQ 二选一)`ret_4h − ret_4h_bench ≤ −3%`;
* 对**行业ETF**(如 XLK/XLF/XLY,或 KWEB/CQQQ)`ret_4h − ret_4h_sector ≤ −3%`。
4. **流动性/价格**:`ADV20_USD ≥ 2000万`、`收盘价 ≥ 3`。
5. **冷却**:同一标的信号间隔 ≥ N 天(默认 10)。
## 主要参数
* **bench / sector**:大盘与行业基准。
* **advMinUSD / priceMin**:流动性与最低价过滤。
* **pctAboveTh / drop4hTh / drop8hTh / relMktTh / relSecTh**:阈值组。
* **coolDays**:冷却天数。
* **onlyFirst**:仅每日首根 4h。
* **fromDate**:仅显示该日期之后的历史信号(图表本地时区)。
* **showTable / tableRows**:右上角“最近信号表”。
## 图表元素
* **S2 绿点**:上一根 4h 满足全部条件。
* **最近信号表**:滚动展示 `SYMBOL @ yyyy-MM-dd HH:mm`(本地时区)。
## Webhook 设置(生产用)
1. 加载脚本 → 点击🔔建立警报:
* **Condition**:`Any alert() function call`
* **Options**:`Once per bar close`
* **Webhook URL**:填写你的接收地址(可带 `?token=...`)
* **Message**:可留空(脚本内部 `alert(payload)` 会发送 JSON)
2. 典型 JSON(字段以实际为准):
```json
{
"event": "step2_signal",
"symbol": "LULU",
"symbol_id": "NASDAQ:LULU",
"venue": "NASDAQ",
"bench": "SPY",
"sector": "XLY",
"ts_bar_close_ms": 1754524200000,
"ts_bar_close_local": "2025-06-06 10:30",
"price_close": 318.42,
"ret_4h_pct": -5.30,
"ret_8h_pct": -7.45,
"rel_mkt_pct": -4.90,
"rel_sec_pct": -3.80,
"pct_above_sma50_4h": 62.5,
"adv20_usd": 25500000
}
```
**对接建议**:用 `symbol + ts_bar_close_ms` 作为去重键;接收端快速返回 200,再异步处理并交给 AI。
## 使用与验证
* 可在任意分辨率图表使用——内部统一拉取 **240 分钟**与**日级**数据;
* **Bar Replay 不会发送真实 Webhook**,但会显示历史命中与“最近信号表”;测试接收端请用警报面板的 **Test**;
* 如需严格按 PT 计时,将图表时区设为 `America/Los_Angeles`。
## 常见问题
* **`ta.sum` 报错**:本版本已改为二值 `ta.sma(...,80)*100`;无需 `ta.sum`。
* **数字带下划线**:Pine 不支持 `20_000_000`,请用 `20000000` 或 `2e7`。
* **`syminfo.exchange`**:Pine v5 无此字段;脚本使用 `syminfo.prefix`(交易所前缀)。
* **提前出现“最近信号”**:已修为**上一根 4h 收盘**才记录与上报;表格与 Webhook 的时间均为上一根 4h 的收盘。
## 免责声明
仅用于筛选与研究,不构成投资建议。请结合你的“第3步新闻甄别 / 第4步执行与风控”共同决策。
— end —
Open-source script
In true TradingView spirit, the creator of this script has made it open-source, so that traders can review and verify its functionality. Kudos to the author! While you can use it for free, remember that republishing the code is subject to our House Rules.
Disclaimer
The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.
Open-source script
In true TradingView spirit, the creator of this script has made it open-source, so that traders can review and verify its functionality. Kudos to the author! While you can use it for free, remember that republishing the code is subject to our House Rules.
Disclaimer
The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.