news 2026/9/19 9:03:10

潜龙抄底A指标源码逐行拆解:通达信低点偏度选股公式与Python复算

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
潜龙抄底A指标源码逐行拆解:通达信低点偏度选股公式与Python复算

简介:这是一份通达信副图选股指标‘潜龙抄底A’的公式源码与逐句解读教程,面向股票技术分析爱好者和通达信用户,尤其适合希望学习指标编写逻辑的初、中级投资者。指标设计融合了短期趋势与底部结构判断:以5日均线(X_1)反映短期方向,用X_4度量当前低价与前一日低价的波动强度,再通过EMA对X_5平滑处理,结合30日最低价(X_6)和指标高点(X_7)确定底部区间,并引入0.618黄金分割系数对买入信号进行加权(X_9),最后经X_10标准化到0~100,以X_10大于30且当日开盘价为正作为选股触发条件(XG),实现相对稳健的抄底提示。资源为1个doc文件,共166KB,内容包含可直接导入通达信的完整公式源码,以及每个变量的作用注释,帮助读者理解整套选股思路,便于后续自行修改或扩展。已有171人学习下载,适合需要参考成熟抄底策略、提升自身公式编写能力的投资者。

1. 潜龙抄底A:一个靠“低点偏度”触发而不是均线支撑的副图源码

我拆过不下两百个自称“抄底”的指标源码,“潜龙抄底A”是少数让我看完第一遍就想跑回测的。它的核心变量 X_4 是一个 RSI 变体,但分子用的是绝对波动而非涨幅,结果就是股价越往下砸,这个变量涨得越快,而不是像普通 RSI 那样在超卖区域钝化。更值得注意的是 X_5 里那个IF(CLOSE*1.3,...)的条件写法,它并不像文档注释里写的“根据收盘价超过 1.3 倍昨日低价则放大 10 倍”,因为CLOSE*1.3在正常交易价格下恒为真,整个放大/缩小切换实际从未发生过。这个指标解决的核心问题是:在低位震荡行情里,把恐慌性急跌与前几天的横盘状态区分开,并把累积恐慌度映射成 0 到 100 的选股分。适合正在补技术分析短板、又不想被网上“副图源码”带偏的量化入门者,也适合手工复盘时需要一个可解释信号的人。

2. 源码逐行拆解:从 X_1 到 XG 的信号链路

2.1 基线与昨日基准:X_1、X_2、X_3 的真实作用

X_1:=MA(CLOSE,5)是 5 日均线,按理说用于判断短期趋势。但我在通读全文后确认:X_1 在整个公式里从未被后续任何变量引用。也就是说,哪怕删掉这一行,选股结果也不会有任何变化。这在分享类源码里非常常见——原作者可能一开始设计了均线过滤,后来改了思路却没删代码。X_2 是常数 1,它的作用更接近于“留一个参数口”,所有乘X_2的地方数学上等价于不乘,真正有意义的是它提示了一个改造方向:如果你想把整条信号链路整体缩放,只需要改 X_2 这一个变量,而不必动后面的公式。X_3 是REF(LOW,1),引用昨日最低价,作为后续所有波动计算的基准,这一步没有引入未来函数,因为在计算当日指标时,昨日最低价在开盘前就已经是确定值。

2.2 X_4 的偏度学:为什么跌得越狠它涨得越快

X_4 是理解整个指标最关键的变量,但网上多数解读把它说成“价格波动强度”,这不够准确。它的结构是:

X_4:=SMA(ABS(LOW-X_3),3,1)/SMA(MAX(LOW-X_3,0),3,1)*100*X_2;

分母MAX(LOW-X_3,0)只保留“当日最低价高于昨日最低价”的部分,低于昨日低点的位移被置零;分子ABS(LOW-X_3)则把上涨和下跌位移都算进去。把这个比值用 SMA 递归平滑后乘以 100,得到的是一个以 100 为中轴的比值指标。分三种情况看:

