ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

通达信周期指标详解:在日线图中实现周线级数据与多周期共振

通达信周期指标详解:在日线图中实现周线级数据与多周期共振 简介通达信时间周期指标公式源码面向使用通达信进行股票技术分析的投资者用于在K线图上自动标注基于斐波那契、卢卡斯等数列的时间节点辅助识别可能的趋势转折。源码核心通过DRAWTEXT函数实现当前K线数等于3、5、8、13、21等斐波那契数时在高点上方显示绿色数字在7、11、18、29等卢卡斯数位置显示白色标识关键低点下方则以红色数字提示颜色区分信号倾向可为选时提供参考。这份源码利用CURRBARSCOUNT统计距当前K线的根数标注位置和数字会随行情推进更新便于复盘历史高点与变盘窗口。压缩包内共1个docx文档大小108KB包含可直接复制的完整公式代码与简要说明已有82人学习。读者可直接将代码粘贴到通达信公式编辑器生成自定义指标也可调整数字、颜色与标注位置以适配自身策略是学习通达信公式编写和时间周期分析的有用素材。1. 为什么我坚持在日线图里做“周线级”指标先说一下我自己的痛点早年看盘时判断趋势总要在日线和周线之间来回切换。日线看到金叉切到周线一看还在下降通道里再切回来又忘了刚才的位置。后来我开始研究通达信指标公式源码里那些“时间周期”函数试着把周线、月线级别的数据直接搬进日线主图或副图里才彻底解决了这个问题。所谓“时间周期”指标公式核心就一件事在不切换周期的情况下用当前周期K线去计算并展示其他周期的指标值。比如你在日线图上直接画出“本周最高价”“本周最低价”“周线MACD的DIF值”这样就可以在一个界面里同时观察短周期和长周期的状态做多周期共振判断时效率高很多。这篇文章适合两类人一类是刚接触通达信公式、只会复制粘贴源码的新手想知道这些源码为什么能“跨周期”显示以及怎么改周期参数另一类是已经会写基础指标但一遇到“跨周期引用”、“时间周期函数”就头疼的老手。我会把通达信里和时间周期相关的几种做法拆开讲清楚包括官方函数、跨周期引用、以及我自己常用的“裸函数重采样”写法最后给出可直接编译的源码和验证方法。代码部分不含任何未来函数思路也不会诱导你去追涨杀跌仅仅是技术研究。顺便说明技术指标只是概率工具周期信号再漂亮也不能保证后市走势文中所有代码仅为公式写法演示。2. 三条路线通达信周期处理的实现层次通达信里处理“时间周期”其实有三条完全不同的路线我见过很多人混着用最后都绕晕了。我把它们的原理和坑一次说透。路线实现方式能选股吗有无未来函数风险适用场景官方周期切换直接点软件上的“周线”“月线”按钮不涉及无手动看盘跨周期引用公式里用指标名.输出线#WEEK之类的语法选股公式通常受限取决于被引指标自身写法需要真实周线数据的场景裸函数重采样用WEEKNUM、BARSLAST、HHV等函数自己拼出“周内序号”可以可控需要自建周期轨道、周期突破等信号先看第一条路线官方周期切换。它本质是把当前K线周期整体切换到周线、月线、季线或分钟周期然后所有指标都在新周期下重新计算。这种操作最简单但它不是“公式”也做不到在同一个界面同时展示多个周期所以我一般只用来人工复核不写进公式里。第二条路线跨周期引用是通达信官方支持的公式语法。比较典型的是这种写法周线DIF:MACD.DIF#WEEK;它表示在日线周期下引用周线周期下MACD指标的DIF线数值。这样日线图里就能直接看到周线MACD的变化趋势。我当时第一次用这个功能时觉得确实方便但用久了就发现两个实际问题跨周期引用在选股公式里限制很多很多券商版本根本不支持你写出来要么编译报错要么选出来的结果和副图显示不一致被引用的指标如果本身写得有问题比如内部用了CONST或其他未来函数那周线数据会被“污染”在历史K线上画出看似精准的买卖点实盘根本没法用。所以我后来的习惯是能不用跨周期引用就不用除非是被引用的周线数据结构实在复杂比如想直接拿到真实的周线均线系统才考虑这条路线。第三条路线裸函数重采样是我最推荐大家掌握的方法。它不依赖任何#WEEK语法只在当前周期内用几个函数判断出“这根K线属于哪个时间周期、周期内第几根”然后用HHV、LLV、SUM等函数把当前周期内的数据聚合起来。比如在同一根日线K线上算出“本周至今最高价”“本周至今最低价”“本周累计成交额”等这些数据本身没有未来函数而且可以用于选股公式。下面我用一整节来拆解这条路线的工作原理。3. 裸函数周期转换的核心定位周期起点裸函数重采样听着玄乎核心其实就两步找到每个周期的起点然后从起点数到当前K线一共有多少根。这两步解决了后面所有统计都是水到渠成的事。3.1 先用 WEEKNUM 判断“新周期第一根K线”通达信公式语言里有一个函数叫WEEKNUM它返回的是某个日期属于一年中的第几周。比如2024年1月2日如果属于第1周那它返回值就是12024年1月9日如果属于第2周就返回2。基于这个特性判断“当前K线是否为新一周的第一根K线”就非常简单周首:WEEKNUMREF(WEEKNUM,1);意思是如果当前K线的周数不等于前一根K线的周数说明这根K线是本周第一根。比如从上周跳到本周WEEKNUM从35变成36条件成立。这里有个细节值得注意判断周起点用WEEKNUM比用WEEKDAY更稳。一开始我写的是WEEKDAYREF(WEEKDAY,1)想通过“星期几变小”判断周一起点但遇到周一节假日休市时本周第一根K线可能是周二WEEKDAY从上周五的5跳到本周二的2逻辑也不难处理。可如果遇到国庆、春节这种长假中间可能跨过多个星期用WEEKDAY就很容易判断出错。WEEKNUM直接看“周编号是否改变”无论中间隔了几天休市都不会错。注意年末跨年时会从第52周或53周跳回第1周同样满足条件所以也能正确标记为新周期起点。3.2 用 BARSLAST 计算“距本周第1根K线有多远”找到周期起点之后下一步是算距离。通达信里有BARSLAST函数它返回上一次某个条件成立到当前的K线根数。距周首:BARSLAST(周首)1;解释一下这个公式如果当前K线刚好是周首那么BARSLAST(周首)返回0加1后距周首等于1表示“当前是本周第1根K线”如果当前是本周第2根那么BARSLAST(周首)返回1加1后距周首等于2以此类推。打个比方这就像切豆腐你每隔一段距离切一刀每一刀就相当于“周首”切完之后你又往前进了一步距周首就是这个“又前进的步数”。有了这个步数就能把所有统计函数的计算范围限制在“本周内”。比如本周最高:HHV(H,距周首); 本周最低:LLV(L,距周首); 本周开盘:REF(O,距周首-1);HHV(H, 距周首)是“从本周第1根到当前K线最高价的最高值”也就是本周至今的最高价LLV(L, 距周首)是“从本周第1根到当前K线最低价的最低值”REF(O, 距周首-1)是“回看距周首前1根的开盘价”由于从本周第1根算起这里取到的就是本周第1根K线的开盘价。我在写第一个版本时直接用REF(O,距周首)结果发现信号总是偏移一根K线后来才意识到当距周首1时REF(O,1)取的是昨天开盘价而不是今天的开盘价所以一定要减1。这种细节不亲自跑一遍光看别人源码很难发现。3.3 把统计结果画出来一个最简单的时间周期副图基于上面的逻辑写一个最简单的“周内轨道”副图周首:WEEKNUMREF(WEEKNUM,1); 距周首:BARSLAST(周首)1; 周开:REF(O,距周首-1),COLOR00FFFF; 周高:HHV(H,距周首),COLOR0000FF; 周低:LLV(L,距周首),COLOR00FF00;这段代码在日线周期下运行后副图会画出三条线本周开盘价、本周至今最高价、本周至今最低价。每天盘中周高和周低会随价格波动而变化直观反映当前价在本周所处的位置。我经常用它来判断“股价是否运行在周内高点上沿”或者“是否跌破了周内低点”这种信息在纯日线图里看不出来。理解了WEEKNUM和BARSLAST的组合你就有了一个基础引擎。后面想统计本周涨跌幅、本周成交额、本周振幅都可以基于同一个距周首变量去做。这也是为什么社区里很多源码的核心都离不开这两个函数。4. 可直接运行的源码周线轨道副图与选股扩展以下是我常用的一段完整源码命名为“周轨”即可编译通过后放在副图里看效果。它同时画出了本周开盘、周高、周低和本周均价线基本覆盖了日常看盘需要。{周轨副图} 周首:WEEKNUMREF(WEEKNUM,1); 距周首:BARSLAST(周首)1; 周开:REF(O,距周首-1),COLOR00FFFF; 周高:HHV(H,距周首),COLOR0000FF; 周低:LLV(L,距周首),COLOR00FF00; 周均:SUM(AMOUNT,距周首)/(SUM(VOL,距周首)*100),COLORFF00FF,DOTLINE;这里顺手解释一下周均的含义AMOUNT是成交额VOL是成交量单位手乘以100等于股数两者相除得到本周开盘至今的成交均价。它和分时图里的均价线思路一致只不过被放到了周线周期维度上对判断短期资金成本有参考价值。用的时候有几个操作细节公式类型选“副图”不要选“主图叠加”否则线和K线挤在一起周期切到日线因为源码里的函数逻辑是按“日线K线逐根判断”设计的如果盘中数据刷新滞后按CtrlS手动刷新一下行情副图线会同步更新。如果你试过这个副图后觉得有用想把它扩展成选股条件思路也很直接。比如我想选出“今天创出本周新高”的个股核心条件就是距周首1 AND CREF(HHV(H,距周首),1);拆解一下REF(HHV(H, 距周首), 1)代表“到昨天为止的本周最高价”排除今天的影响C...表示今天收盘价已经突破昨天为止的周内最高距周首1是为了过滤掉本周第一根K线因为第一根没有“昨天的周高”可以比较。完整选股公式可以这样写周首:WEEKNUMREF(WEEKNUM,1); 距周首:BARSLAST(周首)1; 昨日周高:REF(HHV(H,距周首),1); 突破:C昨日周高 AND H昨日周高 AND 距周首1; FILTER(突破,3);FILTER(突破,3)的意思是信号成立后3个交易日内不重复触发避免同一波突破连续几天都选出来。选股周期一定要设成日线因为公式中所有函数都是基于日线序列计算的。我还尝试过把它扩展成“月线轨道”。“月首”的判断逻辑类似需要换成月首:MONTHREF(MONTH,1); 距月首:BARSLAST(月首)1;MONTH函数返回月份跨月时自然触发条件变化。用同样的方式构造月高、月低就能在日线图里看到月线级别的支撑压力区间。不过要注意月线轨道的时间跨度更大信号频率更低参考价值反而更偏中长期不能和短周期混为一谈。5. 时间周期公式最容易踩的五个坑这部分是我个人最想写的。很多源码看起来逻辑没什么问题但一放到实盘环境就变样绝大多数都是踩了下边这些坑。我一条条说。5.1 周期起点判断在新年或长假时翻车前面我说WEEKNUM比WEEKDAY稳但它也不是万无一失。每年跨年时不同软件对“第1周”的定义可能不一致有的把1月1日就算第1周有的把第一个周一所在的周才算第1周。这就导致同一段K线在旧版本和新版本通达信里WEEKNUM的返回值可能差1。我处理这个问题的方法是在公式里加一个“周首辅助标记”用DATE值人工核对周首:WEEKNUMREF(WEEKNUM,1); DRAWTEXT(周首,LOW*0.98,周);把公式跑起来后如果副图每周第一根K线下方出现“周”字说明判断正确如果某些周没标记或者标记错位赶紧检查是不是跨年边界问题。5.2 CONST 函数带来的未来函数陷阱网上很多“解码后”的指标源码里都喜欢用CONST函数比如CONST(HHV(H, 距周首))或者CONST(REF(MA(C,5), 距周首))。我一开始也以为这样能把周线数值固定成水平线看起来信号特别清晰。后来深入研究才发现CONST的作用是“取序列最后一个值并平铺到所有K线上”也就是说它会把最新一天算出的结果回填到历史每一根K线上。在历史图上你看到的是很完美的直线或买卖点但那是“事后诸葛”实盘中根本不可能提前知道最终值。遇到这种写法不管指标名字多神都要保持警惕。正确的做法是用REF、HHV、LLV这类只能使用当时K线及之前数据的函数保证信号在盘中可以重复计算。5.3 跨周期引用在选股公式中不支持我想不少人都经历过副图里用MACD.DIF#WEEK显示正常一放进选股公式要么提示语法错误要么选出来结果为空。不同券商的通达信版本跨周期支持程度不一样有的只允许在技术指标公式中使用不允许在条件选股公式中使用。这不是你代码的问题是平台限制。解决办法有两个改用裸函数重采样把所有周线数据先算成普通序列再写选股条件或者先创建周线指标输出为个股数据到自定义板块再做二次筛选。我一般优先选第一个因为省事而且逻辑更透明。5.4 周内信号会随着本周K线增加而漂移日线周期下计算“本周新高”“本周均价”它们天然有一个特点每个交易日都会变化周五收盘后才会最终定格。所以你在周二看到的周线级别突破信号和周五收盘后回看时“当时信号是否成立”可能不一样。比如周初股价强势突破了当时的周内高点但后面两天冲高回落到周五再看那根K线可能已经被排除在突破条件之外。这种“信号漂移”不是公式错误而是周期统计的固有属性。应对办法是只有在接近周期末端时周期信号才更有参考价值。比如周线级别的突破最佳确认时机是周四、周五而不是周一。如果你用日线周期的信号去做短线交易必须对信号滞后有心理准备。5.5 公式被加密后的“解锁”乱象网上流传的“通达信指标带密码怎么解锁”其实是很多人都会搜的问题。坦白说大部分加密指标解锁后你会看到两个结果一是源码里塞满了CONST和一堆无意义的中间变量功能并没有宣传的那么神奇二是解锁过程本身就伴随风险比如导入第三方插件或DLL反而可能影响交易终端安全。我的个人观点是与其花精力去解锁别人的黑盒指标不如把WEEKNUM、BARSLAST、HHV这几个基础函数吃透自己写出来的公式至少每一步逻辑都清楚出了问题也知道去哪修。如果你手上确实有必须用的加密指标也建议只在模拟环境验证不要直接放到实盘账上。6. 怎么验证你的时间周期指标没有未来函数最后分享几个我用得最多的验证方法适合任何周期类指标尤其适合你准备拿真金白银去参考的公式。6.1 手工对比周线图和日线图最简单粗暴的方法把源码跑在日线副图上然后在同一只股票上切到周线周期对比“本周开盘价、本周最高、本周最低”是否和你副图里最后一根K线上的数值一致。如果一致说明周期统计逻辑正确如果不一致查一下是距周首的边界错了还是周线软件本身的复权方式和你主图不一样。我举一个具体例子如果你在日线图用了前复权数据但切到周线图时软件默认也做了前复权那么数值应该是一致的。但如果日线图用的不复权、周线图用的前复权两者会差一个除权除息缺口这不是公式问题而是数据口径问题。遇到这种情况先把两个周期都统一成“前复权”再对比。6.2 用“标记函数”定位周期起点在副图里加一行DRAWTEXT(周首, LOW, 起);如果公式逻辑正确你会在每个新周期第一根K线下方看到“起”字。然后对照K线图最底部的时间轴看看这些标志是否正好落在每周第一个交易日上。如果某些周少了或者某些周多了一个标志说明WEEKNUM或跨年判断在你的数据源下需要额外处理。6.3 回放验证昨天没信号今天有信号不算问题昨天有信号今天没了才是问题我常给朋友讲一个口诀未来函数的最大特征是“昨天有信号今天却消失了”。因为未来函数在历史片段上用的是“最终值”所以K线走完后信号是固定的而实时计算时随着新K线加入早些K线上被赋的值可能会变化看起来就像信号突然消失。针对这个特征你可以用通达信的“公式回放”功能把K线停在某个历史日期看公式当时是否给出信号。如果回放到历史某天时显示有信号但把K线拉到当前最新位置后再回看那天信号却没了那这个公式大概率有未来函数。我自己的使用习惯是任何带未来函数嫌疑的指标只用来复盘研究绝不上实盘。裸函数写的HHV、LLV、SUM都是天然无未来函数的这也是我坚持用裸函数重采样做周期指标的根本原因。7. 一点个人体会别迷信源码理解周期才是核心这几年我研究过不少“时间周期”相关的通达信指标源码也帮朋友修复过很多下载下来乱码、带密码、编译不过的公式。从中最大的体会是源码本身不神秘真正有价值的是你如何理解周期、如何判断边界条件。把WEEKNUM、BARSLAST、距周首这几个概念吃透你既能看懂别人公式里的门道也能自己写出更贴合交易思路的指标。如果你刚开始接触这块建议先从“周轨副图”这个例子入手在几只不同股票上反复观察一周看看周高、周低、周开三条线的变化节奏。等你习惯了这种“日线图里看周线数据”的视角再往月线、季线、分钟线扩展就会发现通达信的时间周期组合几乎可以满足所有自定义需求。最后再说一句公式只是工具周期只是观察角度真正做决策时永远要把风险控制放在第一位。本文还有配套的精品资源点击获取
返回列表