
简介这份文档是面向股票、期货、外汇等金融市场投资者的文华财经指标公式源码围绕「突破顶底出击」这一资金流向研判工具展开适合具备一定指标编写基础、希望深入理解主力资金监测逻辑的中高级使用者。压缩包共1个doc文件约60KB篇幅紧凑集中呈现可直接参考的公式代码与注释说明。内容以L2_AMO分档成交数据为核心构建超B、大B、中B、小B与对应卖出量等变量派生出大宗净流入、净流入、大宗进出、非大宗进出、主力买卖力度、DDX/DDY/DDZ等指标并借助DRAWRECTREL、DRAWTEXT_FIX、DRAWNUMBER_FIX等绘图函数把资金驱动、主力进出、散户进出与买卖比直观呈现在主图上。借助大宗与非大宗资金的对比、主力买卖力度百分比以及量能缩放处理读者可以理解资金分层统计与图形化展示的完整实现路径并将其迁移到自己的看盘模板中做趋势判断与风险控制。目前已有427人学习关注。1. 文华财经指标公式源码突破顶底出击到底在算什么一份 .doc 文件里存着“突破顶底出击”的指标源码很多人第一反应是全选复制粘进文华财经的公式编辑器点编译——然后报错。问题通常不在代码本身而在两个地方一是源码里的参数是按某个特定品种和周期写的换到另一个合约上回看周期和过滤条件全部失真二是麦语言里:和:的显示语义、REF和CROSS的边界处理和通达信有细微差别直接搬会踩坑。这个指标的核心逻辑不复杂用 N 周期内的最高价和最低价画出顶底边界价格带量突破边界时给出出击信号。它适合做趋势跟踪的期货交易者尤其是做日线波段和 15 分钟日内的人。但要把源码跑通并且用得下去参数、量能过滤和信号确认这三关都得过。2. 突破顶底出击指标的麦语言语法底座与逻辑拆解2.1 麦语言里绕不开的基础函数文华财经的指标公式语言常被叫做麦语言语法风格接近通达信但函数命名和参数顺序有差异。写“突破顶底出击”之前先确认几个核心函数的行为函数含义参数返回HHV(X,N)N周期内X的最高值X为序列N为周期数数值序列LLV(X,N)N周期内X的最低值同上数值序列REF(X,N)N周期前的X值N为正整数数值序列CROSS(A,B)A上穿B返回1否则0A、B均为序列0或1MA(X,N)X的N周期简单移动平均—数值序列SUM(X,N)X的N周期求和—数值序列这里有一个容易搞混的点HHV(H, 20)在当根K线上取的是包括当根在内的最近 20 根K线的最高价。如果判断“突破前高”必须用REF(HHV(H,20), 1)来取上一根K线之前的 20 周期高点否则当根K线自己的最高价会把自己算进去逻辑就变成了“最高价等于最高价”永远成立。// 错误写法当根H已经包含在HHV里永远为真 WRONG : H HHV(H, 20); // 正确写法取上一根K线之前的高点作为边界 TOP : REF(HHV(H, 20), 1); RIGHT : C TOP;参数说明HHV(H,20)的第二个参数 20 是回看周期代表 20 根K线REF(...,1)把整个序列向后推一根得到的是“截止到上一根K线”的顶。C TOP用收盘价而非最高价来确认突破是为了规避盘中假突破。2.2 突破顶底出击的判定条件拆解顶底出击的信号分为两类向上突破顶部边界向下突破底部边界。最基本的形式是顶出击收盘价上穿前 N 周期最高价底出击收盘价下穿前 N 周期最低价。但只有这两个条件信号会非常密集尤其在震荡区间里。实际可用的版本通常加两层过滤均线方向和量能确认。均线过滤用MA(C, M)判断短周期趋势量能确认用V MA(V, M)或量比函数。文华财经里V表示成交量MA(V, 5)就是 5 周期均量。把这两个条件叠上去之后假突破的信号会明显减少。N : 20; M : 5; TOP : REF(HHV(H, N), 1); BOT : REF(LLV(L, N), 1); MA5 : MA(C, M); VMA : MA(V, M); TOP_BREAK : C TOP AND MA5 REF(MA5,1) AND V VMA; BOT_BREAK : C BOT AND MA5 REF(MA5,1) AND V VMA;TOP_BREAK的三个条件分别对应价格突破、均线向上、量能放大。BOT_BREAK同理方向反过来。这里MA5 REF(MA5,1)而不是MA5 MA10是因为在文华财经的多品种框架里用自身斜率判断趋势比用交叉更少受到周期错配的影响。2.3 与文华财经三均线模型的信号对齐文华财经三均线模型是很多人在用的趋势框架本质是短期、中期、长期均线的排列关系。把突破顶底出击的信号和三均线模型对齐可以过滤掉一部分逆势信号。具体做法是三均线多头排列MA5 MA10 MA20时只接受 TOP_BREAK三均线空头排列MA5 MA10 MA20时只接受 BOT_BREAK。MA10 : MA(C, 10); MA20 : MA(C, 20); BULL : MA5 MA10 AND MA10 MA20; BEAR : MA5 MA10 AND MA10 MA20; TOP_SIGNAL : TOP_BREAK AND BULL; BOT_SIGNAL : BOT_BREAK AND BEAR;这样做的好处是信号数量会下降到原来的四成左右但单笔盈亏比通常会上来。代价是错过震荡转趋势的那一段启动适合做右侧确认的交易者。如果做的是日内高频可以把 M 从 5 缩到 3让均线更灵敏。3. 手写一份可编译的突破顶底出击源码3.1 参数区定义与变量命名文华财经公式编辑器里参数可以用固定数值也可以用PARAM语句声明成可调参数。后者在回测和优化时更方便。我一般会把回看周期、均线周期、量能倍数都抽出来// 参数区 N : 20; // 顶底回看周期 M1 : 5; // 短均线 M2 : 10; // 中均线 M3 : 20; // 长均线 VM : 5; // 量能均线周期 VR : 1.2; // 量能放大倍数VR用倍数的形式方便在不同品种之间迁移。比如螺纹钢的主力合约日线量能放大 1.2 倍已经算有效换到某个成交清淡的农产品可能要降到 1.1 才不至于过滤掉所有信号。这些参数不要写死在逻辑里集中放在开头后面调的时候只改这几行。3.2 主逻辑与突破判定在参数区下面写主逻辑。先把边界算出来再做条件组合最后生成信号。顺序不要乱因为麦语言是逐行解释执行的后面的行可以引用前面的变量反过来不行。// 顶底边界 TOP_BOUND : REF(HHV(H, N), 1); BOT_BOUND : REF(LLV(L, N), 1); // 均线系统 MA_S : MA(C, M1); MA_M : MA(C, M2); MA_L : MA(C, M3); VMA : MA(V, VM); // 三均线排列状态 BULL : MA_S MA_M AND MA_M MA_L; BEAR : MA_S MA_M AND MA_M MA_L; // 突破条件 UP_BREAK : C TOP_BOUND AND V VMA * VR; DOWN_BREAK : C BOT_BOUND AND V VMA * VR; // 带趋势过滤的出击信号 BUY_EX : UP_BREAK AND BULL; SELL_EX : DOWN_BREAK AND BEAR;逻辑说明UP_BREAK只判断价格和量能不加均线方向这样在复盘时可以看到所有原始突破点BUY_EX则叠加上三均线多头过滤是真正用于交易的信号。两套变量分开定义在图表上可以分别标记便于对比过滤效果。参数说明TOP_BOUND和BOT_BOUND用的是REF(HHV(...), 1)保证边界不包含当根K线。V VMA * VR里的VR是倍数如果写成V VMA VR就变成了绝对增量两个品种之间不可比。这是很多人从通达信搬公式时容易忽略的差异。变量含义类型TOP_BOUND前N周期高点数值序列BOT_BOUND前N周期低点数值序列BULL三均线多头布尔序列BUY_EX过滤后顶出击布尔序列3.3 绘图输出与信号颜色设置信号算完之后要画在图上。文华财经主图指标用DRAWTEXT、DRAWICON、STICKLINE这类函数输出变量用:而不是:否则不会显示。// 画出顶底边界 TOP_LINE: TOP_BOUND, COLORGRAY; BOT_LINE: BOT_BOUND, COLORGRAY; // 原始突破点 DRAWTEXT(UP_BREAK AND NOT(BUY_EX), H * 1.01, 突破), COLORWHITE; DRAWTEXT(DOWN_BREAK AND NOT(SELL_EX), L * 0.99, 跌破), COLORWHITE; // 过滤后的出击信号 DRAWTEXT(BUY_EX, L * 0.98, 顶出击), COLORRED; DRAWTEXT(SELL_EX, H * 1.02, 底出击), COLORGREEN;注意TOP_LINE和BOT_LINE后面用的是:会以曲线形式输出DRAWTEXT是独立绘图函数条件为真时在指定价格位置写文字。NOT(BUY_EX)用来排除同时满足原始突破和过滤信号的点避免同一根K线上重复标注。颜色参数COLORRED、COLORGREEN是文华财经的内置常量不需要加引号。如果要在副图显示量能饱和度可以把量能相关变量单独写一个副图指标用VOL和MA(VOL, N)做比值再用STICKLINE画出柱状。主图和副图分开编译、分开加载不要把两套逻辑塞进同一个公式里否则缩放和坐标会互相干扰。4. 突破顶底出击的参数调优与多品种适配4.1 回看周期 N 的选择N 决定顶底边界离当前价格有多远。N 太小边界贴着价格走突破信号频繁但可靠性低N 太大边界很远信号稀少但滞后明显。用同一段历史数据跑不同 N 值统计信号数量和后续 10 根K线的平均盈亏比比拍脑袋定参数靠谱。N 值信号数量日线螺纹钢主连假突破比例约平均盈亏比108655%1.1204738%1.6302927%1.9601318%2.3这不是精确回测数据只是用来说明趋势N 越大信号越少、假突破比例越低但等信号出来时行情往往走了一段。做日内 15 分钟周期N 取 10 到 20 比较合适做日线波段N 取 20 到 30做周线级别N 可以放到 40 以上。文华财经的回测功能支持参数遍历把 N 设成 10 到 60、步长 5跑一遍就能看到曲线拐点。4.2 过滤均线 M1/M2/M3 的组合方式三均线模型里M1、M2、M3 的搭配不是随便定的。常见组合是 5/10/20 和 5/13/34前者偏灵敏后者偏平滑。突破顶底出击在日线上用 5/10/20 就够因为信号本身已经带了一层过滤如果切换到 1 分钟或 3 分钟周期建议改成 3/8/21 或者直接去掉长均线只保留短均线斜率判断。// 短周期版本只判断短均线斜率 BULL_FAST : MA(C, 3) REF(MA(C, 3), 1); BEAR_FAST : MA(C, 3) REF(MA(C, 3), 1);这种写法的信号数量会比三均线排列多出一倍以上适合配合更严格的量能条件使用。均线周期改小之后VR要相应提高因为短周期里放量更容易触发不提高门槛会引入大量噪声。4.3 量能饱和度与介入度净占比的辅助确认热搜里经常出现“量能饱和度圆圈1.00指标公式源码”和“介入度净占比指标公式源码”这两个思路都可以拿来给突破信号做旁证。量能饱和度本质上算的是当前成交量占近期最大量的比例越接近 1 表示量能越充分。介入度净占比则是主动买卖盘的比例差在文华财经里可以用逐笔数据或BUYVOL、SELLVOL近似。// 量能饱和度近似 VOL_SAT : V / HHV(V, 60); // 介入度净占比近似 NET_RATIO : (BUYVOL - SELLVOL) / (BUYVOL SELLVOL 0.0001); // 把饱和度作为附加过滤 UP_BREAK_STRONG : UP_BREAK AND VOL_SAT 0.6 AND NET_RATIO 0.1;VOL_SAT 0.6表示当根成交量超过 60 周期最大量的 60%NET_RATIO 0.1表示主动买盘略占优。 0.0001是防止分母为零。这两个条件不是必须的但在震荡转趋势的临界点上能把信号质量拉开一档。注意BUYVOL和SELLVOL不是所有文华财经版本都支持如果不支持用V和价格方向做近似即可。5. 突破顶底出击的回测排错与信号验证5.1 编译报错的几个高频原因文华财经公式编辑器报错信息有时候比较笼统“语法错误”四个字盖住了一切。按出现频率排常见原因有这几种排查时对照下表逐项排除报错现象可能原因排查方法编译提示“语法错误”中文标点混入检查逗号、分号、冒号是否全角变量不显示输出用了:改成:数值异常除零分母加 0.0001 保护信号重绘未来函数用信号确认功能验证中文标点混入是最隐蔽的HHV(H20)里的全角逗号会让整行失效。变量名和内置函数重名也会出问题比如把变量命名为MA、HHV、C会覆盖系统函数。REF参数为 0 或负数在部分版本里直接报错。排查时把公式拆成几段逐段编译先只留参数和边界计算通过后再加条件最后加绘图。比一次性贴完再找错快得多。5.2 信号漂移与未来函数的识别“突破顶底出击”最容易出的问题是信号漂移——盘中看到信号出现收盘后信号消失或者复盘时信号位置和当时看到的不一样。根因通常是用了未来函数比如ZIG、PEAK、TROUGH、BARSLAST配合动态周期或者直接引用了当根K线尚未走完的最高价和最低价。提示判断一个公式是否含未来函数用文华财经的“信号确认”功能把信号触发点设在收盘价确认之后再看历史信号是否重绘。如果重绘就是引用了当根未完成数据。突破判断里C TOP_BOUND用的是收盘价收盘前最后一秒才确定属于右侧确认不会漂移。但如果写成H TOP_BOUND盘中最高价一碰就出信号收盘回落信号消失这就是典型的漂移。做日内的时候如果一定要用最高价触发就要接受信号可能消失的事实配合条件单或者收盘前手动确认。5.3 用文华财经回测引擎做一次参数验证文华财经的回测功能可以加载主图指标但更规范的做法是写一个独立的交易模型用BUY、SELL、BUYSHORT、SELLSHORT指令。把突破顶底出击的信号映射进去// 交易模型片段 IF BUY_EX AND NOT(BARPOS 0) THEN BUY(1, C); IF SELL_EX AND NOT(BARPOS 0) THEN SELLSHORT(1, C);回测时注意三点手续费和滑点要设真实值螺纹钢按 1 跳滑点估算用主力连续合约而不是单合约否则换月缺口会干扰统计把参数遍历结果导出看信号数量和盈亏比是否同步变化如果信号数增加而盈亏比不降说明参数还有压缩空间。文华财经的回测结果里夏普比率和最大回撤两个指标比胜率更值得看突破类策略的胜率通常不高靠的是盈亏比。6. 把突破顶底出击接入多周期共振与自动预警突破顶底出击单独用信号数量和质量都还能接受但放在多品种、多周期的实盘环境里手动盯盘不现实。进阶做法是把同一个公式加载到不同周期上做共振确认再用文华财经的条件单或预警功能自动推送。多周期共振的写法不需要把公式复制多份而是用#IMPORT或者跨周期引用函数。文华财经支持在日线公式里引用 15 分钟周期的数据语法大致是15分钟.突破顶底出击.BUY_EX这种形式具体取决于版本。更可靠的做法是分别在两个周期上编译同一套信号然后在图表上肉眼对齐日线出 BUY_EX同时 15 分钟也出 BUY_EX才算共振成立。共振组合适用场景信号频率注意事项日线 60分钟波段持仓低60分钟信号先出日线确认后进场60分钟 15分钟日内趋势中两个周期信号时间差不超过 3 根K线15分钟 5分钟高频日内高手续费占比大需要严格量能过滤预警设置上不要把原始UP_BREAK直接挂成预警否则一天可能推几十条。至少用BUY_EX并且叠加量能饱和度条件。文华财经的预警支持声音和弹窗在公式末尾加ALERT(BUY_EX, 顶出击)即可触发。如果要做自动交易还需要在交易模型里把信号映射成委托指令并且设置滑点控制和撤单重发逻辑。实际用下来突破顶底出击最有价值的不是那个突破点本身而是它逼着你去定义“顶”和“底”的边界——用多少周期、用什么价格、要不要量能确认。边界定义清楚了换成 MACD 启动点或者其他指标做触发整套框架还能接着用。参数表里的 N 和 VR 是两把可以反复调的旋钮每换一个品种先把这两个旋钮拧到信号数量和质量平衡的位置再考虑叠其他过滤条件。本文还有配套的精品资源点击获取