当日最低价与昨日最低价的关系分子 ABS 行为分母 MAX 行为X_4 量级
低点抬升(LOW > 昨低)等于上涨位移等于上涨位移,分子分母相等稳定在 100 附近
低点持平(LOW ≈ 昨低)接近 0接近 0,可能出现除零不稳定,接近 100 或溢出
低点下沉(LOW < 昨低)保留下跌幅值被置零,SMA 递归后滑向 0远大于 100,可达上千

所以 X_4 的真实含义不是“波动强度”,而是“低点位移的偏度”:当价格连续几天创阶段新低时,分母的递归平滑值快速衰减,分子却还保留着之前的波动幅值,两者相除的结果会呈指数级放大。这也解释了为什么连续阴跌几天后,X_4 会突然飙高——它度量的是向下偏离的加速度,而不是下跌本身。

提示:如果你在副图里看到 X_4 的值出现两位数甚至四位数的尖峰,不要以为是数据错误,这正是该指标识别“恐慌段”的机制。

2.3 X_5 的条件陷阱:IF 恒真分支会让缩放逻辑失效

X_5:=EMA(IF(CLOSE*1.3,X_4*10,X_4/10),3)*X_2;这段代码表面上是:当收盘价大于某个阈值时把 X_4 放大 10 倍,否则缩小 10 倍。但通达信的条件判断规则是,IF 的第一个参数只要是非 0 数值就视为真。CLOSE 是收盘价,A 股价格不可能为 0 或负值,所以CLOSE*1.3永远是一个正数,这个 IF 分支实际上恒真,X_4 永远被乘以 10 后再做 3 日 EMA。

作者的本意大概率是IF(CLOSE>X_3*1.3,...),漏写了关系运算符。这个恒真分支并不致命,因为后续 X_7 和 X_9 的比值结构会把缩放倍数的影响部分抵消,但它改变了信号触发的灵敏阈值。如果你把 X_5 里的*10改成*5,整个指标的选股频率会显著变化,因为 30 日最高值 X_7 的基准被整体抬高了。

2.4 底部窗口与顶值跟踪:X_6、X_7 确定自适应区间

X_6:=LLV(LOW,30)是 30 日最低价,X_7:=HHV(X_5,30)是 X_5 在过去 30 天的最高值。这两个变量构成一条自适应的“恐慌通道”:X_6 告诉你当前价格离最近一个月的极端低点有多远,X_7 告诉你恐慌指标在最近一个月曾经冲到什么位置。后面的买入信号只有在当日最低价触及或跌破 X_6 时才会被激活,这保证了它只参与“跌到关键位置”这一段行情的判定,避开高位横盘时的无效信号。

2.5 X_8 的恒真过滤与 X_9 的 618 之谜

X_8:=IF(MA(CLOSE,58),1,0)*X_2;在价格正常的情况下,MA(CLOSE,58) 必然是一个正数,IF 条件恒真,X_8 恒等于 1。它和第二节的 X_1 一样属于冗余代码。接下来是最容易被营销文案曲解的一行:

X_9:=EMA(IF(LOW<=X_6,(X_5+X_7*2)/2,0),3)/618*X_8*X_2;

网上解读说“618% 的权重调整,反映黄金分割比率”。但通达信公式引擎里/618就是除以六百一十八,没有任何百分比语义——如果你想表达黄金分割的 61.8%,应该写成*0.618。这个误读直接改变了量级判断:X_9 被压缩得很厉害,这意味着 XG 里那个>=30的阈值实际要求 X_4 在极端恐慌状态下持续走高,X_5 的 30 日高点也要同步抬高,两者共振才能把分数推到 30 以上。不是随便一个低位十字星就能触发的。

2.6 信号落点:X_10 截断与 DYNAINFO(4) 的选股语义

X_10:=IF(X_9>100,100,X_9);做上限截断,防止极端数据破坏副图显示比例。XG:X_10>=30 AND DYNAINFO(4)>0;是最终条件。DYNAINFO(4) 是当日开盘价,大于 0 用于过滤停牌股——停牌股票取不到有效开盘价,动态行情函数会返回 0 或空值。这个条件在盘中预警时是动态刷新的,在盘后选股时取的是当日最终数据。整个信号链路可以浓缩为:低点偏度 X_4 走高 → EMA 平滑放大成 X_5 → 与 30 日极值比较 → 归一化截断 → 阈值选股。

