ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

通达信资金涌动副图指标源码解析:无未来函数验证与参数调优

2026/9/18 22:52:40 拓冰建站 浏览量
通达信资金涌动副图指标源码解析:无未来函数验证与参数调优 简介这是一份面向通达信用户的副图指标公式源码文档适合具备一定技术分析基础、希望跟踪主力资金动向的投资者研究使用。指标由资金能量、主力资金、金线、银线、爆发线、起步线、抄底线等组件构成通过价格与成交量加权、EMA平滑及多周期均线交叉输出加仓、爆发、空仓、半仓等信号提示可用于研判资金集散与趋势拐点。资源包共1个文件为doc格式文档大小约320KB内含完整公式源码便于直接导入通达信或按个人需求修改参数。目前已有497人学习下载。读者可据此理解各条线的计算逻辑与信号触发条件掌握主力资金强度量化、金银线交叉判断及买卖点识别思路并结合自身策略进行定制优化。1. 资金涌动金钻副图指标到底在算什么很多人第一次看到“资金涌动金钻副图指标 准确率90% 无未来通达信指标公式源码”这类标题第一反应是去找一份能直接导入的公式文件。但真正决定这个指标能不能用的不是名字里的“金钻”或“90%”而是它背后那套资金流计算逻辑是否自洽、是否引用了未来数据。副图指标和主图指标最大的区别在于副图通常只做信号提示不参与K线绘制所以它更容易被写成“事后看起来很美”的形态——收盘后信号全对盘中却反复漂移。这个指标的核心思路一般是用成交量加权价格的变化来估算当日资金净流入方向再叠加均线平滑和阈值判断形成“资金涌动”的柱状或线状信号。所谓“无未来”指的是公式里不能出现REFX、ZIG、PEAK这类会引用未来K线或做未来函数拟合的函数。通达信里很多标榜高准确率的指标问题就出在用了ZIG做转折点回测时信号完美实盘时最后一根K线信号会消失。所以拿到任何一份源码第一件事不是看它准不准而是搜一遍有没有未来函数。适合读这篇的人是手里已经有通达信、想自己改公式或者判断一份源码能不能用的从业者。下面从资金流公式的构造原理讲起再到通达信公式管理器的实际录入、参数调整、信号验证最后落到怎么把“准确率90%”这种话翻译成可检验的统计口径。2. 通达信资金流副图公式的构造与无未来函数判断2.1 资金涌动类指标常用的三个计算模块绝大多数资金流副图指标拆开看就是三块基础资金流估算、平滑处理、信号触发。基础资金流最常见的是用(CLOSE-REF(CLOSE,1))/REF(CLOSE,1)*VOL做价格变化乘以成交量再按正负分拆成流入流出。也有用AMOUNT直接算成交额的但成交额受高价股影响大一般会做归一化。平滑处理通常用EMA或SMA周期取 3、5、13 这类短周期目的是让资金流曲线不至于太毛刺。信号触发则是设定一个阈值比如资金流上穿0轴、或者快慢线金叉就在副图画柱或图标。通达信里画柱用STICKLINE画图标用DRAWICON这两个函数在副图里很常用。{资金涌动副图基础框架无未来函数} VOLUME:VOL; PRICE_CHG:(CLOSE-REF(CLOSE,1))/REF(CLOSE,1); RAW_FLOW:PRICE_CHG*VOLUME; {原始资金流正为流入负为流出} FLOW_EMA3:EMA(RAW_FLOW,3); {3周期平滑短灵敏} FLOW_EMA13:EMA(RAW_FLOW,13); {13周期平滑看趋势} SIGNAL:CROSS(FLOW_EMA3,FLOW_EMA13); {快线上穿慢线作为涌动信号} STICKLINE(RAW_FLOW0,0,RAW_FLOW,2,0),COLORRED; STICKLINE(RAW_FLOW0,0,RAW_FLOW,2,0),COLORGREEN; DRAWICON(SIGNAL,FLOW_EMA3,1); {信号位置画图标}这段代码里RAW_FLOW是核心PRICE_CHG用REF(CLOSE,1)只引用前一根K线属于正常回溯不是未来函数。EMA是通达信内置指数移动平均计算时只用到当前及历史数据。CROSS判断上穿同样不涉及未来。STICKLINE的五个参数分别是条件、起点、终点、宽度、是否空心这里用 2 号实心柱。DRAWICON的第三个参数 1 是通达信内置图标编号具体图标样式可以在公式管理器里预览。2.2 怎么快速判断一份源码有没有未来函数拿到一份标着“无未来”的源码不要信标题直接搜关键词。通达信公式编辑器里按 CtrlF依次搜REFX、ZIG、PEAK、TROUGH、BARSLAST配合REF的异常用法。REFX是引用未来第 N 根K线ZIG是之字转向这两个只要出现基本可以判定有未来函数。PEAK和TROUGH是未来函数家族里的峰值谷值同样不能用。还有一个隐蔽的坑有些公式用BACKSET函数。BACKSET(X,N)的作用是当 X 成立时把前 N 根K线的条件也设为成立。这个函数在通达信里属于未来函数因为它会修改历史K线的显示状态。搜到BACKSET就要警惕。函数名是否未来函数典型用途处理建议REFX是引用未来K线直接删除或替换为REFZIG是之字转向画线不可用于实盘信号PEAK/TROUGH是峰值谷值定位回测好看实盘失效BACKSET是回溯设置条件替换为普通条件判断REF否引用历史K线正常使用EMA/SMA否平滑计算正常使用判断完之后还要做一步验证把公式加载到副图然后切换到“训练模式”或者用键盘方向键逐根K线回放。如果最后一根K线的信号在回放过程中反复出现又消失说明有未来函数残留。真正无未来的公式逐根回放时信号一旦出现就不会再变。2.3 在通达信公式管理器里录入和调试的完整步骤通达信公式管理器入口是 CtrlF打开后选“技术指标公式”下的“其他类型”点“新建”。公式名称填“资金涌动副图”画线方法选“副图”然后粘贴代码。这里有个细节如果代码里用了DRAWICON要确保图标编号在通达信里存在否则公式会报错但不提示具体位置。录入后点“测试公式”如果提示“编译成功”再点“确定”保存。回到K线图在副图区域右键选择“选择指标”找到刚建的“资金涌动副图”。如果副图没显示检查两点一是公式有没有输出线二是画线方法是不是选成了“主图叠加”。调试阶段建议把FLOW_EMA3和FLOW_EMA13都输出成线观察交叉点是否和价格转折有对应关系。如果发现信号太密集把EMA周期从 3 和 13 改成 5 和 21或者加一个FILTER函数过滤重复信号。FILTER(SIGNAL,5)表示信号出现后5根K线内不再重复触发。3. 资金涌动副图指标的参数调优与信号验证3.1 三个必调参数平滑周期、阈值、过滤窗口资金涌动类副图指标的可调参数不多但每一个都直接影响信号频率和准确率。第一个是快慢线平滑周期。默认 3 和 13 偏灵敏适合短线改成 5 和 21 后信号减少但单次信号的有效性会提高。第二个是阈值如果公式里用RAW_FLOW阈值做触发阈值设 0 就是所有流入都算信号设成MA(ABS(RAW_FLOW),20)的某个倍数就能过滤小单。第三个是过滤窗口。FILTER函数的第二个参数就是窗口大小设 3 到 5 比较常见。设太大比如 10会漏掉连续信号设太小比如 1等于没过滤。我一般会先用 5 跑一遍看信号数量是否落在可接受范围。{参数调优版本加入阈值和过滤} VOLUME:VOL; PRICE_CHG:(CLOSE-REF(CLOSE,1))/REF(CLOSE,1); RAW_FLOW:PRICE_CHG*VOLUME; FLOW_FAST:EMA(RAW_FLOW,5); {快线周期改为5} FLOW_SLOW:EMA(RAW_FLOW,21); {慢线周期改为21} THRESHOLD:MA(ABS(RAW_FLOW),20)*0.5; {动态阈值取20日均绝对值的0.5倍} CROSS_SIGNAL:CROSS(FLOW_FAST,FLOW_SLOW) AND ABS(RAW_FLOW)THRESHOLD; FINAL_SIGNAL:FILTER(CROSS_SIGNAL,5); {5根K线内不重复} STICKLINE(RAW_FLOW0,0,RAW_FLOW,2,0),COLORRED; STICKLINE(RAW_FLOW0,0,RAW_FLOW,2,0),COLORGREEN; DRAWICON(FINAL_SIGNAL,FLOW_FAST,1);这里THRESHOLD用了MA(ABS(RAW_FLOW),20)*0.5意思是只有当资金流绝对值超过近20日平均波动的一半时才认为是有意义的涌动。FILTER的 5 是过滤窗口可以根据标的波动率调整。DRAWICON只画在FINAL_SIGNAL为真的位置避免图标堆叠。3.2 用通达信条件选股验证信号的历史表现副图指标看完之后下一步是把它转成条件选股公式跑一遍历史信号统计。在公式管理器里新建一个“条件选股公式”把副图里的FINAL_SIGNAL作为唯一输出条件。注意条件选股公式只能有一个输出所以要把画线部分全部删掉。{条件选股版本只输出信号} VOLUME:VOL; PRICE_CHG:(CLOSE-REF(CLOSE,1))/REF(CLOSE,1); RAW_FLOW:PRICE_CHG*VOLUME; FLOW_FAST:EMA(RAW_FLOW,5); FLOW_SLOW:EMA(RAW_FLOW,21); THRESHOLD:MA(ABS(RAW_FLOW),20)*0.5; CROSS_SIGNAL:CROSS(FLOW_FAST,FLOW_SLOW) AND ABS(RAW_FLOW)THRESHOLD; FINAL_SIGNAL:FILTER(CROSS_SIGNAL,5);保存后在通达信“条件选股”界面选择这个公式选一个时间段比如最近一年执行选股。选出来的股票列表就是历史上出现过信号的标的。然后手动或者用通达信的“区间统计”功能看信号出现后 1 日、3 日、5 日的涨跌分布。如果标题说“准确率90%”你要明确它指的是信号后上涨的概率还是信号后跑赢大盘的概率这两个口径差别很大。统计口径定义常见数值范围注意事项信号后1日上涨概率次日收盘价高于信号日收盘价45%-60%受大盘影响大信号后5日上涨概率5日后收盘价高于信号日50%-65%需剔除停牌信号后跑赢大盘概率同期涨幅超过指数40%-55%更接近真实alpha信号后最大回撤信号后最低价相对信号日负5%到负15%决定止损设置跑完统计你会发现任何单一副图指标都很难稳定到 90%。如果一份源码宣称 90%要么是统计口径做了手脚要么是样本区间特殊。更务实的做法是把这个副图信号当过滤器而不是当唯一买卖依据。3.3 副图信号和主图均线、MACD 的共振用法单独看资金涌动副图信号会偏多。我一般会加两层共振条件第一层是主图价格在 20 日均线之上第二层是 MACD 的 DIF 大于 DEA 或者绿柱缩短。这样过滤后信号数量会下降一半以上但质量明显提升。在通达信里实现共振不需要改副图公式而是用“条件选股”里的组合条件。先选资金涌动信号再叠加CLOSEMA(CLOSE,20)和MACD.DIFMACD.DEA。通达信的条件选股支持多个公式同时选取交集。如果你想把共振条件写进副图也可以在FINAL_SIGNAL后面加AND CLOSEMA(CLOSE,20)但这样副图就依赖主图数据公式可读性会变差。提示共振条件越多信号越少但不要为了追求高准确率无限叠加条件。一般两到三个独立维度的共振就够了超过三个容易过拟合。4. 把“准确率90%”翻译成可检验的统计口径4.1 用通达信导出信号数据到外部做统计通达信本身的条件选股结果可以导出为 TXT 或 CSV。在选股结果界面右键选择“导出数据”格式选 CSV。导出的文件里一般有代码、名称、信号日期。拿到这个文件后用 Python 做进一步统计会更灵活。import pandas as pd import akshare as ak # 读取通达信导出的信号列表 signals pd.read_csv(signals.csv, encodinggbk) signals.columns [code, name, date] signals[date] pd.to_datetime(signals[date]) results [] for _, row in signals.iterrows(): code row[code] sig_date row[date] # 用akshare获取该股票日线数据 df ak.stock_zh_a_hist(symbolcode, perioddaily, start_date(sig_date - pd.Timedelta(days10)).strftime(%Y%m%d), end_date(sig_date pd.Timedelta(days10)).strftime(%Y%m%d)) df[日期] pd.to_datetime(df[日期]) df df.set_index(日期) if sig_date not in df.index: continue sig_close df.loc[sig_date, 收盘] # 计算信号后1日、3日、5日收益 for n in [1, 3, 5]: future df.index[df.index sig_date] if len(future) n: ret (df.loc[future[n-1], 收盘] - sig_close) / sig_close results.append({code: code, signal_date: sig_date, horizon: n, return: ret}) res_df pd.DataFrame(results) print(res_df.groupby(horizon)[return].describe()) print(上涨概率) print(res_df.groupby(horizon)[return].apply(lambda x: (x 0).mean()))这段代码用akshare拉取个股日线计算信号后 1、3、5 日的收益率分布。groupby(horizon)按持有周期分组describe()给出均值、标准差、分位数(x0).mean()给出上涨概率。注意akshare的接口需要联网且股票代码格式要和通达信导出一致通常带市场前缀比如sh600000或sz000001如果导出的只有 6 位数字需要在代码里补前缀。4.2 区分“信号准确率”和“交易系统胜率”很多人把信号准确率和交易系统胜率混为一谈。信号准确率只统计信号出现后价格是否上涨不涉及买入时机、仓位、止损。交易系统胜率则要考虑你是在信号当天收盘买还是次日开盘买止损设多少止盈设多少。同一个信号不同的买卖规则胜率可以差 20 个百分点。我一般会做两个版本的统计一个是信号日收盘买入、次日收盘卖出这是最理想的执行另一个是信号次日开盘买入、跌破信号日最低价止损。后者的胜率通常比前者低但更接近实盘。如果标题里的“90%”是前者那它没有考虑滑点和执行延迟参考价值有限。注意用外部数据做统计时要确认复权方式。通达信默认是不复权akshare 默认是前复权两者在除权除息日附近会有价格差异导致收益率计算偏差。建议统一用前复权数据。4.3 参数过拟合的识别样本内和样本外表现差异资金涌动副图指标的可调参数虽然不多但平滑周期、阈值倍数、过滤窗口组合起来也有几十种。如果在一段历史数据上反复调参直到准确率看起来很高这就是过拟合。识别方法是把数据分成两段前 70% 做样本内调参后 30% 做样本外验证。如果样本外准确率比样本内低 15 个百分点以上说明参数过拟合了。具体操作上可以在 Python 里把信号数据按日期排序前 70% 的信号算一组后 30% 算另一组分别统计上涨概率。如果两组差异很大就回到通达信里把参数往保守方向调比如把快线周期从 3 改成 5把阈值倍数从 0.5 改成 0.8。保守参数通常样本外表现更稳。5. 副图指标源码的二次修改与实盘接入技巧5.1 把副图信号改成预警公式并接入通达信预警系统副图指标只能看不能主动提醒。实盘里更实用的是把它改成预警公式。在公式管理器里新建“条件预警公式”把FINAL_SIGNAL作为输出然后到通达信的“预警设置”里添加这个公式设置监控的股票池和预警周期。预警周期建议选“日线”如果做短线可以选“60分钟”。预警公式和选股公式的区别在于预警是盘中实时计算的所以公式里不能有REF引用当天收盘价之后的数据。上面那个FINAL_SIGNAL只用到CLOSE、VOL和REF(CLOSE,1)盘中计算时CLOSE是当前价VOL是当前成交量逻辑上没问题。但要注意盘中成交量是不完整的信号可能在尾盘才稳定。{预警公式盘中实时计算} VOLUME:VOL; PRICE_CHG:(CLOSE-REF(CLOSE,1))/REF(CLOSE,1); RAW_FLOW:PRICE_CHG*VOLUME; FLOW_FAST:EMA(RAW_FLOW,5); FLOW_SLOW:EMA(RAW_FLOW,21); THRESHOLD:MA(ABS(RAW_FLOW),20)*0.5; CROSS_SIGNAL:CROSS(FLOW_FAST,FLOW_SLOW) AND ABS(RAW_FLOW)THRESHOLD; FINAL_SIGNAL:FILTER(CROSS_SIGNAL,5);接入预警后通达信会在信号触发时弹窗或声音提示。如果同时监控的股票多建议把预警周期改成 60 分钟减少盘中频繁触发。另外预警公式里的FILTER窗口在盘中可能会因为成交量变化而反复所以实盘里我一般会把FILTER去掉改成人工确认。5.2 用 DRAWICON 和 STICKLINE 优化副图可读性副图指标的可读性直接影响使用效率。通达信的DRAWICON支持很多内置图标但默认图标比较小可以配合STICKLINE在信号位置画一根醒目的柱子。比如在FINAL_SIGNAL为真时在 0 轴附近画一根黄色柱子比单纯画图标更容易看到。{可读性优化版本} VOLUME:VOL; PRICE_CHG:(CLOSE-REF(CLOSE,1))/REF(CLOSE,1); RAW_FLOW:PRICE_CHG*VOLUME; FLOW_FAST:EMA(RAW_FLOW,5); FLOW_SLOW:EMA(RAW_FLOW,21); THRESHOLD:MA(ABS(RAW_FLOW),20)*0.5; CROSS_SIGNAL:CROSS(FLOW_FAST,FLOW_SLOW) AND ABS(RAW_FLOW)THRESHOLD; FINAL_SIGNAL:FILTER(CROSS_SIGNAL,5); STICKLINE(RAW_FLOW0,0,RAW_FLOW,2,0),COLORRED; STICKLINE(RAW_FLOW0,0,RAW_FLOW,2,0),COLORGREEN; STICKLINE(FINAL_SIGNAL,0,FLOW_FAST,3,0),COLORYELLOW; {信号位置画黄色粗柱} DRAWICON(FINAL_SIGNAL,FLOW_FAST*1.1,1); {图标画在快线上方}这里STICKLINE(FINAL_SIGNAL,0,FLOW_FAST,3,0)的第三个参数 3 是柱子宽度比资金流柱的 2 更宽视觉上更突出。DRAWICON的第二个参数FLOW_FAST*1.1是把图标画在快线上方 10% 的位置避免和柱子重叠。这些细节不影响信号逻辑但实盘看盘时能省不少眼力。5.3 源码文件格式转换tn6 转 txt 的常见做法通达信的公式文件有两种常见格式.tn6和.txt。.tn6是加密或打包后的格式不能直接用文本编辑器打开。如果你拿到的是.tn6文件想改成.txt导入常见做法是在通达信公式管理器里先导入.tn6然后在公式列表里选中它点“导出”选择导出为.txt格式。导出的.txt就是明文公式源码可以直接编辑。如果导入.tn6时提示格式不兼容检查通达信版本。不同版本的公式管理器对.tn6的支持有差异较老的版本可能只认.tne或.exp。这种情况下可以尝试在公式管理器里用“导入公式”功能选择文件类型为“所有文件”再手动选.tn6。导入成功后公式会出现在“其他类型”里再导出为.txt即可。提示导出为 txt 后公式里的中文注释可能会乱码用 Notepad 打开时把编码切成 GBK 就能正常显示。如果公式里用了自定义变量名导出后变量名会保留但函数名可能会被转成小写导入前检查一遍EMA、CROSS这些函数名是否被改成了小写通达信对函数名大小写不敏感但部分第三方编辑器会报错。本文还有配套的精品资源点击获取