简介:通达信精准卖点指标公式源码,面向使用通达信软件进行股票技术分析的个人投资者、量化策略爱好者及有一定看盘经验的交易者,核心解决卖出时机难判断、容易错过高点或过早离场的问题。指标以均价、动态主线、布林上下轨和确认线等为基础,融合PPR/PR1压力支撑位、DMA动态均价、标准差通道等算法,构建升势周期、底部质变、涨升、转势提前等多层次信号,并在主图上用不同颜色和带状区域直观呈现,便于识别冲顶、变盘和转势节点。指标信号层次丰富,通过红色、绿色、黄色等多色线条与带状区域,同时呈现主线、确认线、转势提前线等关键要素,方便快速定位潜在卖点。资源包为1个doc文件,大小仅522KB,文档内附完整公式源码与关键参数说明,复制到通达信公式管理器新建指标即可直接使用,适合希望完善卖出策略并理解指标运算逻辑的学习者。目前已有144人学习下载,无论用于盘中实时监控还是收盘复盘,都能提供明确的参考依据。
1. 精准卖点指标公式源码到底在算什么信号
在通达信里复盘一只已经走弱的票,总能找到一个"当时该走"的位置:价格不再创新高、量能接不上、短期均线开始拐头。但这些特征分散在价格、成交量、均线三张图里,等反应过来往往已经跌了两三天。doc文档里那份"精准卖点指标"的源码,要解决的就是把这类特征合并成一个明确信号,直接在K线图上画出来。
卖点信号本质上是"上涨动能衰竭"的统计表达:从阶段高点回落到一定比例、短均线下穿长均线、上涨时量能萎缩,多个条件同时成立时给出提示。这套逻辑不依赖收费数据源,通达信自带的HIGH、LOW、CLOSE、VOL和MA、HHV、CROSS、FILTER这些函数就能写完。适合想把卖出规则固定下来的短线交易者,也适合刚开始接触通达信指标公式、需要一份可调参数模板的人。
任何卖点指标都不是"最高点提示器",最高价是事后才能确认的,公式只能在顶部走出来之后给确认信号。下面按信号设计、源码实现、导入回测的顺序把这件事讲透。
2. 设计通达信卖出指标公式:四个数据维度与未来函数边界
先定规则再写源码。买卖类指标公式写得慢的,都慢在信号定义上:什么样的K线才算卖点,参数为什么取这些值。通达信公式语言能拿到的原始数据就四类:开高低收、成交量、流通股本、以及由它们派生出来的均线和统计量。卖点信号应该从价格、均线、量能、资金四个维度分别提取条件,再合成一个判断。
2.1 高点回落与均线死叉:价格维度的卖点骨架
价格维度解决"趋势从哪一刻开始转弱"。日线图上,上升趋势结束的常见形态是价格不再创阶段新高,或者创出新高后迅速跌回前期平台。通达信里用 HHV(HIGH,N) 取最近N根K线的最高价,再与当前价比较:
周期高点:=HHV(HIGH,10); 回落幅度:=(周期高点-CLOSE)/周期高点*100;HHV(HIGH,10) 包含当根K线,所以盘中最后一根K线的HIGH还在变化,回落幅度会跟着动;回看历史时每根K线都是定值,这是回测与实盘信号差异的一大来源。回落幅度是百分比,默认看10日高点,一旦超过阈值就进入观察区间。观察周期N越小对短线顶部越敏感,N越大波动过滤得越干净,代价是信号更滞后。
均线维度负责确认趋势方向,最常用的是短周期均线下穿长周期均线,即死叉。这里要注意CROSS(a,b)的语义是a从下方向上穿过b,死叉要写成 CROSS(慢线,快线),反过来的CROSS(快线,慢线)是金叉:
快线:=MA(CLOSE,5); 慢线:=MA(CLOSE,10); 死叉:=CROSS(慢线,快线);MA(CLOSE,M) 是M周期收盘价简单平均,参数越小对价格越敏感。日线级别上5日与10日组合大约对应一周到两周的持仓节奏;把慢线改成20日,信号更晚,但能过滤掉反弹途中的假死叉。价格与均线两个条件放在一起,含义是"价格已经从阶段高点回落,且均线结构确认转弱"。
2.2 量缩、长阴与收盘位置:量能维度的衰竭确认
均线死叉一定是滞后的,价格先于均线变化。能稍微提前的信号来自成交量:上涨过程中量能递减,说明接盘意愿在下降,这是顶部区域最常见的量价背离形态。通达信里量能基准直接用VOL的均线:
五日均量:=MA(VOL,5); 量缩:=VOL<五日均量*0.85; 长阴:=(CLOSE<OPEN) AND (OPEN-CLOSE)/(HIGH-LOW)>0.5;VOL单位是手,和流通股本CAPITAL配合还能算换手率。量缩定义为当日成交量低于5日均量的85%,是宽松的预警条件;长阴要求收盘低于开盘,且阴线实体占整个振幅的一半以上,表示空头在当天占据明显优势。振幅(HIGH-LOW)在涨停或一字板时会等于0,公式里对分母做保护,是后面导入阶段最常见的修改点。
资金维度在免费通达信里拿不到逐笔大单数据,很多流传源码里的内外盘差和L2字段在普通账户下会输出无效值。现实做法是用收盘位置做资金流向的代理:收盘价越贴近当日最低价,说明尾盘抛压越重。
收在低位:=(CLOSE-LOW)/MAX(HIGH-LOW,0.01)<0.3;MAX(HIGH-LOW,0.01)把分母下限垫到0.01元,避免一字板除零。0.3表示收盘价位于当日振幅的下30%区间。这个条件单看几乎每天都会出现,只有和量缩、长阴叠加,才构成"缩量下跌且空头占优"的衰竭特征,这也是后面副图打分公式的基础。
2.3 通达信公式的运行顺序与未来函数识别
通达信公式语言是逐K线计算的序列语言。每一句要么是中间变量,用":="赋值,只参与计算不画线;要么是输出语句,用":"冒号赋值,会画在图上。语句按先后顺序引用,前一句定义的变量后一句才能用。输出语句可以写在任意位置,但写多了绘图区会乱,所以规范做法是全部计算用":=",只留最后几行输出。
这套语言里最大的坑是未来函数。ZIG、TROUGH、PEAK、BACKSET这些函数引用当前K线之后的数据,回看历史时每个拐点都标得又准又早,实盘中信号却会漂移甚至消失。市面上不少标榜"精准卖点"的指标公式源码故意用ZIG来制造回看漂亮的假象,导入时公式管理器会在测试提示里标出"含有未来函数",看到这个提示就要警惕。
自己写公式时只用HHV、LLV、MA、REF、CROSS这类不跨未来的函数。如果想避免盘中信号抖动,就把确认条件整体延迟一根K线:REF(信号,1)取值上一根K线的结果,代价是晚一天确认,换来的是信号一旦出现就不会再消失。日线级别的买卖决策,晚一天往往可以接受。
3. 精准卖点指标源码实现:主图标记、副图确认与参数表
信号规则定好之后,就是把它写进通达信公式语法。下面给两份可直接粘贴的源码,一份主图、一份副图,参数全部放在开头,方便在公式管理器的参数列表里直接调整;不想要参数区的,把数字写进语句里也能跑。
3.1 主图源码:HHV高点回落与CROSS死叉的卖出标记
{精准卖点-主图} N:=10; {高点回溯周期} M1:=5; {快线均线周期} M2:=10; {慢线均线周期} R:=3; {回落阈值, 单位%} 快线:=MA(CLOSE,M1); 慢线:=MA(CLOSE,M2); 周期高点:=HHV(HIGH,N); 回落幅度:=(周期高点-CLOSE)/周期高点*100; 死叉:=CROSS(慢线,快线); 死叉距离:=BARSLAST(死叉); 确认卖点:=(死叉距离<=3) AND 回落幅度>R AND 快线<慢线; DRAWTEXT(确认卖点,HIGH*1.02,'卖'),COLOR00FFFF; DRAWICON(确认卖点,HIGH*1.06,2); STICKLINE(确认卖点,CLOSE,OPEN,3,0),COLOR00FF00;核心逻辑在确认卖点这一句:BARSLAST(死叉)返回上一次死叉到当前的K线数,死叉当根为0,之后递增。死叉发生后3根K线内,只要回落幅度突破阈值R、并且快线仍在慢线下方,就确认为卖点。之所以留3根K线的窗口,是为了解决"死叉当天还没跌够、第二天跌够了却不再提示"的漏洞。如果3根K线内始终没等到回落阈值,这轮观察作废,等下一次死叉重新开始。
DRAWTEXT在K线上方写一个"卖"字;DRAWICON的第三个参数是图标编号,2在多数通达信版本里是红色向下箭头,不同版本的图标表略有差异,画出来不对时,把编号在1到40之间逐个试一下。STICKLINE把确认卖点当根K线的实体涂成绿色,三段输出共用同一个确认卖点,箭头、文字、涂色会出现在同一根K线上。
提示:盘中实时计算时,最后一根K线的HIGH、CLOSE都在变化,确认卖点可能先出现再消失。收盘后数据定型,信号才稳定;做盘中判断时把语句改为 REF(确认卖点,1),只看上一根已收定的K线。
3.2 副图源码:量能衰竭打分与信号过滤
{精准卖点-副图} N2:=5; {量能均线周期} 振幅:=MAX(HIGH-LOW,0.01); 五日均量:=MA(VOL,N2); 量缩:=VOL<五日均量*0.85; 长阴:=CLOSE<OPEN AND (OPEN-CLOSE)/振幅>0.5; 收低:=(CLOSE-LOW)/振幅<0.3; 抛压分:=IF(量缩,1,0)+IF(长阴,1,0)+IF(收低,1,0); 警惕区:=抛压分>=2; 衰竭信号:=FILTER(警惕区,3); STICKLINE(抛压分>=1,0,抛压分,2,0),COLOR00FFFF; DRAWTEXT(衰竭信号,3.2,'衰竭'),COLOR00FF00;抛压分是把三个布尔条件相加得到的0到3的整数分:分数为3说明量缩、长阴、收低同时成立,是空头特征最完整的一天;分数为2就进入警惕区。FILTER(警惕区,3)的意思是警惕区一旦触发,之后3根K线内不再重复提示,避免连续阴跌阶段每天画一次"衰竭"。STICKLINE按分数画彩色柱子,柱子高度就是分数本身,副图纵轴0到3的刻度直接可读;DRAWTEXT里的3.2是文字锚定在纵轴3.2的位置,如果同一副图里还有别的输出,这个数字要按坐标范围调整。
注意:抛压分只是量能维度的打分,不能单独当卖点用。它和主图的确认卖点配合,一个看趋势结构,一个看当天多空力量,两者都满足时信号的可靠性才够。
3.3 参数速查表与主图副图联动建议
| 参数 | 默认值 | 建议范围 | 作用 | 调大或调小的影响 |
|---|---|---|---|---|
| N | 10 | 5-30 | 高点回溯周期 | 调大捕捉大级别顶部,调小贴近短线波动 |
| M1 | 5 | 3-10 | 快线均线周期 | 调小更敏感,假信号增多 |
| M2 | 10 | 10-30 | 慢线均线周期 | 调大信号更晚,稳定性提高 |
| R | 3 | 2-8 | 回落幅度阈值 | 调小触发频率变高,调大过滤更严 |
| N2 | 5 | 3-10 | 量能均线周期 | 调大量缩判断更平滑,反应变慢 |
主图和副图如果各自独立调参,两处参数会越改越不一致。常见做法是把副图的抛压分当作主图确认卖点的附加条件,写成"确认卖点 AND 抛压分>=2";但抛压分的数值范围是0到3,直接在主图里画线会贴在股价上,正确的做法是只引用它参与判断,不做画线输出,画线仍然留在副图。这类把价格、均线、量能放进同一个公式做多因子打分的方式,在量化指标公式源码里很常见,好处是信号能解释,坏处是参数一多就容易过拟合,第一版建议只用默认参数跑一个月再说。
4. 从doc源码到通达信公式管理器:导入步骤、语法报错与回测
doc文档里的公式源码不是拿来就能用的。排版、标点、编码三道关都要过一遍,才能顺利进公式管理器。
4.1 doc公式源码清洗成纯文本并导入公式管理器
doc里复制出来的代码最常见的两个毛病:全角标点和行首空格。Word的自动更正会把半角冒号、分号、括号替换成全角字符,通达信公式解释器只认半角,第一轮报错基本都来自这里。行首空格一般不影响解析,但全角空格会直接报非法字符。
处理流程:
- 在doc里选中源码部分,复制后粘贴到Windows自带的记事本;
- 用记事本的"编辑→替换"把全角冒号、分号、逗号、括号统一替换成半角,中文注释不用动;
- 另存为txt,编码选ANSI,文件名随意;
- 通达信中按 Ctrl+F 打开公式管理器,选"技术指标公式",点新建,名称填字母缩写如JZMM,绘图方法选主图叠加或副图;
- 把txt内容粘贴进公式区,点"测试公式",看到测试通过再点确定;在K线界面直接输入JZMM回车即可加载。
提示:如果doc里是截图形式的源码,不要照着截图手敲,截图里的标点看不清,手敲最容易把英文括号打成中文括号。能复制文本就复制文本。
4.2 通达信指标公式的常见语法报错排查
| 测试时的提示 | 对应问题 | 处理方式 |
|---|---|---|
| 缺少分号 | 行尾分号被doc改成全角,或换行被合并成一行 | 从报错行往上查半屏,把中文标点改回半角 |
| 变量未定义 | 变量名拼写不一致,或大小写写错 | 通达信对定义顺序不敏感,重点查名字是否完全一致 |
| 除数为零 | HIGH-LOW或某个分母出现0值 | 分母包一层MAX(...,0.01) |
| 含有未来函数 | 源码里出现ZIG、TROUGH、BACKSET等 | 实盘使用要承受信号漂移,建议直接换掉 |
| 信号在盘中消失 | 最后一根K线数据未收定 | 用REF(信号,1)延迟到次日确认 |
除了字符问题,输出语句过多也会导致画面异常。主图公式里如果出现两条以上以":"结尾的价格线输出,新建时绘图方法必须选对;副图公式同时有0到3的抛压分和百分比类输出,纵轴会互相挤压。规范做法是中间过程全部用":="定义,输出只保留画文字、画图标和画柱子的语句。
4.3 用历史回测验证卖点信号的有效性
信号写完先回测再谈使用。简单做法分三步:把卖点条件整理成条件选股公式,在"功能→选股器→条件选股"里选定历史阶段执行,得到近一年的全部触发日期;再在个股日线界面做数据导出,右键历史数据→数据导出,勾选日期、收盘价、成交量;最后对每个信号出现后的5日、10日涨跌做统计。
import pandas as pd df = pd.read_csv("export.csv", parse_dates=["date"]) df = df.sort_values("date").reset_index(drop=True) signal = df["signal"].astype(bool) for hold in (5, 10): right, wrong = 0, 0 for idx in df.index[signal]: if idx + hold >= len(df): continue ret = df.loc[idx + hold, "close"] / df.loc[idx, "close"] - 1 if ret < 0: right += 1 else: wrong += 1 print(f"持有{hold}日: 卖出后下跌占比 {right / (right + wrong):.1%},样本 {right + wrong}")导出文件里没有signal列,需要在Excel里按条件选股结果的日期把signal标记为1,或者用同样逻辑在Python里对收盘价重算。卖出后5日或10日下跌,说明这笔卖出做对了;下跌占比高于60%,指标才有实战价值。同时还要看信号数量,一年触发20次以上才谈得上可用,一年只出两三个信号,结构上再完美也难有指导意义。回测时每个顶部附近都出现了信号并不等于信号只出现在顶部,统计整体触发率和连续亏损次数,比盯着几个漂亮案例更可靠。
5. 三个让精准卖点指标更稳的过滤技巧
前三章的源码能跑通之后,剩下的工作全部是减少假信号。下面三个过滤手段按重要性排序,第一个必须加,后两个按自己的持仓习惯取舍。
5.1 用FILTER和BARSLAST消除连续重复信号
确认卖点出现后,经常连续几天都满足回落条件,直接画线会连出三四个"卖"字。通达信的标准做法是FILTER:
去重卖点:=FILTER(确认卖点,5);FILTER(信号,N)在信号第一次为真时输出1,之后N根K线内即使信号再为真也输出0。N取5,日线就是一周内只提示一次。想更灵活就改用BARSLAST看间距:
距上次卖点:=BARSLAST(去重卖点); 新卖点:=确认卖点 AND 距上次卖点>10;BARSLAST返回上一次条件为真到当前的K线数,把间距条件单独放开,适合"至少隔两个星期才允许出现新卖点"的规则。两个函数都不引用未来数据,盘中可以放心用。
5.2 用换手率阈值排除无量死叉与放量出货误判
换手率在通达信里用 VOL/CAPITAL*100 计算,CAPITAL是流通股本,单位是手,所以成交量除以流通股本再乘100就是百分比。把换手率加进过滤条件能解决两类误判:换手率太低的死叉经常发生在缩量阴跌途中,卖出后容易踏空反弹;换手率太高的死叉往往出现在放量出货之后,信号成立但位置已经偏低。
换手:=VOL/CAPITAL*100; 有效卖点:=去重卖点 AND 换手>2 AND 换手<12;2%和12%是按普通主板个股习惯给出的初始值,次新股和北交所股票换手率整体偏高,要按个股历史分位数调整。换手低于2%时成交量本身都不可靠,指标数值的相关性会明显下降。
5.3 把卖点条件改写成条件选股公式做全市场扫描
卖点指标不一定只画在自己持仓的K线上。在公式管理器里新建"条件选股公式",把主图源码里的计算部分和5.2的换手定义整体复制过来,最后一行改成选股输出,就能在收盘后扫全市场:
选股:确认卖点 AND 换手>2;条件选股公式只要求一个输出,数值大于0就视为命中。盘中用实时行情跑一遍,得到的是当日风险名单;为了规避最后一根K线未收定导致的抖动,可以把条件改为 REF(确认卖点,1) AND 换手>2,让系统只认上一根已收定的K线。选股公式和主图指标共用同一套计算段,改参数时只改一处即可,收盘后执行一次,输出的列表可以直接导出Excel留档。
本文还有配套的精品资源,点击获取