拓冰建站拓冰建站
首页 / 资讯中心 / 正文

通达信游资专用副图源码:从.doc清洗到公式管理器编译排错

简介这是一份面向A股短线交易者、通达信软件用户的副图指标公式源码文档侧重游资风格的波段与趋势捕捉。文档围绕价格数据的数学处理展开涵盖多周期简单与指数移动平均线、中间价与标准差通道、趋势强弱比值、金叉死叉过滤以及成交量配合等模块并用DRAWTEXT标注买入、卖出与抄底提示辅以STICKLINE柱体区分升降趋势。资源包内含1个doc文件约161KB可直接复制公式到通达信公式管理器中新建副图指标对照源码逐段理解各变量的计算逻辑与信号触发条件。目前已有335人学习下载适合希望研究游资操盘思路、完善自选指标体系的投资者参考。需要留意的是任何技术指标都应结合市场环境与个人交易策略综合使用不宜单独依赖信号决策。1. 一份打着「游资专用」的副图 .doc真正值钱的是可复现的公式结构群里转来的文件名通常长这样通达信指标公式源码游资专用 副图源码.doc。双击打开里面是彩色加粗的中文公式还带章节编号和「内部资料」字样看着像回事把内容复制进通达信公式管理器点测试第一行就弹出语法错误。这个落差不是你的操作问题而是载体问题——Word 文档不是通达信的公式格式它只是一份带排版的文本。剥开「游资专用」这层包装文件里装的是一段技术指标公式读的是行情软件本地已有的开高低收、成交量、成交额和分时数据算出几条曲线画在 K 线下方。所谓游资痕迹本质是用量比、主动买占比、均价偏离这些可观测量去近似推断没有哪条公式能直接看到席位。它能不能用取决于参数怎么设、信号会不会漂、以及你是否知道它什么时候失效。后面按一条完整链路走从 .doc 里把公式抠出来并洗干净落到公式管理器里编译成副图指标再讲资金强度、量能饱和度这类核心算法怎么写然后是参数表、报错定位、未来函数排查最后是 tn6 互转与批量校验。手上有源码文件却导不进去的人可以照着一步步做。2. .doc 里的通达信副图源码怎么落到公式管理器提取、清洗、编译2.1 先分清 doc、txt、tn6 三种载体能不能直接导入拿到文件先看扩展名这一步决定了后面要走多少弯路。通达信公式管理器认的导入格式是它自己的打包文件Word 文档不在其中任何「把 doc 拖进公式管理器」的尝试都会失败。常见载体的差异如下。载体扩展名内容形态能否直接导入典型来源Word 文档.doc / .docx排版文本含全角标点、批注、图片不能论坛附件、群文件转发纯文本.txt一行行公式半角符号可以导入公式时选文本文件手工整理、从公式管理器导出公式包.tn6通达信自有打包格式含公式名、参数、多条公式可以导入公式时选 tn6公式管理器导出早期公式包.tne老版本导出格式部分版本可以老资源其它软件公式各自格式语法体系不同不能跨平台搬运.doc 是二进制复合文档Word 保存时会顺手把中文输入法打出的全角冒号、全角分号原样写进去还会插入软回车垂直制表符和不间断空格。这三类字符在通达信编译器眼里都是非法字符所以流程上必然要过一遍「抽取 清洗」direct 粘贴是没有出路的。提示如果文档里的公式是截图贴进去的先做 OCR 再清洗OCR 对:、、的识别率很低必须人工核对赋值符号。2.2 用 python 把 .doc/.docx 里的公式正文抽成纯文本python-docx 只认 .docx遇到老 .doc 要先转换。LibreOffice 命令行转换不需要打开界面适合批量处理转换完目录里就有了可读的 docx。# 老版 .doc 先转成 docxheadless 模式批量跑 libreoffice --headless --convert-to docx --outdir ./docx ./游资专用副图源码.doc # 目录里若有多个文档用通配符一次转完 ls ./docx转换完成后抽取正文。这里有个容易漏的点很多分享文档把公式塞在表格里做「分栏」只读doc.paragraphs会得到空字符串。from docx import Document import pathlib SRC pathlib.Path(./docx) DST pathlib.Path(./txt) DST.mkdir(exist_okTrue) for f in SRC.glob(*.docx): doc Document(str(f)) lines [p.text for p in doc.paragraphs] # 普通段落 for t in doc.tables: # 表格里的公式段落 for row in t.rows: for cell in row.cells: lines.extend(cell.text.splitlines()) text \n.join(lines) (DST / (f.stem .txt)).write_text(text, encodingutf-8) print(f.name, len(text))逻辑说明doc.paragraphs按文档顺序返回段落对象p.text取纯文本不带样式doc.tables单独遍历因为表格单元格里的文字不属于顶层段落。输出统一用 UTF-8避免后续读写出现乱码。参数上没有可调项唯一要改的是SRC和DST两个路径。如果打印出来的字符数只有几十说明公式是以图片形式存在的得回到 OCR 流程。2.3 全角符号与 Word 隐形字符的清洗规则抽取出来的文本不能直接粘贴得先做字符级替换。下面这张表是踩过坑之后总结的高频字符左边是 Word 里的原样右边是通达信能接受的形式。现象原始字符替换为不替换的后果中文冒号:变量...被当成整行报未知变量中文分号;语句不结束最后一行合并报错中文逗号,函数参数解析失败全角括号()函数名无法识别中文引号“ ”DRAWTEXT 的文字参数报错软回车\x0b\n多行挤成一行不间断空格\xa0普通空格变量名中混入不可见字符import re, pathlib FULL2HALF str.maketrans({ : :, : ;, : ,, : (, : ), “: , ”: , ‘: , ’: , : , : , : , : , : -, : *, }) def clean(src: str) - str: s src.replace(\u00a0, ).replace(\x0b, \n) # 隐形字符 s s.translate(FULL2HALF) # 全角转半角 s re.sub(r[ \t]$, , s, flagsre.M) # 去掉行尾空格 s re.sub(r\n{3,}, \n\n, s) # 压缩空行 s re.sub(r^(第\s*\d\s*[章节].*)$, r{\1}, s, flagsre.M) # 中文小标题转注释 return s for f in pathlib.Path(./txt).glob(*.txt): out pathlib.Path(./clean) / f.name out.parent.mkdir(exist_okTrue) out.write_text(clean(f.read_text(encodingutf-8)), encodingutf-8)逐条说明translate用映射表一次替换全部全角符号比链式replace快且不会互相干扰re.M让^和$按行匹配行尾空格和中文小标题都是逐行处理最后一条把「第三章 资金强度」这类标题包进{}通达信把花括号内容当注释不会参与编译。改造过的源码如果要发出去先确认里面没有个人备注。2.4 在公式管理器 6.06 里新建副图指标并完成第一次编译清洗完就可以落地了。通达信打开公式管理器是 CtrlF也可以走「功能 → 公式系统 → 公式管理器」。展开左侧的「技术指标」选中一个自定义分组点「新建」。公式名称用英文或拼音别用空格和中文标点避免调用时输入困难。关键一步是「画线方法」下拉框必须选「副图」选成主图会导致坐标体系和 K 线冲突曲线画不出来。切到「参数」标签页填参数名和区间参数名要和源码里用的一致比如 N、M、P。粘贴清洗后的源码点「测试公式」。编译器会返回第一个错误所在的行号改完再测重复到提示「测试通过」为止。点「确定」保存回到 K 线图输入公式名的首字母就能调出。常见做法是先拿几只走势差异大的票对照看确认曲线没有压在 0 轴不动、也没有跑到坐标框外面再考虑挂预警。3. 游资专用副图源码的核心结构资金强度、量能饱和度、情绪线怎么算3.1 副图能拿到的数据边界为什么「游资痕迹」只能做近似通达信普通版本地数据里能直接用的是每根 K 线的开高低收、成交量、成交额以及分时序列。逐笔委托队列、大单标记、席位信息属于更高等级的数据服务普通公式取不到。所以市面上的资金类副图走的都是代理变量路线用收盘价在当日振幅中的位置拆分主动性成交用成交量与均量的比值衡量放量程度用成交额除以成交量还原当日均价再和收盘价比较。理解这一点很重要它决定了你该怎么用这些指标。代理变量的噪声不小一根大阳线里的主动买占比可能被振幅放大得离谱所以看趋势变化比看绝对值更有意义。谁要是把某条资金线当成真实资金流很容易在震荡市里被反复打脸。可观测量常见代理含义稳定性收盘价在振幅中的位置主动性成交占比的近似中日线尾盘拉升会失真成交量 / 均量放量倍数、量能饱和度较高跨周期都能用成交额 / 成交量当日均价用于偏离度计算高分时均价与现价之差日内强弱中受开盘跳空影响3.2 量能饱和度归一化与 1.00 圆圈的三种画法量能饱和度的思路是把放量程度压到 0 到 1 之间1.00 表示「放量到顶」。做法是先算量比再除以一个放大倍数最后用 MIN 截断避免极端行情把坐标撑变形。参数 M 就是放大倍数M 越小越容易触顶M 越大越难触顶通常取 3 左右。到顶那一下怎么画有三种写法兼容性和效果各不相同。柱状填充最直观用 STICKLINE 从 0 画到饱和值图标法用 DRAWICON但图标编号在不同版本里对应关系不一致移植性差文字法用 DRAWTEXT 直接在 1.00 位置写字符串跨版本最省心缺点是只能看到点看不到柱子。{量能饱和度 副图 —— 三种到顶标记写法} N:20; M:3; 量均:MA(VOL,N); 量比:VOL/IF(量均0,1,量均); 饱和:MIN(1,量比/M),COLORYELLOW,LINETHICK2; {主曲线0~1} {写法一柱状填充最直观} STICKLINE(饱和0,0,饱和,2,0),COLORYELLOW; {写法二图标编号依版本而定} DRAWICON(饱和0.999,1.00,1); {写法三文字标 1.00移植性最好} DRAWTEXT(饱和0.999,1.00,1.00),COLORRED; 顶线:1.00,COLORGRAY,DOTLINE; {1.00 参考线}参数说明MA(VOL,N)是 N 周期成交量均值N 取 20 时代表一个月的平均量能IF(量均0,1,量均)是除零保护停牌或数据缺失时量均可能为 0不保护会直接中断计算MIN(1,量比/M)把结果压进 0 到 1STICKLINE(条件,起点,终点,宽度,空心标志)中空心标志 0 表示实心柱。三种写法建议只留一种同时保留会在画面上重叠。3.3 主力资金强度主动额拆分与均价线偏离资金强度要解决的是「这根 K 线的成交额里有多少是往上买的」。普通行情数据没有逐笔方向业内常用的近似是把当日振幅当成分布区间收盘价越靠近最高价认为主动性买入比例越高。{主力资金强度 副图 —— 主动性成交额近似} P:20; 均价:AMOUNT/IF(VOL0,1,VOL)/100; {成交额/成交量还原当日均价} 强弱:IF(HIGHLOW,0.5,(CLOSE-LOW)/(HIGH-LOW)); {0~1越靠上越强} 主动额:AMOUNT*强弱; {近似主动买入额} 净额:主动额-(AMOUNT-主动额); {净额 主动 - 被动} 资金:净额/IF(MA(AMOUNT,P)0,1,MA(AMOUNT,P)),COLORRED; 零轴:0,COLORGRAY,DOTLINE;逻辑说明AMOUNT单位是元VOL单位是手除以 100 之后才是每股均价HIGHLOW表示一字板或数据异常此时比例无意义直接给 0.5 中性值这是必须补的分支否则分母为零会让整条公式失效。最后一步除以 P 周期成交额均值做归一化目的是把不同市值、不同价位的股票拉到可比较的量级上否则大盘股的资金线会比小盘股高出一个数量级同一张副图没法通用。需要留意的是一字涨停时HIGHLOW强弱值恒定资金线会走平这不代表没有资金活动只是数据本身无法区分。看到线走平先查当天是不是涨跌停不要急着改参数。3.4 三条线合成一张副图坐标统一与阈值标线量能饱和度在 0 到 1 之间资金强度归一化后大约在 -3 到 3 之间两条量纲不同的曲线画在一起资金线会把量能线压成一条平线。常见做法是先各自压缩再按权重合成一条情绪线把原始曲线用淡色保留作参考。曲线原始范围压缩方式建议权重量能饱和度0 ~ 1本身已在 0~10.6资金强度约 -3 ~ 3除以 3 后截断0.4情绪线0 ~ 1两条加权求和输出用权重不是拍脑袋定的。量能数据来自真实成交量噪声小权重给高一点资金强度是估算值权重压低避免它一个人带偏整条线。合成前先把资金强度截断到 -1 到 1再线性映射到 0 到 1这一步不做情绪线会出现负值和饱和度无法同轴比较。两条原始曲线用 COLORGRAY 之类的淡色画情绪线加粗视觉上主次分明。4. 副图源码调参与排错参数表、编译错误、未来函数4.1 参数标签页怎么填周期、阈值、平滑的取值区间参数填在公式管理器的「参数」标签页格式是「参数名(最小值,最大值,默认值)」。填完点「测试公式」参数名要和源码里出现的完全一致多一个空格都会报未知变量。参数含义建议区间默认调大的效果调小的效果N量能均线周期5 ~ 6020曲线更平滑突发放量被稀释更灵敏日内噪声多M饱和放大倍数1 ~ 103更难触顶信号变少频繁触顶失去区分度P资金均额周期5 ~ 6020偏向中期资金结构偏向日内跳动剧烈W资金权重0 ~ 10.4资金主导震荡市易误报量能主导忽略资金转弱调参不要一次改多个。固定 P 和 W只动 N从 10、20、30 各跑一遍同一只票把触顶次数记下来比凭感觉改靠谱得多。参数区间也别开太宽最大值给到 200 会让不懂的人随便填反而更容易出问题。4.2 编译报错逐条定位未定义变量、除零、函数不适用公式管理器的报错信息比较简短多数时候只给行号和一句提示。下面这张对照表覆盖了绝大部分情况。报错提示真实原因处理办法行 N未知变量全角冒号、变量名含空格或不可见字符回到清洗脚本重跑行 N语法错误缺分号、括号不配对逐行数括号确认每句以分号收尾行 N函数名错误拼写不符如把 PLOYLINE 写成 POLYLINE查函数列表核对拼写结果恒为 0 或空分母为零未做保护分母统一套IF(x0,1,x)选股时报画线函数不可用公式里带 DRAWTEXT、STICKLINE 等拆成显示版和选股版两份有一个拼写坑值得单独说通达信的多点连线函数写作PLOYLINE不是常规拼写的POLYLINE不少从别处抄来的源码在这行反复报错改一个字母就好。另外函数名区分大小写的情况在部分版本存在养成全大写或全小写统一的习惯能省掉很多排查时间。4.3 信号漂移的根源ZIG、PEAK、BACKSET 这类未来函数源码里出现ZIG、PEAK、TROUGH、BACKSET、REFX、BARSNEXT就要提高警惕。这类函数在计算某个时点的值时会用到该时点之后的数据历史图上看起来每个拐点都抓得准实盘走到最后一根时数值还会变也就是常说的信号漂移。判断方法很直接把公式装在图上今天记下最后几根 K 线的信号状态明天开盘前再看一次同样的历史位置如果状态发生了改变说明用了未来数据。也可以借助公式管理器自带的检测或第三方检测工具但要清楚这些工具只能查已知函数名改头换面的写法查不出来。漂移对副图的影响比对选股小但也别拿它做回测。用带未来函数的公式统计胜率得到的结果没有参考价值因为回测时每个信号都提前知道了后面的走势。4.4 把副图源码复用成预警与选股条件同一套算法要挂预警或者做条件选股必须去掉全部画线函数把结论收成一个输出变量。选股公式里出现 DRAWTEXT、DRAWICON、STICKLINE编译阶段就会被拦下来。{游资承接预警 —— 条件选股公式不含画线函数} N:20; M:3; P:20; 量均:MA(VOL,N); 饱和:MIN(1,(VOL/IF(量均0,1,量均))/M); 均价:AMOUNT/IF(VOL0,1,VOL)/100; 强弱:IF(HIGHLOW,0.5,(CLOSE-LOW)/(HIGH-LOW)); 净额:AMOUNT*强弱-(AMOUNT-AMOUNT*强弱); 资金:净额/IF(MA(AMOUNT,P)0,1,MA(AMOUNT,P)); XG:饱和0.999 AND 资金0.5 AND CLOSEREF(CLOSE,1);说明公式新建时类型选「条件选股」画线方法那一栏就不用管了。输出变量固定叫XG通达信按这个名字识别选股结果。三个条件分别是量能触顶、资金强度过阈值、当日收红用 AND 连接条件越多信号越少实测下来一天可能只出一两个属于正常范围。挂预警时在「预警设置」里选这个公式周期选日线触发方式选「实时监控」具体可选项随版本略有差异。5. 副图源码的进阶玩法tn6 互转、批量校验与版本留痕5.1 tn6 与 txt 的互转什么时候必须用 tn6公式管理器里选中一条指标右键或菜单里有导出选项能导成 tn6 打包文件部分版本支持导出为文本。tn6 的优势是自带公式名、参数和画线方法导入方不用手工重填文本只保留公式体导入后还要自己建公式、自己填参数。要在多台机器之间同步或者发给同事用 tn6 明显省事。反过来需要看源码内容、做 diff 比对、改参数就得用文本。遇到只有 tn6 没有源码的情况先导入到自己的公式管理器再导出成文本就拿到了可读的公式体。注意不同版本的 tn6 兼容性有差异低版本导出的包在高版本里一般能导入反过来不一定跨版本传递时留一句版本备注给自己。5.2 批量校验一次检查多个副图源码能不能编译收了一堆清洗好的 txt一条条手工粘贴测试太慢。可行的做法是写个脚本把每个文件里的公式体读出来做静态检查括号是否配对、每句是否以分号结尾、是否含未来函数关键字、分母是否都做了除零保护。检查项正则或方法命中后的处理括号配对统计(与)数量手工补齐语句结尾每行末尾是否为;或注释补分号全角残留匹配[\uFF00-\uFFEF]回清洗脚本未来函数匹配 ZIG、PEAK、BACKSET 等标记人工确认除零风险查找裸除法/后是否为 IF 包裹补 IF 保护import re, pathlib RISKY (ZIG, PEAK, TROUGH, BACKSET, REFX, BARSNEXT) for f in pathlib.Path(./clean).glob(*.txt): s f.read_text(encodingutf-8) problems [] if s.count(() ! s.count()): problems.append(括号不配对) if re.search(r[\uFF00-\uFFEF], s): problems.append(含全角字符) for k in RISKY: if re.search(rf\b{k}\b, s): problems.append(f疑似未来函数 {k}) print(f.name, |, .join(problems) if problems else 静态检查通过)这段脚本只做静态筛查不替代真机编译但能把明显有问题的文件先挡掉剩下的再逐条导入测试效率差出好几倍。\b做单词边界匹配避免把变量名里包含 PEAK 的标识符误判成函数调用实际用的时候根据自己命名习惯微调。5.3 版本留痕源码文件怎么命名和比对改造过的公式一定要留痕不然过两个月自己也说不清哪版是好的。命名按「公式名_版本_日期」的格式比如youzi_chengjie_v1.2_20250315.txt版本号在公式体第一行的注释里也写一份。改动前后用diff看一眼只改了参数还是改了算法一眼能分出来。diff -u youzi_chengjie_v1.1_20250310.txt youzi_chengjie_v1.2_20250315.txt调参到某个阶段感觉效果不错就把那一版单独复制出来冻结后面的改动另开文件别在同一个文件上反复覆盖。真到了要复盘某次信号为什么没触发手里有历史版本五分钟就能查清是公式的问题还是参数的问题。本文还有配套的精品资源点击获取
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门