指标源码
{RSI威廉}
50,DOTLINE;20;80;
DRAWBAND(80,RGB(0,30,255),100,RGB(0,30,255));
DRAWBAND(20,RGB(0,150,200),0,RGB(0,150,200));
DRAWTEXT_FIX(1,0.02,0,0,'★RSI6与RSA12金叉参考买入.死叉参考卖出. ★威廉WR大于80买入区.小于20卖出区.'),COLOR00FFFF,LINETHICK3;
CC:=FORCAST(C,3); HH:=FORCAST(H,3); LL:=FORCAST(L,3);
LC:=REF(WMA((2*CC+HH+LL)/4,3),1);
RSI6:SMA(MAX(CLOSE-LC,0),6,1)/SMA(ABS(CLOSE-LC),6,1)*100,COLORFF9900,LINETHICK0;
RSI12:SMA(MAX(CLOSE-LC,0),12,1)/SMA(ABS(CLOSE-LC),12,1)*100,COLOR00FFFF,LINETHICK0;
DRAWBAND(RSI6,RGB(255,80,0),RSI12,RGB(0,255,100));
SMA(MAX(CLOSE-LC,0),6,1)/SMA(ABS(CLOSE-LC),6,1)*100,COLORFF9900,LINETHICK3;
IF(RSI6>REF(RSI6,1),RSI6,DRAWNULL),COLOR0000FF,LINETHICK4;
SMA(MAX(CLOSE-LC,0),12,1)/SMA(ABS(CLOSE-LC),12,1)*100,COLOR00FFFF,LINETHICK2;
威廉WR:FORCAST(100*(HHV(HH,14)-CC)/(HHV(HH,14)-LLV(LL,14)),5),COLOR00FFFF,DOTLINE;
IF(威廉WR>80 ,威廉WR,DRAWNULL),COLOR00FF00,LINETHICK3;
IF(威廉WR<20,威廉WR,DRAWNULL),COLOR0000FF,LINETHICK3;
1. 指标的整体思路
RSI 威廉(通达信代码名称 RSI威廉)是把 RSI(相对强弱指标) 与 Williams %R(威廉指标) 两大经典摆动指标放在同一幅图里,利用它们的“共振”来增强买卖信号的可靠性。
- RSI 用来判断 超买/超卖,常用的周期是 6 日(RSI6)和 12 日(RSI12),两者的交叉(金叉/死叉)被视为短期趋势的转换点。
- Williams %R(代码中叫 威廉WR)同样用于判别 超买(<20) 与 超卖(>80),在 14 日周期内计算。
两者的优势在于:
- 互补:RSI 侧重 价格动量,WR 侧重 价格波动幅度,二者同向时信号更可靠。
- 可视化:把两条指标画在同一坐标系,并通过 颜色/线形 把关键区间(买入/卖出)突出显示,方便操盘手一眼捕捉信号。
提醒:本指标仅提供参考信号,实际买入卖出仍需结合成交量、趋势线、大盘环境等因素自行判断。
2. 代码逐行解析
下面的说明以 通达信(TDX) 语法为准,代码中已给出中文注释,您可以对照查看。
// 1️⃣ 绘制辅助水平线
50,DOTLINE; // 中轴 50(RSI 中位)用点线
20;80; // 两条关键阈值 20、80(WR 超买/超卖)
// 2️⃣ 背景带(可视化区间)
DRAWBAND(80,RGB(0,30,255),100,RGB(0,30,255)); // 80‑100 区间用淡蓝色背景
DRAWBAND(20,RGB(0,150,200),0,RGB(0,150,200)); // 0‑20 区间用淡青色背景
// 3️⃣ 界面说明文字(左上角固定显示)
DRAWTEXT_FIX(1,0.02,0,0,
'★RSI6与RSA12金叉参考买入.死叉参考卖出. ★威廉WR大于80买入区.小于20卖出区.'
),COLOR00FFFF,LINETHICK3;
// 4️⃣ 计算基准价 LC(动态均线,使用 3 日 “预测” 后的 WMA)
CC:=FORCAST(C,3); // 3 日后收盘价的预测(用于平滑)
HH:=FORCAST(H,3); // 3 日后最高价的预测
LL:=FORCAST(L,3); // 3 日后最低价的预测
LC:=REF(WMA((2*CC+HH+LL)/4,3),1); // 2*收盘+最高+最低 的加权平均,取前一次值
// 5️⃣ RSI6 与 RSI12(基于动态基准 LC)
RSI6:SMA(MAX(CLOSE-LC,0),6,1)/SMA(ABS(CLOSE-LC),6,1)*100,COLORFF9900,LINETHICK0;
RSI12:SMA(MAX(CLOSE-LC,0),12,1)/SMA(ABS(CLOSE-LC),12,1)*100,COLOR00FFFF,LINETHICK0;
// 6️⃣ 用带状颜色把 RSI6、RSI12 合并显示(便于观察交叉)
DRAWBAND(RSI6,RGB(255,80,0),RSI12,RGB(0,255,100));
// 7️⃣ 再次绘制 RSI6(主线条),使用默认颜色(橙色)并加粗
SMA(MAX(CLOSE-LC,0),6,1)/SMA(ABS(CLOSE-LC),6,1)*100,COLORFF9900,LINETHICK3;
// 8️⃣ 若 RSI6 高于前一值,画一段 **蓝色** 粗线(表示上升动量)
IF(RSI6>REF(RSI6,1),RSI6,DRAWNULL),COLOR0000FF,LINETHICK4;
// 9️⃣ RSI12 绘制(青色)并加粗
SMA(MAX(CLOSE-LC,0),12,1)/SMA(ABS(CLOSE-LC),12,1)*100,COLOR00FFFF,LINETHICK2;
// 🔟 Williams %R(WR)——同样使用 “预测” 的最高/最低
威廉WR:FORCAST(100*(HHV(HH,14)-CC)/(HHV(HH,14)-LLV(LL,14)),5),COLOR00FFFF,DOTLINE;
// 11️⃣ 当 WR>80(超卖)时,用 **绿色** 粗线标记买入区
IF(威廉WR>80 ,威廉WR,DRAWNULL),COLOR00FF00,LINETHICK3;
// 12️⃣ 当 WR<20(超买)时,用 **蓝色** 粗线标记卖出区
IF(威廉WR<20,威廉WR,DRAWNULL),COLOR0000FF,LINETHICK3;
关键点解释
| 行号 | 关键函数 | 作用 |
|---|---|---|
| 1‑2 | 50,DOTLINE;20;80; |
绘制 RSI 中位(50)以及 WR 超买/超卖阈值(20、80)。 |
| 3‑4 | DRAWBAND |
用背景色填充 0‑20、80‑100 两个极端区间,便于一眼辨认“买入/卖出区”。 |
| 5 | DRAWTEXT_FIX |
固定在左上角的说明文字,提醒使用者 RSI 金叉/死叉、WR 区域的含义。 |
| 6‑8 | CC、HH、LL、LC |
用 FORCAST(预测)产生“未来 3 天的收盘、最高、最低”,再取其 WMA(加权移动平均)得到 LC。这是一种“平滑基准”而非传统的 收盘价,对 RSI 的计算略有不同。 |
| 9‑10 | RSI6、RSI12 |
标准的 RSI 公式(SMA(MAX(CLOSE-LC,0),…)/SMA(ABS(CLOSE-LC),…)*100),只是把 收盘价 替换为 LC。 |
| 11 | DRAWBAND(RSI6,RGB(255,80,0),RSI12,RGB(0,255,100)) |
用两条不同颜色的带状线把 RSI6 与 RSI12 包在一起,颜色相交处即交叉点。 |
| 13‑14 | IF(RSI6>REF(RSI6,1),RSI6,DRAWNULL) |
仅在 RSI6 上升(即大于前一天)时绘制蓝色粗线,用来强调动量向上。 |
| 16‑18 | 威廉WR |
使用 FORCAST 再对 HHV、LLV(14 周期最高/最低)进行预测,得到 Williams %R。 |
| 19‑20 | IF(威廉WR>80,…),IF(威廉WR<20,…) |
当 WR 进入 超卖(>80) 时画绿色粗线,进入 超买(<20) 时画蓝色粗线,直观标记买卖区间。 |
注意:
FORCAST是 未来函数(会使用尚未收盘的数据),在实盘时会出现 重绘(repaint)现象,因而 仅适合复盘或做策略回测,不建议在实盘交易时直接依据它下单。- 代码里出现了 RSA12(应为 RSI12)的拼写错误,实际效果不影响计算,因为变量名仍是
RSI12。
3. 信号解读(如何使用)
| 条件 | 解释 | 可能的操作(仅作参考) |
|---|---|---|
| RSI6 上穿 RSI12(金叉) | 短期多头力量增强 | 参考买入 |
| RSI6 下穿 RSI12(死叉) | 短期多头力量减弱 | 参考卖出 |
| RSI6 > 前一交易日(蓝色粗线) | RSI6 处于上升阶段 | 增强买入信心 |
| 威廉WR > 80(绿色粗线) | 进入 超卖 区域,可能出现反弹 | 参考买入(逆势) |
| 威廉WR < 20(蓝色粗线) | 进入 超买 区域,可能出现回调 | 参考卖出(逆势) |
| 共振:RSI 金叉 且 WR >80 | 两指标同向,信号更强 | 可视为较为可靠的买入区 |
| 共振:RSI 死叉 且 WR <20 | 两指标同向,信号更强 | 可视为较为可靠的卖出区 |
实战小技巧
- 交叉确认:仅凭 RSI 金叉/死叉有时会出现假突破,建议等待 收盘价 明确突破 前期高低点 再动手。
- 成交量配合:在金叉且成交量放大(相对前 5 日均量 >1.5 倍)时,买入信号更可靠。
- 趋势过滤:在 均线多头排列(如 MA20>MA60)的大背景下,RSI 金叉的买入信号成功率更高;在均线空头排列时,RSI 死叉的卖出信号更可信。
- 止损/止盈:即使出现共振信号,也应设定 止损位(如跌破最近低点 2‑3%)和 止盈位(如 RSI 重新回到 50 以下或 WR 回到 20‑80 中间区)。
4. 在通达信里如何加载和使用
下面的步骤以 通达信 6.x / 7.x 为例,略有差异时请参考对应版本的“公式管理器”。
-
打开公式管理器
- 在行情界面按 Ctrl + F(或点击菜单 工具 → 公式管理 → 技术指标)。
-
新建技术指标
- 在左侧树形目录中选择 技术指标,点击右上角的 新建。
- 弹出 “技术指标编辑器”,在 名称 栏输入
RSI威廉(或您喜欢的名称)。 - 类别 选 自定义(或任意您想放的分类)。
-
粘贴源码
- 将上面的完整代码(从
50,DOTLINE;开始到最后的IF(威廉WR<20,威廉WR,DRAWNULL),COLOR0000FF,LINETHICK3;)复制粘贴到编辑框中。
- 将上面的完整代码(从
-
保存
- 点击 保存(或
Ctrl + S),关闭编辑器。
- 点击 保存(或
-
把指标加到图表
- 在任意股票的 K 线图(或分时图)上,右键 → 添加指标(或在主菜单 “分析 → 指标管理器”)。
- 在弹出的指标列表里找到 “RSI威廉”(如果没有刷新,请右键 → “刷新公式列表”),选中后点击 确定。
-
查看副图
- 默认会显示在 副图(即下方独立的坐标),您也可以把它拖到 主图(与 K 线同坐标)——只需在“指标属性”里把 “显示位置” 改为 主图。
-
调参数(可选)
- 本公式没有提供外部参数(所有周期已硬编码),如果您想自行调整 RSI 周期、WR 周期等,可把对应的数字改为 参数(例如
N:=6;),并在公式顶部使用INPUT关键字。
- 本公式没有提供外部参数(所有周期已硬编码),如果您想自行调整 RSI 周期、WR 周期等,可把对应的数字改为 参数(例如
5. 常见的注意事项与可能的改进
| 项目 | 说明 | 建议 |
|---|---|---|
| 未来函数(FORCAST) | 使用了 FORCAST,会导致 实盘重绘,不适合作为唯一的买卖依据。 |
若想用于实盘,建议把 FORCAST 去掉,改用普通的 CLOSE、HIGH、LOW。 |
| RSI 计算基准 | 这里的 RSI 并不是直接基于 收盘价,而是基于 LC(加权预测均价),属于 非标准 RSI,对部分用户可能不易理解。 | 若想使用更常见的 RSI,可改为 RSI6:SMA(MAX(CLOSE-REF(CLOSE,1),0),6,1)/SMA(ABS(CLOSE-REF(CLOSE,1)),6,1)*100;(即最原始的 RSI 公式)。 |
| 金叉/死叉的自动提示 | 代码只画出了颜色变化,若想 箭头/文字 提示,可加入 CROSS 函数与 DRAWICON。 |
示例:DRAWICON(CROSS(RSI6,RSI12),RSI6,'↑'),COLORRED;(买入箭头) |
| WR 的周期 | 代码里用了 14 周期(HHV(HH,14)、LLV(LL,14)),如果想更快可以改成 10、7 等。 |
直接把 14 换成 PARAM(如 N:=10;),在公式头部使用 INPUT。 |
| 参数化 | 所有数字都硬编码,后续想调参需要改源码。 | 改为 INPUT 方式,方便在图表上直接修改。 |
| 复盘 vs 实盘 | 含有未来函数,复盘结果看起来很诱人,但在实盘中会出现“信号消失”。 | 建议先在 回测 中把 FORCAST 去掉,做一次 无未来函数 的回测,对比差异。 |
6. 小结
- RSI 威廉 通过把 RSI6/12 与 Williams %R 组合,提供 共振买卖信号。
- 代码使用 预测(FORCAST) 来产生 “动态基准价 LC”,导致 重绘,适合复盘但要谨慎实盘。
- 关键信号:
- RSI6 上穿 RSI12 → 金叉(买入);
- RSI6 下穿 RSI12 → 死叉(卖出);
- 威廉WR >80(超卖) → 可能的买入区;
- 威廉WR <20(超买) → 可能的卖出区。
- 加载方式:**公式管理器 → 新建技术指标 → 粘贴源码 → 保存 → 在图表中“添加指标”。
- 使用时建议 结合成交量、趋势、止损/止盈,并对 未来函数 进行适当修改后再实盘。
再次提醒:本指标仅供技术分析参考,任何买卖决定请务必基于完整的交易计划并自行承担风险。祝您投资顺利!