3. 公式管理器 6.06 里导入编译与条件选股的完整流程

3.1 新建副图公式的正确姿势

打开通达信客户端,按Ctrl+F调出公式管理器,在“技术指标公式”分类下点击“新建”。公式管理器 6.06 是当前主流版本,编辑器支持语法着色,但不会帮你提示括号匹配。粘贴源码时要注意:先把文档里的公式复制到系统自带的记事本里过一遍,确认没有隐藏字符或中文引号。通达信源码最容易踩的坑是全角括号和全角分号——从 Word 文档复制的公式经常把;换成中文分号,编辑器编译时会报“缺少分号”或“变量定义错误”。

新建副图公式时,名称填“潜龙抄底A”,画线方法选“副图”,把第 2 章拆解的那段源码整体粘贴进去。如果你希望 X_4、X_5 这些中间变量也能显示出来,可以把变量名后面的:=改成:,通达信只有单冒号的变量才会输出到副图。如果只想看最终的 X_10 和选股信号,保持原样即可。测试一下编译输出,“测试通过”后点确定保存。

3.2 条件选股公式与 XG 输出线的处理

副图公式和条件选股公式在通达信里是两个不同的公式类型。副图公式里写XG:=...表示中间赋值,不输出;但在条件选股界面调用“指标选股”时,公式引擎需要识别一个表示结果的输出变量。正确做法是:在公式管理器左侧选择“条件选股公式”分类,新建一个公式,把同一段源码粘进去,并且把最后一行改成:

XG:X_10>=30 AND DYNAINFO(4)>0;

单冒号XG:在条件选股公式里会被识别为最终结果,编译后才能进入选股器的指标列表。DYNAINFO(4) 在条件选股公式里同样有效,因为它读取的是动态行情数据,与公式类型无关。

3.3 历史区间回测与盘中预警的入口

用“功能 → 选股器 → 条件选股”打开选股对话框,在“公式”下拉框里找到刚建好的“潜龙抄底A”,把选股范围限制为“沪深 A 股”。如果想验证历史信号,不要直接用默认的“当前行情”,而是勾选“历史区间”,把起止日期设置到近三个月,再点“执行选股”。通达信会把历史每一天满足条件的股票列表逐日拉出来,你可以观察信号出现的位置是否真处于相对低位。盘中预警则在“功能 → 预警系统 → 条件预警设置”里添加该选股公式,周期选日线,触发频率建议设为每 5 分钟扫描一次,避免盘中高频调用拖慢行情速度。

3.4 tn6 格式文件与源码文本的边界

如果你拿到的资源包里有.tn6文件而不是.doc.txt源码,情况会不同。tn6 是通达信编译后的加密格式,公式管理器可以直接导入使用,但无法在编辑器中查看或修改源码。网上流传的“tn6 转 txt”工具大多不可靠,因为通达信没有开放反编译接口。常见做法是:用公式管理器“导入公式”直接加载 tn6,副图显示和条件选股功能正常,但你不能改参数;如果想要可编辑的源码文本,需要找原作者要明文。这点在交易团队内部协作时尤其重要——交付物应该同时包含 tn6 和 txt 源码,否则后来的人只能把一个黑盒留在策略库里。

注意:不要使用所谓的“通达信指标和谐器”去解密 tn6 文件,这类工具往往携带恶意脚本,而且解密后的源码可能与原始逻辑不一致,风险远大于收益。

4. 三个源码缺陷与 Python 复算验证

4.1 除零边界:X_4 在低点持平时的行为

LOW == REF(LOW,1)时,分母SMA(MAX(LOW-X_3,0),3,1)会得到 0,X_4 变成除零表达式。通达信公式引擎对除零的处理在不同版本上有差异,部分版本会返回 0,部分版本会保留上一次计算值。这个差异会导致同样一段行情在两个不同版本的通达信上选出不同的股票。如果你负责团队里的策略维护,建议在公式开头加一行防护:

