资讯动态

BARSLAST与REF组合的高低点识别:文华WH6波浪尺源码详解

发布时间:2026/9/17 17:13:20 来源:尧图企业网站定制
简介文档收录了文华财经平台的波浪尺指标公式源码适合熟悉技术分析、希望自建自定义指标的股票投资者与量化爱好者。指标围绕波段高低点识别展开通过BARSLAST定位前高前低结合预判点、判断点、高保留与低保留等条件过滤信号并用DRAWLINE、DRAWBAND函数绘制上下两条波浪尺参考带辅助观察压力与支撑源码还附带笔底分型选股逻辑可进一步筛选潜在转折。资源共1个doc文件整体大小50KB包含完整公式代码与分段说明按逻辑块逐行注释关键函数便于直接导入文华财经软件测试或在此基础上二次修改。目前已有661人学习适合刚接触指标编写、想通过现成源码理解波浪尺构造成型的用户作为参考。1. 用 BARSLAST 和 REF 撑起的高低点骨架波浪尺源码的结构判定拿到这份 doc 的时候第一反应是去找 DRAWBAND 和 DRAWLINE 的画线逻辑结果发现真正的难度不在画线而在画线之前那一大段用 BARSLAST、REF、HHV 组合出来的高低点识别链。整份源码其实嵌套了三层先用局部高低预选函数框出候选点再用缺口判断和距前高/前低天数过滤掉连续 K 线内部的杂波最后用极点保留标记供给 DRAWLINE 画趋势线。很多人把这套公式当“波浪尺”用但它实际是“缠论分型选股 波浪尺划线 均线轨道”三合一的复合指标。文华 WH6 的公式语言和通达信不完全一样变量名允许中文但函数名和标点必须是英文半角。这份源码里变量名之间带空格比如“距前高天 YA:BARSLAST(高保留 X1)”复制进公式编辑器后如果显示语法错误先检查是不是全角空格或中文括号混进去了。适合的人群也很明确已经会用 DRAWLINE 做基础趋势线但对“高保留”“低保留”“极点保留”这些递推条件没有形成系统认知的人这套源码能把选点逻辑一次补齐。2. 高保留与低保留的判定链路从预选到极点的三层确认2.1 BARSLAST 与 REF 构建的左右侧确认起点是这两行距前高天 YA:BARSLAST(高保留 X1); 距前低天 YA:BARSLAST(低保留 X-1);BARSLAST 返回的是最近一次条件成立到当前的周期数。比如“高保留 X1”成立在当前 K 线BARSLAST 返回 0如果条件在 3 根 K 线前成立返回 3。这里的“高保留 X”不是文华内置函数而是指标编写者自定义的上一级输出doc 里没有给出它的完整定义但从“低保留 X-1”的用法能推断出高保留 X 是布尔型或数值型状态值1 表示该位置被确认为波峰候选-1 表示波谷候选。拿到“距前高天”和“距前低天”之后立即进入预判分支预判 YX:IF((距前低天 YA4 AND HHV(缺口判断,距前低天 YA)!1) OR REF(低保留 X,距前低天 YA)0,1,0);这个条件有两层意图。第一层距前低天小于 4 表示前一个低点很近近端低点如果缺口判断在短时间内没有触发 1 值即没有形成有效突破说明当前区域处于窄幅震荡低点有效性存疑此时给出预判值 1第二层REF(低保留 X, 距前低天 YA)0 表示回看前低位置时低保留尚未标记完成。二者任一成立预判值置 1代表当前高点左侧低点基础不牢固需要更高条件来确认。缺口判断这个变量同样没有在源码里定义常见做法是把它做成 ATR 倍数突破标记缺口判断:IF(HREF(H,1)ATR(14)*0.5 OR LREF(L,1)-ATR(14)*0.5,1,-1);2.2 判断 YX 的四因子共振预判通过后才进入核心判断行判断 YX:IF(局部高点预选 C1 AND REF(距前低天YA,1)REF(距前高天 YA,1) AND 预判 YX1 AND 大值周期REF(小值周期,距前低天 YA1) AND 大值周期REF(小值周期,距前低天 YA) AND 大值周期REF(大值周期,距前高天 YA),1,0);这里“局部高点预选 C”也是外部输入先不管它的具体生成方式只看这个判断是怎么把 1 值逼出来的局部高点预选 C1当前 K 线被更高层逻辑认定为局部高点REF(距前低天YA,1)REF(距前高天 YA,1)左侧最近的波谷比波峰更近说明价格刚经历快速下探后回升预判 YX1前述近端低点不牢固的预判成立大值周期同时大于 REF(小值周期, 距前低天YA1)、REF(小值周期, 距前低天YA)、REF(大值周期, 距前高天YA)三个周期比较同时成立本质是在验证当前高点对应的周期级别确实大于左侧相邻高低点周期级别这段代码的价值在于把“确认”从单点比较改成跨周期比较。如果只写“HREF(H,1)”连续三根阳线就能触发信号加上这三个 REF 周期比较信号必须同时突破前高、突破前低后的周期、以及前高本身的周期噪声被大幅压掉。2.3 高保留与低保留的最终合流接下来是高保留的两个分支高保留 YXA:IF(局部高点预选 C1 AND REF(距前低天YA,1)REF(距前高天 YA,1) AND HHV(H,距前低天YA1)REF(HHV(H,距前低天 YA1),1),1,0); 高保留 YXB:IF(局部高点预选 C1 AND REF(距前低天YA,1)REF(距前高天 YA,1) AND REF(低保留 X,距前低天 YA)-1 AND (距前低天 YA4 OR HHV(缺口判断,距前低天 YA)1),1,0); 高保留 YX:IF((高保留 YXA1 OR 高保留 YXB1 OR 判断 YX1) AND HREF(L,距前低天 YA1),1,0);高保留 YXA 捕捉的是“左高右低”形态即前高距当前更远、前低距当前更近此时要求 HHV(H, 距前低天YA1) 创出新高说明价格在突破前低对应的窗口高点。高保留 YXB 处理“左低右高”要求左侧波谷已确认且距前低天数不小于 4同时缺口判断区间内有 HHV1。最后的合流条件 HREF(L, 距前低天YA1) 是硬门槛当前最高价必须高于左侧最近波谷之后那一根 K 线的低点防止假突破。低保留是镜像逻辑区别只在 LLV 和 REF(H, 距前高天YA1)。下面把两者关键差异整理成对照表条件项高保留 YX低保留 YX波峰/波谷预选局部高点预选 C1局部低点预选 C-1突破参照HREF(L,距前低天YA1)LREF(H,距前前高天YA1)窗口统计函数HHV(H,N)LLV(L,N)缺口判断方向HHV(缺口判断,N)1LLV(缺口判断,N)-1反向保留确认REF(低保留 X,N)-1REF(高保留 X,N)1高低保留最终合并为极点保留AAAD:IF(高保留 YX1 AND 低保留 YX-1 AND HREF(H,REF(距前高天 YA,1)2),1,IF(...条件B...,-1,0)); 极点保留:IF(AAAD0,高保留 YX低保留 YX,AAAD);AAAD 处理的是“同根 K 线同时触发高保留和低保留”的冲突场景如果当前最高价高于前高窗口再往后两天的最高价取 1否则再看最低价是否击穿前低窗口取 -1两者都不满足才退化为 0此时直接叠加高保留与低保留值。这个设计避免了同一根 K 线既是高点又是低点的逻辑紊乱。3. 缠论分型的 K 线滤波V0 到 V10 的形态枚举与包含处理3.1 四类 K 线位置关系的定义源码后半部分有一段被 /* */ 注释掉但完整保留的分型选股逻辑变量从 V00 到 V10 共十一组再加 HV00 到 HV10 的顶分型镜像。这段在 doc 中被注释说明原作者的交付版本没有启用它但对研究分型算法非常有参考价值。第一层定义是四类 K 线关系V00: HIGHREF(HIGH,1) AND LOWREF(LOW,1); // 包含关系高点降低且低点降低 V01: HIGHREF(HIGH,1) AND LOWREF(LOW,1); // 完全包含高点更低、低点更高 V02: HIGHREF(HIGH,1) AND LOWREF(LOW,1); // 反向包含高点更高、低点更低 V03: HIGHREF(HIGH,1) AND LOWREF(LOW,1); // 双升形态高点抬高且低点抬高 V04: REF(HIGH,2) HIGH AND REF(LOW,2) LOW AND REF(HIGH,2) REF(HIGH,1) AND REF(LOW,2) REF(LOW,1); // 三K 形态V00 描述的是“孕线”结构当前 K 线高低点同时低于前一根意味着前一根是短期的压力位V01 是完全包含当前 K 线完全落在前一根的范围内V02 是当前 K 线完全包含前一根V03 才是趋势延续的标准形态。V04 是三根 K 线的复合比较用于确认第二根 K 线是否是转折中枢。3.2 底分型的窗口约束底分型选股条件从 V1 到 V10每一行都在做同一件事在 N 根 K 线内统计 V00 出现次数不少于 3V01 或 V02 的出现次数不超过上限同时要求最低点出现在窗口内的特定位置V1: COUNT(V00,6)3 AND COUNT(V01 OR V02,5)0 AND LLVBARS(LOW,6) 1 AND HHVBARS(HIGH,6) 5 AND V03; V2: COUNT(V00,7)3 AND COUNT(V01 OR V02,6)1 AND LLVBARS(LOW,7) 2 AND HHVBARS(HIGH,7) 6 AND V04;这里 LLVBARS(LOW,6)1 的含义是最近 6 根 K 线的最低点出现在昨天第 1 根而不是今天。这是分型确认的关键条件——如果最低点出现在今天分型尚未形成还需要等待下一根 K 线验证。HHVBARS(HIGH,6)5 则要求最高点出现在 5 根之前即当前价格已经脱离高点回落形成左侧高点。V2 比 V1 多了一个 V04 三 K 复合判断同时把窗口扩大到 7 根LLVBARS 位置放松到 2。随着窗口从 6 扩大到 11LLVBARS 允许的位置在 1 和 2 之间交替HHVBARS 的下限同步提高。这组参数的设计意图是短窗口形态严格长窗口形态允许更多中间波动。参数对应的实际含义变量窗口 NCOUNT(V00) 要求LLVBARS 位置HHVBARS 下限最终 K 线条件V16315V03V27326V04V37316V03V48327V04V58317V03V69328V04V79318V03V810329V04V910319V03V10113210V04这个表直接用源码提炼没有做任何参数修改。可以看到 V03 和 V04 交替出现的节奏V03 是两根 K 线的直接比较V04 是三根 K 线的复合比较两种条件对不同级别的调整浪都做了覆盖。顶分型 HV1 到 HV10 是镜像把 HIGH 和 LOW 互换、LLVBARS 换成 HHVBARS 即可。3.3 FILTER 去重与信号输出的细节底分型最终输出做了一次 FILTER 去重XG: V1 OR V2 OR V3 OR V4 OR V5 OR V6 OR V7 OR V8 OR V9 OR V10; DRAWTEXT(FILTER(XG1,5),L*0.998,底),COLORYELLOW;FILTER(XG1,5) 的作用是信号出现后 5 根 K 线内不再重复提示。这个参数值得细看V1 到 V10 本身就有窗口重叠同一波下跌可能同时满足 V3 和 V5如果不去重屏幕上会连续出现三四个“底”字。5 根 K 线的冷却期既能避免重复又不会把后续真正的新低信号过滤掉。顶分型的输出稍微宽松一点FILTER(HXG1,3)冷却期只有 3 根 K 线。原因是顶分型做的是逃顶提示对及时性要求更高宁可多出一两个信号也不能让卖点晚出现。这段注释代码在 doc 里被星号包裹直接复制到文华公式编辑器会提示“缺少函数定义”因为 V00 到 V04 和 HV00 到 HV04 的定义在注释块里注释块之外的运行区只有 MA、STD、ZIGZAG 等系统函数。要启用分型选股需要把整个注释块完整复制到指标编辑器的有效代码区然后在引用 XG 变量之前再补一行“选股: XG;”做输出。4. DRAWLINE 与 DRAWBAND 的组合四段画线的层次关系4.1 四条趋势线的生成顺序画线部分依赖四个变量XA、XB、XAS、XBS。先看前两条XA:DRAWLINE(极点保留-1,L,REF(极点保留,1)-1,REF(L,1),1); XB:DRAWLINE(极点保留1,H,REF(极点保留,1)1,REF(H,1),1);DRAWLINE 的五个参数依次是起点条件、起点取值、终点条件、终点取值、延伸判断。XA 用低点连低点起点是当前 K 线极点保留 -1即局部低点起点价格取 L终点条件 REF(极点保留,1)-1 是昨天也是低点终点价格取 REF(L,1)。这个连接方式保证画线只跨越连续确认的低点中间任何一根 K 线的极点保留值发生变化画线就会断裂不会出现跳点连线的问题。XAS 和 XBS 是更高一层的中继线XAS:DRAWLINE(极点保留-1,XB,REF(极点保留,1)-1,REF(XB,1),1); XBS:DRAWLINE(极点保留1,XA,REF(极点保留,1)1,REF(XA,1),1);XAS 的起点价格取的是 XB 的值也就是“前一波高点的连线值”在当前低点位置的投影形成高线对低线的映射。这种低点连高点投影的做法在手工画波浪尺时并不常用但在程序化里能自动生成一组“收敛/扩张”参照线。4.2 三分位与 DRAWBAND 的取值范围中间价通过两条辅助线算出XA45:(XAXAS)/2; XB45:(XBXBS)/2; XA63:(XAS-XA)*3/4XA; XB63:XB-(XB-XBS)*3/4;XA45 是 XA 与 XAS 的二分位对应波浪尺的 50% 回撤参考XA63 则是从 XA 向上取 XAS 与 XA 差值的 3/4对应 75% 位置。YB63 同理是 XB 向下到 XBS 的 3/4 位置。两组带区之间的宽度就是当前级别的波动区间估算。DRAWBAND 画带用的是填充方式DRAWBAND(XA45,RGB(0,150,100),XA63,RGB(0,150,100)); DRAWBAND(XB45,RGB(185,96,9),XB63,RGB(185,96,9));DRAWBAND 会在两条线之间填充颜色第一组绿色带覆盖 XA45 到 XA63第二组橙色带覆盖 XB45 到 XB63。这两条带不是静态区间而是随高低点的确认动态伸缩价格进入带内时正好对应“回撤 50%-75% 区间”。4.3 压 1 压 2 的可显示逻辑与局部极点的画法压力位在带内进一步提取压1:IF(BETWEEN(XA45,XB45,XB63),XA45,DRAWNULL),COLOR008800; 压2:IF(BETWEEN(XA63,XB45,XB63),XA63,DRAWNULL),COLOR008800;BETWEEN 判断第一个参数是否介于后两个参数之间。压 1 只有在 XA45 落在橙色带 [XB45, XB63] 区间内才显示压在区间外就输出 DRAWNULL。这个写法的意图是只有两条带发生交叉重叠时分位线才具有实际支撑压力意义。观察时重点看压 1 和压 2 是否连续出现如果大量 DRAWNULL说明两组带长期背离当前级别可能处于趋势单边而非震荡。局部极点的标注和买卖文字直接使用了极点保留值局部极点:IF(极点保留-1,L,IF(极点保留1,H,DRAWNULL)) CIRCLEDOT COLORYELLOW; DRAWTEXT(极点保留-1,局部极点,买),COLORRED; DRAWTEXT(极点保留1,局部极点,卖),COLORGREEN;买点和卖点的文字位置取的是局部极点本身而不是当前价。这里有一个容易踩的坑文华财经 DRAWTEXT 的第二个参数如果填常数会画在固定价位这里是变量局部极点所以文字会跟着高低点移动。5. EMA 均线柱、布林轨道与 ZIGZAG 转向的配合用法画线之外源码尾部是独立的一套均线轨道系统同样可以单独做成副图。核心代码MA1:EMA(CLOSE,12),COLOR00FF00; MA2:EMA(CLOSE,50),COLORRED; 顶:MA(CLOSE,30) 2*STD(CLOSE,60), COLORYELLOW,POINTDOT, LINETHICK2; 底:MA(CLOSE,30) - 2*STD(CLOSE,60),COLORYELLOW,POINTDOT, LINETHICK2;顶底两条线是用 30 周期均线加减 2 倍 60 周期标准差算出的移动布林带比传统布林带多了一层均线平滑带宽变化更缓慢不容易被单根大阳线撑爆。MA1 和 MA2 之间用 STICKLINE 画柱STICKLINE(MA1MA2,MA1,MA2,1,0),COLORFF66FF; STICKLINE(MA2MA1,MA1,MA2,1,0),COLOR00FF00;MA1 上穿 MA2 时柱体为粉色下穿为绿色柱体宽度固定为 1空心样式。用柱体表示均线差值的做法比单纯画两条线直观盘中扫一眼柱体颜色就能判断短期趋势方向。ZIGZAG 转向线单独拎出来说转向:ZIGZAG(C,10,1), COLORFF3300;ZIGZAG 三个参数分别是价格序列、转折百分比、平移系数。10 表示价格反向波动超过 10% 才画折线1 表示不需要偏移。转折线只做视觉参照不能直接用于程序化交易的信号判断因为它会随新 K 线重绘——当前 K 线只要没走完最后一个转折点位置就会变化。如果把它接入自动交易条件历史回测结果会失真。布林带收口的判断逻辑写在最后几行IF(顶REF(顶,1)底REF(底,1),顶,NULL),COLORBLUE,LINETHICK2,NOTEXT; IF(顶REF(顶,1)底REF(底,1),顶,NULL),COLORYELLOW,LINETHICK2,NOTEXT;顶下降同时底上升代表带宽收窄输出蓝色线标记顶上升同时底下降代表带宽扩张输出黄色线标记。实战中配合分型信号的使用顺序是先看蓝色收口标记是否连续出现连续两次以上收口后等待 FILTER(XG1,5) 的“底”字提示如果 ZIGZAG 转向线恰好同周期出现上折三个条件叠加再考虑进场。这套指标如果把注释块中的分型逻辑启用建议把选股输出单独拆成一个模型而不是直接加到主图指标里。具体做法是在文华 WH6 新建“选股模型”把 V00 到 XG 的定义原样复制进去末尾加一行“A1: XG;”然后在“条件选股”里引用 A11。主图指标保留 DRAWBAND 和均线轨道这样分型信号用于盘中选股画线用于人工复核避免同一屏幕信号过载。另一个实用技巧是把冷却期常数从 5 改成 8在日线级别能过滤掉更多低位反复震荡的假底信号分时周期则保持 5 或 3因为短周期对灵敏度要求更高。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价