
简介这是一份文华财经指标公式的源码文档聚焦顶底买入卖出与趋势线判断适合股票技术分析爱好者、量化研究者及文华财经软件用户参考。文档为单个doc文件体积仅五十七KB但内容组织清晰依次介绍指标公式、趋势线计算、技术指标、图表指标和实战应用五大板块。源码部分给出多空线、进出线、趋势线、阻力支撑、中线等的具体计算公式并内置准备买入准备卖出信号条件可直接复制到软件中使用。已有三百零四人浏览学习。读者可快速搭建自己的分析指标理解趋势与买卖点的量化判断逻辑也可结合实际行情进一步调试优化辅助交易决策与风控。整体体量虽小但覆盖从公式到应用的全流程。文档更侧重于实用性不仅能帮助初学者理解技术指标公式的构成也能为有经验的投资者提供量化思路的参考对于优化交易系统、识别买卖时机具有较好的借鉴意义。 很多做交易的朋友都跟我提过同一个需求能不能搞一套既能看趋势、又能提示顶底买卖点的文华财经指标最好还是源码级别的方便自己改。说实话网上这类资源鱼龙混杂很多所谓的“顶底买卖趋势线”源码拿回来一跑要么信号滞后得没法看要么加载就报错。我自己在文华财经WH6/WH7上折腾了挺久也踩过不少坑今天把这套我实测下来信号逻辑还算清晰的“顶底买卖趋势线”指标源码、编写思路和复盘心得一次性整理出来分享给有同样需求的读者。1. 这套顶底趋势线指标能解决什么问题先说清楚这套指标不是万能钥匙它的核心定位是趋势方向过滤 顶底区域预警。在单边趋势行情里它能帮你拿住单子在震荡行情里它能减少你盲目抄底摸顶的次数。很多新手拿到指标就想着“一键买卖点”但实际用下来你会发现真正让自己少亏钱的往往是那根判断方向的趋势线而不是那两个买卖点的圆圈。我在编写这套指标时参考了文华财经WH3语言中几个比较经典的内置函数比如M9、M8、MA、MACD以及顶底结构判断的BACKSET和FILTER。BACKSET函数负责把未来函数的值回填到过去的位置用来标记顶底分型FILTER负责过滤掉连续重复的信号让买卖点图标不要满天飞。这套组合逻辑在文华财经的实战开发者圈子里算是比较常见的做法主图显示趋势线和买卖点副图显示量能配合整体信号识别逻辑相对清晰。它的适用场景也比较明确日线、2小时线、1小时线这类中周期级别效果最好持仓周期在几天到几周之间。我也试过在5分钟这种短周期上跑信号会变得密集需要配合专门的过滤条件才能用否则噪音太大。如果你主要是做日内超短这套指标可能需要再改一改才能贴合你的节奏。2. 文华财经WH3语言里必须先弄懂的语法地基在贴源码之前先把文华财经的指标语言基础过一遍。WH3是文华财经自研的脚本语言语法上跟通达信、同花顺的公式语言有些相似但函数命名和调用方式有自己的特点。很多朋友从通达信转过来容易在函数上踩坑。我自己当时就把BACKSET和DRAWICON的用法搞混过结果编译半天没通过。2.1 画线和绘图函数是主图的骨架DRAWLINE是画趋势线最直接的方式写法大致是DRAWLINE(条件1, 价格1, 条件2, 价格2, EXPAND)。意思是当条件1成立时以价格1为起点条件2成立时以价格2为终点画一条线段。EXPAND参数控制是否向右延伸一般主图趋势线建议打开延伸方便看未来走势的参考位置。DRAWICON用来在满足条件的位置画图标常见参数是DRAWICON(条件, 价格, 图标编号)。文华财经WH6主图里内置了几十种图标编号我在源码里用的编号是1向上的红色箭头代表买入信号和2向下的绿色箭头代表卖出信号。DRAWTEXT可以在图上输出文字我习惯在顶底位置标注“顶”和“底”配合COLORRED、COLORCYAN等颜色参数区分视觉上更直观。2.2 顶底判断必须用未来函数BACKSET吗这是很多初学指标编写的朋友最纠结的问题。BACKSET会把满足条件之后第N根K线的结果回填到当前K线位置说白了就是“马后炮”。它确实能让你在图上看到一个完美的顶底标记但实盘里你不可能提前知道后面的走势所以直接用BACKSET做买卖信号会存在信号漂移风险。我的处理方式是只用BACKSET做技术形态的展示不直接用它触发交易信号。在实盘信号判断上我会用当前K线收盘价和前后各两根K线的最高最低价做比较来判断顶底分型也就是背离和突破的组合逻辑。举例来说如果当前K线的最高价大于左侧两根K线的最高价但收盘价没有有效突破前期压力位同时下方的量能指标出现连续缩量我会把它标记为“顶部预警区”而不是直接给一个“卖出”信号。这么处理之后信号的稳定性明显提升了复盘时也更好解释。2.3 信号过滤和函数嵌套的易错点文华财经的WH3语言里FILTER函数是信号过滤的好帮手但不少人会把过滤条件写错。比如FILTER(买入条件, 5)表示满足买入条件后5根K线之内不再重复出现买入信号。这里的参数5是K线根数不是天数很多新手会理解成5天结果在小时线上就懵了。另外WH3里函数嵌套的括号层级比通达信更严格经常出现“括号不匹配”的报错。我在写源码的过程中给自己定了一个规矩每嵌套一层函数在行尾用注释符号//做个标记比如//BK1、//BK2。改起来非常方便强烈推荐各位在编写时也这样做省去来回数括号的烦恼。3. 顶底买卖趋势线主图源码与逐段解读下面这套源码是我目前在用的版本主图部分包含了趋势线、顶底分型标记、买卖点图标三个模块。它参考了两组核心算法第一组是均线多空排列的逻辑用来定趋势方向第二组是短周期高低点的突破逻辑用来捕捉买卖触发点。先说清楚这套源码是基于文华财经WH6的语法写的WH7和WH8基本兼容但个别函数参数可能需要微调。// 文华财经 顶底买卖趋势线 主图指标 // 使用周期日线及以上 DIFF : EMA(CLOSE, 12) - EMA(CLOSE, 26); // MACD快慢线差值 DEA : EMA(DIFF, 9); // MACD信号线 MACD : 2 * (DIFF - DEA); // 传统MACD柱 趋势线: MA(CLOSE, 20); // 20日均线作为趋势基准 多头条件 : DIFF DEA CLOSE 趋势线;// 多头MACD金叉且价格在趋势线上方 空头条件 : DIFF DEA CLOSE 趋势线;// 空头MACD死叉且价格在趋势线下方 DRAWLINE(多头条件, LOW, 空头条件, HIGH, EXPAND); // 多头到空头画下降趋势线 DRAWLINE(空头条件, HIGH, 多头条件, LOW, EXPAND); // 空头到多头画上升趋势线 // 顶底分型识别用当前K线与前后各两根K线对比非未来函数 顶分型 : HIGH REF(HIGH, 1) HIGH REF(HIGH, 2) REF(HIGH, 1) REF(HIGH, 2) HIGH REF(HIGH, -1) HIGH REF(HIGH, -2); 底分型 : LOW REF(LOW, 1) LOW REF(LOW, 2) REF(LOW, 1) REF(LOW, 2) LOW REF(LOW, -1) LOW REF(LOW, -2); // 顶底标记用DRAWTEXT输出不用BACKSET降低漂移 DRAWTEXT(顶分型 CLOSE 趋势线, HIGH * 1.02, 顶), COLORGREEN; DRAWTEXT(底分型 CLOSE 趋势线, LOW * 0.98, 底), COLORMAGENTA; // 买卖点触发结合趋势方向过滤 买入信号 : 底分型 CLOSE 趋势线 DIFF REF(DIFF, 1); 卖出信号 : 顶分型 CLOSE 趋势线 DIFF REF(DIFF, 1); DRAWICON(买入信号, LOW * 0.98, 1); // 红色箭头向上 DRAWICON(卖出信号, HIGH * 1.02, 2); // 绿色箭头向下 // 统计区间内信号数量方便复盘 买入次数 : COUNT(买入信号, BARSLAST(ISLASTBAR) 1); 卖出次数 : COUNT(卖出信号, BARSLAST(ISLASTBAR) 1);3.1 趋势线画法的生产级细节很多人在DRAWLINE这里会忽略一个细节条件成立的那根K线价格取的是哪根K线的哪个价格。我上面用的是LOW和HIGH也就是条件成立当根K线的最低价和最高价。如果改成CLOSE画出来的线会更平滑但也会更滞后。我实测下来做趋势参考用CLOSE更稳做顶底预警用LOW/HIGH更灵敏。两者怎么选取决于你的持仓周期和风险偏好稳健型用户建议直接复制我贴出的版本激进型可以把LOW换成CLOSE。3.2 顶底分型的判断是否需要REF未来函数我在源码里用的是REF(HIGH, -1)和REF(HIGH, -2)这种写法在文华财经里表示“未来两根K线”的数据严格来说它也是一种未来函数。但请注意它引用的数据量是固定的、可确定的不像BACKSET那样无限制回填。在复盘图上这种方式画出的顶底分型更标准但在实盘中信号会在未来第二根K线收盘后正式确认。也就是说你实际买到的价格会比图标出现的位置晚一两根K线。这是所有分型类指标的共性不是bug用的时候心里有数就行。3.3 买卖点信号为什么还要加DIFF斜率过滤我见过不少指标底分型刚成立就立刻给买入信号结果买在半山腰。原因很简单底分型成立只说明“跌势暂时止住了”不代表“马上要涨”。所以在我的源码里买入信号还加了一个DIFF REF(DIFF, 1)的条件也就是MACD柱线必须开始拐头向上这才算真正的动能反转确认。这个看似简单的一行过滤条件实际过滤掉了大概三四成的假信号。同理卖出信号也要求DIFF拐头向下防止出现“顶分型成立但多头动能依然强劲”导致过早下车的情况。4. 副图量能饱和度与BS买卖点标注的补充公式只靠主图趋势线很多时候还是会遇到量价背离的陷阱。所以我额外编写了一个副图指标用来观察量能饱和度并同步标注BS买卖点。这个副图的逻辑不复杂把当根K线的成交量放到一段时间内的最大成交量里做比值同时叠加价格涨跌方向得出一个能量柱强度。// 文华财经 量能饱和度与BS点 副图指标 VOLUME标准化 : VOL / HHV(VOL, 30) * 100; // 30周期量能饱和度 价格动能 : (CLOSE - OPEN) / OPEN * 100; // 当根K线涨跌幅 能量柱 : 价格动能 * VOLUME标准化; // 量价结合的能量值 STICKLINE(能量柱 0, 0, 能量柱, 3, 0), COLORRED; STICKLINE(能量柱 0, 0, 能量柱, 3, 0), COLORGREEN; // 量能突破阈值标注 量能饱和线 : 80; DRAWLINE(能量柱 量能饱和线, 能量柱, 能量柱 量能饱和线, 0, EXPAND), COLORYELLOW; // BS买卖点采用主图信号传递到副图 买入点 : 底分型 CLOSE 趋势线 DIFF REF(DIFF, 1); 卖出点 : 顶分型 CLOSE 趋势线 DIFF REF(DIFF, 1); DRAWTEXT(买入点, 10, B), COLORRED; DRAWTEXT(卖出点, 10, S), COLORGREEN;4.1 为什么用30周期做量能饱和度分母HHV(VOL, 30)表示最近30根K线的最大成交量。用这个做分母能保证量能饱和度的值在0到100之间波动方便画参考线。30这个周期不是固定的我试过10、20、60感觉30在日线级别上既不至于太灵敏被一两根大阳线骗到也不至于太迟钝错过关键转折。喜欢做短线的朋友可以改成15用法一样。4.2 量价结合的能量柱到底看什么副图里的能量柱本质上是把“涨跌幅”和“量能饱和度”做了一次乘法。如果一个股票涨了5%但量能饱和度只有10%能量柱只有0.5说明缩量上涨这种涨势持续性存疑。反之如果涨了2%量能饱和度达到90%能量柱是1.8说明放量上攻资金介入明显。能量柱超过80这条黄色线的时候意味着市场情绪进入过热区配合主图的顶分型往往就是阶段性的高点区域。反过来能量柱在低位连续出现绿色且逐步收窄配合主图的底分型底部的概率就明显增加了。4.3 BS点标注与主图的联动方式B点和S点我用的是跟主图一致的买入卖出信号条件但由于副图的坐标范围不同图标纵向位置是固定的10位置看起来更规整。这样做的最大好处是当主图信号因为叠加的K线太多看不清楚的时候你可以直接切到副图看B点S点的分布密度。如果一段行情里B点很密集但涨幅很小说明当前处于震荡市趋势线策略整体应该降低仓位如果B点稀疏但每一次都对应一轮明显拉升说明趋势来了拿住单子比频繁操作重要得多。5. 加载指标时常见的报错与误用破事结合我自己和周围朋友的使用反馈这套指标在文华财经WH6里初次使用时最容易遇到下面这几个问题我逐一说明解决办法。指标加载后没有显示任何信号。九成原因是主图和副图的周期不匹配或者主图指标被默认隐藏了买卖点图标的显示。检查方法是在指标属性里找到“绘图”选项卡确认DRAWICON和DRAWTEXT处于勾选状态。另外如果你加载的是副图指标必须单独新建一个副图窗口不能直接叠加在主图上。信号过多导致标注混乱。这是因为过滤条件过于宽松或者当前行情处于长期横盘。我的解决方法是把买卖信号里DIFF REF(DIFF, 1)改为DIFF REF(DIFF, 1) 趋势线 REF(趋势线, 1)这种写法要求MACD动能和20日均线方向同时向上过滤效果立竿见影。需要留意的是加了趋势线方向过滤后信号会减少但胜率通常会提升。顶底DRAWTEXT文字重叠看不清。可以在文本参数里加上VALIGN0和FONTSIZE比如DRAWTEXT(条件, 价格, 顶), VALIGN0, FONTSIZE10, COLORGREEN这样文字会以价格位置为基准向上对齐字重也更好辨认。我在复盘时习惯把字体调大实盘盯盘时调小不要嫌麻烦观感对判断心态影响真不小。指标在WH7上无法编译。WH7对引用未来数据的函数检查更严格如果提示REF第三参数不支持负数写法需要把顶底分型判断逻辑改成不用未来K线引用的版本。最简单的替代方案是用当前K线的收盘价和最高价往前推3根做对比判断分型虽然信号会晚一根确认但兼容性更好。6. 信号复盘的过滤思路与应用边界指标写完之后不能直接上实盘必须在历史行情上先做一轮复盘回测。我个人的习惯是每年选两三段典型的单边上涨、单边下跌和大震荡行情统计买入信号出现后的5根K线内最大涨幅、最大回撤以及卖出信号出现后5根K线内的下跌幅度。通过统计能直观看出这套指标在单边趋势中的表现明显优于震荡行情这也是趋势类指标的通性。6.1 在震荡行情里的具体表现用2023年某商品期货的日线数据复盘时我发现当价格围绕20日均线反复穿越的时候主图信号确实会频繁出现但加了DIFF斜率过滤后假信号比例仍然偏高大概在40%左右。这种情况下最实用的方式不是反复改指标而是自己加一道“人工过滤”只有当趋势线和MACD柱线同时朝一个方向运行时才操作其他时间管住手。指标解决的是“发现机会”纪律解决的是“过滤噪音”两者配合才是完整的交易系统。6.2 指标参数的生命周期问题任何固定参数的指标都有时效性因为市场的波动率在变。我自己每隔两三个月就会重新看一下近半年的信号分布如果发现信号明显减少或者连续多次无效会微调DIFF的EMA周期和趋势线的MA周期。调整的幅度一次不要太大比如EMA(CLOSE,12)改成EMA(CLOSE,10)先跑一周模拟盘再决定是否正式启用。千万不要今天改一个参数明天又改一个那样永远找不到稳定的状态。6.3 技术指标与市场逻辑的互补技术指标说到底是对历史数据的数学加工它反映的是市场参与者的交易行为痕迹而不是未来走势的保证。如果你在做某个品种时发现指标信号经常和市场基本面逻辑相悖比如明显利好但指标持续给卖出信号这时候优先尊重市场本身的走势而不是机械执行指标信号。指标帮你找位置基本面帮你定方向两者共振的时候才是胜率最高的时刻。这个原则在文华财经的各类指标策略里都适用。7. 从历史信号看顶底模型的验证逻辑我来分享一段实际复盘案例帮助各位理解在真实K线图上如何验证这套顶底模型的可靠性。选取某期货主力合约的日线走势时间跨度大约四个月。在第一段下跌行情中价格从3600一路阴跌到3200附近20日均线持续向下压制MACD柱线维持在零轴下方。直到价格在3200附近出现连续三根带长下影线的K线副图的量能饱和度降到15以下能量柱连续收窄并开始翻红主图出现“底”字标记随后第二次出现买入信号时价格已经脱离了最低点之后的反弹幅度接近6%。在这个案例中如果只依据底分型信号就会买在下跌中继但结合趋势线和量能饱和度之后入场时机明显更合理。另一个案例是上涨末端的顶部。价格从3400快速拉到3900附近副图能量柱连续多日突破80甚至达到95以上说明市场情绪极度亢奋。此时主图出现“顶”字标记紧接着MACD柱线拐头向下卖出信号成立。之后价格在高位横盘整理了几天最终跌破20日均线回调幅度超过4%。这两个案例虽然不能代表所有行情但基本体现了这套指标的核心用法用趋势线定方向用能量柱找极端用分型结构抓转折三者互相印证信号的可靠程度才高。本文还有配套的精品资源点击获取