SAFE_DENOM:=IF(SMA(MAX(LOW-X_3,0),3,1)=0,0.0001,SMA(MAX(LOW-X_3,0),3,1)); X_4:=SMA(ABS(LOW-X_3),3,1)/SAFE_DENOM*100;

用极小值替换零分母,保证 X_4 在低点持平的日子里回落到接近 100 的中性水平,而不是触发未定义行为。

4.2 恒真条件与前 58 根 K 线的冷启动

X_5 的IF(CLOSE*1.3,...)恒真已经在前文分析过。另一个隐蔽问题是 X_8 在上市不足 58 个交易日的次新股上会怎样——MA(CLOSE,58) 在前 58 根 K 线上返回空值或 0,IF 条件判断为假,X_8 取 0,导致整条信号在次新股的早盘阶段被屏蔽。也就是说该指标对上市时间超过 58 天的股票才有效,这在选股时需要用上市日期做前置过滤。

4.3 用 Python 复算信号链路验证指标行为

想把它当作量化指标公式源码来做历史回测时,一个常见问题是通达信的 SMA 和 EMA 与 Pandas 里的同名函数算法不同。通达信的 SMA(X,N,M) 递归式是Y_i=(M*X_i+(N-M)*Y_{i-1})/N,当 M=1,N=3 时权重很轻,平滑效果远弱于 EMA;EMA(X,N) 的递归式是Y_i=(2*X_i+(N-1)*Y_{i-1})/(N+1)。用 Pandas 的ewm直接算会得到完全不同的曲线。我一般这样复算:

import numpy as np def tdx_sma(x, n, m=1): y = np.full(len(x), np.nan, dtype=float) for i in range(len(x)): if i == 0: y[i] = x[i] else: y[i] = (m * x[i] + (n - m) * y[i - 1]) / n return y def tdx_ema(x, n): y = np.full(len(x), np.nan, dtype=float) k = 2 / (n + 1) for i in range(len(x)): if i == 0: y[i] = x[i] else: y[i] = k * x[i] + (1 - k) * y[i - 1] return y # low 为日线最低价序列,close 为收盘价序列 pre_low = np.roll(low, 1) pre_low[0] = low[0] sm_abs = tdx_sma(np.abs(low - pre_low), 3, 1) sm_pos = tdx_sma(np.maximum(low - pre_low, 0), 3, 1) x4 = np.where(sm_pos == 0, sm_abs, 100 * sm_abs / sm_pos)

这段代码的关键在np.where(sm_pos == 0, sm_abs, ...),它把除零位置用分子本身替代,效果比固定常数更接近通达信部分版本的行为。实际复算时你会发现,X_4 在连续下跌段的量级经常超过 1000,经过 X_5 的 10 倍放大后 X_7 可能到几万,X_9 除以 618 之后回落到几十,恰好落在 30 阈值附近——这就是整个指标量纲设计的内在逻辑,不是巧合。

4.4 未来函数检查与 DYNAINFO(4) 的盘前限制

检查一遍全部函数:REF 只引用昨日数据,LLV、HHV 在当前 K 线上取值,SMA、EMA 是递归平滑不改变对齐,IF 条件分支不引入未来信息。DYNAINFO(4) 在盘中取的是实时开盘价,在盘后取当日最终值,用在 XG 里不会造成信号漂移。需要注意它在集合竞价阶段可能返回 0,所以早盘 9:25 到 9:30 之间跑选股会漏掉一批票,最好等开盘后再执行。

5. 参数化改造:修正恒真条件与归一化分母

5.1 改造目标与参数设计

原始代码最大的问题不是逻辑,而是三个“看起来有用但实际无行为”的写法:X_1 未参与计算、X_8 恒为真、X_5 条件恒真。改造版应该修正这些缺陷,同时保留 X_4 的低点偏度核心。把 3、30、58、618 这四个硬编码数字提升为参数,并给 X_9 的除数起一个明确的名字:

{ 潜龙抄底A 参数化改造版 } N1:=3; { X_4 的 SMA 平滑周期 } N2:=30; { 底部/顶部统计窗口 } N3:=58; { 长期趋势过滤周期 } GOLD:=618; { 归一化除数 } VAR_MA5:=MA(CLOSE,5); PRE_LOW:=REF(LOW,1); DIF_ABS:=ABS(LOW-PRE_LOW); DIF_POS:=MAX(LOW-PRE_LOW,0); SMA_ABS:=SMA(DIF_ABS,N1,1); SMA_POS:=SMA(DIF_POS,N1,1); VOL_INTEN:=IF(SMA_POS=0,SMA_ABS,100*SMA_ABS/SMA_POS); { 修正 X_5:用明确的关系表达式替换恒真写法 } BOOSTED:=IF(CLOSE>PRE_LOW*1.3,VOL_INTEN*10,VOL_INTEN/10); SMOOTH:=EMA(BOOSTED,3); BOTTOM:=LLV(LOW,N2); TOPVAL:=HHV(SMOOTH,N2); TREND_OK:=IF(MA(CLOSE,N3)>0,1,0); SCORE_RAW:=EMA(IF(LOW<=BOTTOM,(SMOOTH+TOPVAL*2)/2,0),3)/GOLD*TREND_OK; SCORE:=IF(SCORE_RAW>100,100,SCORE_RAW); SEL:SCORE>=30 AND DYNAINFO(4)>0; STICKLINE(SCORE>=30,0,SCORE,2,0),COLORRED;

这段代码把原来模糊不清的IF(CLOSE*1.3,...)改成了明确的关系表达式CLOSE>PRE_LOW*1.3,意思是当日收盘价高于昨日最低价的 1.3 倍时才放大波动强度,否则缩小。同时把 X_9 的 618 改成参数 GOLD,保留原始量纲不变——如果你在回测中发现信号太少,可以先把 GOLD 降到 500 观察变化,而不是直接改 SCORE 的阈值 30。

5.2 副图可视化的增量信息

加了一行STICKLINE(SCORE>=30,0,SCORE,2,0),COLORRED;,把分数以红色柱状图画出,柱子的高度就是信号强度。这个可视化有两个用途:一是观察 SCORE 逼近 30 阈值的“蓄势”过程,二是对比信号出现后的走势,判断阈值前后 SCORE 回落的速度。副图里还能加一条参考线30,DOTLINE;让阈值位置更直观。实际调参时,我会先看 N1 从 3 改到 5 对 SCORE 波形的影响——N1 越大曲线越平滑,信号越少但滞后越明显,这个取舍没有标准答案。

5.3 参数敏感性需要注意的边界

把 N2 从 30 改成 60,底部确认窗口变大,BOTTOM 值更低,LOW<=BOTTOM 更难触发,直接结果是选股频率显著下降。把 GOLD 从 618 改到 300,SCORE 整体放大一倍,原来 15 分的次强信号会跨过 30 阈值,选股数量暴涨。这类修改没有对错,但要意识到原始 GOLD=618 本身就是一种强烈的过滤强度设定,不要只调阈值 30 而忽略归一化分母的影响。改完参数后,建议用第 3 节的历史区间选股跑一遍,对比信号数量与后续 10 日收益分布,再决定参数去向。

6. 阈值前移与连续确认:盘中预警的增量信息

SCORE 达到 30 才触发信号,但 SCORE 从 20 爬到 30 往往需要两到三天,这段时间如果价格已经反弹了 5 个百分点,入场意义就小了一半。更实用的做法是把阈值前移到 25 作为“观察线”,并用 COUNT 函数统计最近几天内信号出现的次数,只有连续确认才画提示:

SEL_RAW:=SCORE>=30 AND DYNAINFO(4)>0; SEL_CNT:=COUNT(SEL_RAW,3); PRELINE:25,COLORGRAY; OBSERVE:SCORE>=25 AND SCORE<30,COLORYELLOW; DRAWTEXT(SEL_CNT>=2,10,'连续确认'),COLOR00FFFF;

COUNT(SEL_RAW,3) 统计最近 3 个交易日内满足 SEL_RAW 的天数。上一次信号如果是 30 分,但隔了一天就跌回 20 分以下,说明恐慌度没有得到承接,这时候追进去大概率是接飞刀。只有 3 天里至少两天满足条件,才说明低点偏度维持在阈值之上,恐慌状态具有持续性。DRAWTEXT 在副图 10 的位置输出“连续确认”文字提示。

配套的盘中预警设置:在条件预警里加载修改版的选股公式,并且额外加一个预警条件OBSERVE(SCORE 在 25 到 30 之间)作为预触发。具体做法是把上述公式另存为一个副图指标,预警系统里引用该指标,设置“指标值大于等于 0”触发。这样操作会把预警提前到 SCORE 突破 25 的时刻,而非等到 30。需要注意的是,盘中 DYNAINFO(4) 会变化,集合竞价阶段 SCORE 可能失真,预警时间窗口建议设定为 9:35 到 14:50。想验证这套阈值是否适合你的标的池,把 N2 从 30 调到 45、GOLD 从 618 调到 400,然后对比同一段行情里信号前移的天数差异,再回答自己一个问题:这个指标在震荡筑底和单边下跌中段的表现,哪个更符合你想要的买点。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/19 9:02:52

港股打新成本解析与零息融资方案评估

1. 港股打新成本解析与融资方案评估最近不少投资者都在讨论港股打新的资金门槛问题。作为参与过多次港股IPO认购的老股民&#xff0c;我深刻理解资金占用成本对打新收益率的影响。以近期某热门新股为例&#xff0c;申购一手需要冻结资金约2万港币&#xff0c;若未中签则资金将被…

作者头像 李华
网站建设 2026/9/19 9:02:10

SDH环网K1/K2字节与APS协议硬核解析

简介&#xff1a;本资源是一份面向通信工程专业学生、传输网络运维工程师及SDH设备初学者的实操型教学课件&#xff0c;聚焦SDH光传输设备环形组网的核心配置流程与自愈保护机制。内容完整覆盖METRO 3000设备环境下两纤单向通道保护环的搭建全过程&#xff0c;包括网元创建与硬…

作者头像 李华
网站建设 2026/9/19 9:01:40

十二生肖每日运势详解:2024年7月27日乙丑日开运指南

1. 当日走势总览&#xff1a;先看懂这一天的“底牌”1.1 日期本身的特殊之处2024年7月27日&#xff0c;星期六&#xff0c;农历六月廿二。先看这一天的干支组合&#xff1a;甲辰年 辛未月 乙丑日。年柱甲辰&#xff0c;月柱辛未&#xff0c;日柱乙丑&#xff0c;整体五行搭配是…

作者头像 李华
网站建设 2026/9/19 9:01:36

对照表:ChatGPT 网页版规划 vs Codex 执行,TaoToken 怎么分 Key

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/19 9:01:19

2026春节AI学习指南:从认知到本地部署的完整路径

1. 为什么2026年春节是啃下AI的最佳窗口期每年春节&#xff0c;我都会给自己定一个“假期攻坚项目”。前年是把家里的旧笔记本改成软路由&#xff0c;去年是刷完一套分布式存储的课程&#xff0c;今年我选的是AI。原因很简单&#xff1a;春节这段假期有几个别的时段没有的优势—…

作者头像 李华
网站建设 2026/9/19 8:59:53

AI工程师薪资解析与核心技能树构建指南

1. 行业现状与薪资真相最近两年AI工程师的薪资确实水涨船高&#xff0c;但"年薪百万"这个说法需要理性看待。从我接触的猎头数据和身边案例来看&#xff0c;头部大厂的AI算法工程师&#xff08;3-5年经验&#xff09;年薪普遍在60-120万之间&#xff0c;而应届生的起…

作者头像 李华