通达信L2资金流向函数实战:从原理到公式编写与参数调优
1. 先搞清楚L2资金流向到底在算什么很多人一看到“L2资金流向”就觉得是个黑箱券商软件里红红绿绿的柱子到底怎么来的其实拆开看并不复杂。通达信的L2数据本质上是逐笔成交的委托队列快照它比普通Level-1行情多了两样东西一是每笔成交的买卖方向标记主动买还是主动卖二是委托挂单的明细档位。资金流向函数就是在这两个维度上做统计。1.1 主动买卖的判定逻辑交易所本身不直接告诉你这笔成交是主动买还是主动卖通达信的做法是拿成交价和当时的买一卖一价做比较。成交价打在卖一价上算主动买打在买一价上算主动卖打在中间价按前一秒的买卖压力做加权分摊。这个逻辑听起来简单但实际用的时候有个坑集合竞价阶段的成交方向判定和连续竞价不一样通达信在9:25到9:30之间的数据会做特殊处理如果你自己写公式去接原始逐笔数据这一段很容易算错。我实测下来通达信自带的L2_AMO和L2_VOL系列函数已经把方向标记做完了你直接调用就行没必要自己从逐笔数据重新推。自己推的版本在极端行情下比如涨停板反复打开误差能到15%以上得不偿失。1.2 大单、中单、小单的划分标准通达信默认按成交金额分档但这个分档不是固定的它跟股票的流通市值挂钩。具体规则是档位成交金额范围动态说明超大单大于等于流通市值的0.1%通常是机构或游资主力大单流通市值的0.02%到0.1%中等资金中单流通市值的0.005%到0.02%散户中的大户小单小于流通市值的0.005%纯散户这个动态划分很关键。同样是一笔50万的成交在贵州茅台上算小单在一只30亿流通市值的小票上可能就是超大单。所以你看资金流向指标的时候必须结合个股的流通盘来看不能拿一个固定阈值去套所有股票。注意通达信不同版本对分档阈值的默认值有细微差异建议在公式管理器里先确认一下当前版本的参数设置路径是“公式管理器-系统参数-L2资金流向参数”。1.3 净流入的计算口径净流入 主动买入金额 - 主动卖出金额。但这里有个细节撤单怎么算通达信的L2函数里撤单不计入资金流向只统计实际成交的部分。这个设计是合理的因为撤单不代表真实意图但有些第三方软件会把撤单也算进去导致数据对不上。如果你发现通达信的资金流向和别的软件不一致先检查是不是这个口径差异。另外大宗交易和盘后固定价格交易在通达信L2函数里是单独统计的默认不并入日内资金流向。如果你要做中线资金分析需要手动把这块加回去用L2_BLOCK函数单独取。2. 核心函数拆解与参数选择通达信的L2函数有十几个但真正做资金流向分析常用的就五六个。我把它们分成三类基础数据类、统计汇总类、衍生计算类。下面逐个说清楚每个函数干什么、参数怎么填、什么场景用哪个。2.1 基础数据类函数L2_AMO(N, M)取最近N秒内第M档的成交金额。这个函数是很多高级公式的底层积木。N的单位是秒M是档位编号1到101是买一-1是卖一。比如L2_AMO(3, 1)就是最近3秒内买一档的成交金额。L2_VOL(N, M)同上取的是成交量手数。L2_ORDER(N, M)取最近N秒内第M档的委托挂单量注意这个是挂单不是成交。很多人把L2_ORDER和L2_VOL搞混前者是还没成交的排队量后者是已经成交的量。做盘口压力分析用L2_ORDER做资金流向用L2_VOL。L2_PRICE(N)取最近N秒的成交均价。这个函数在计算大单均价时很有用。我个人的习惯是做日内短线资金监控用L2_AMO和L2_VOL就够了做盘口博弈分析才需要上L2_ORDER。因为挂单可以撤成交不能撤成交数据的可信度远高于挂单数据。2.2 统计汇总类函数L2_MAIN_AMO(N)取最近N秒内主力资金的净流入金额。这个“主力”的定义就是上面说的超大单加大单。这是最常用的一个函数基本上所有主力追踪指标都绕不开它。L2_RETAIL_AMO(N)取最近N秒内散户资金的净流入金额。散户就是中单加小单。L2_NET_AMO(N)取最近N秒内全部资金的净流入金额等于主力加散户。这三个函数的关系是L2_NET_AMO L2_MAIN_AMO L2_RETAIL_AMO。你可以用这个等式来验证数据是否正常如果对不上说明数据源有问题。参数N的选择很讲究。N太小比如5秒数据跳动剧烈噪音大N太大比如300秒反应迟钝信号滞后。我试过很多组参数日内短线用30到60秒比较合适波段用120到300秒。具体还要看个股的活跃度换手率高的票可以取小一点换手率低的票取大一点。2.3 衍生计算类函数L2_BUY_RATIO(N)最近N秒内主动买入占比。这个值在0到1之间大于0.5说明买方主动性强。L2_SELL_RATIO(N)最近N秒内主动卖出占比。L2_STRENGTH(N)资金强度计算方式是主力净流入除以总成交额。这个指标比单纯的净流入金额更有可比性因为它做了归一化处理。不同流通盘的股票可以直接比较。L2_TREND(N)资金流向趋势取最近N个周期的净流入做线性回归返回斜率。这个函数适合判断资金是在加速流入还是减速流入。实操心得L2_STRENGTH是我用得最多的一个衍生函数。它的值在-1到1之间大于0.1就算强势大于0.3就是非常强的信号。但要注意这个指标在开盘前15分钟和收盘前15分钟会失真因为这两个时段成交结构特殊建议过滤掉。3. 实战公式编写从简单到复杂光说不练假把式。下面我按难度递进给三个可以直接用的公式。每个公式我都会解释每一行在干什么以及为什么这么写。3.1 基础版主力净流入实时监控这个公式最简单适合刚接触L2函数的人。它只做一件事在副图上画出主力资金的实时净流入曲线。{主力净流入实时监控} 主力净额: L2_MAIN_AMO(60), COLORRED, LINETHICK2; 散户净额: L2_RETAIL_AMO(60), COLORGREEN; 零轴: 0, COLORGRAY, DOTLINE;逐行解释第一行取最近60秒的主力净流入金额用红色粗线画出来。第二行取散户净流入绿色。第三行画一条零轴参考线。这个公式的核心价值在于对比当主力净额在零轴上方而散户净额在零轴下方时说明主力在吸筹散户在抛这是典型的建仓信号。反过来主力净额向下散户净额向上就是出货信号。但这个公式有个问题它只有绝对值没有考虑个股的流通盘大小。一只100亿流通盘的股票主力净流入500万和一只20亿流通盘的股票主力净流入500万意义完全不同。所以下一步要做归一化。3.2 进阶版资金强度归一化指标{资金强度归一化} 总成交: SUM(AMOUNT, 60); 主力净额: L2_MAIN_AMO(60); 资金强度: 主力净额 / 总成交 * 100; 强度均线: MA(资金强度, 5); STICKLINE(资金强度 0, 0, 资金强度, 2, 0), COLORRED; STICKLINE(资金强度 0, 0, 资金强度, 2, 0), COLORGREEN; 强度均线, COLORYELLOW, LINETHICK1; 零轴: 0, COLORGRAY, DOTLINE;这个公式的关键在第三行主力净额 / 总成交 * 100。这样算出来的值是一个百分比表示主力净流入占总成交的比例。这个值在-100到100之间大于5就算有明显的主力介入大于15就是强信号。第四行加了一条5周期均线用来平滑噪音。实际用的时候看均线的方向和斜率比看单根柱子更靠谱。均线向上且斜率变陡说明资金在加速流入。注意AMOUNT是通达信的内置变量表示当前周期的成交额。在60秒周期下它取的是最近60秒的总成交额。如果你把周期改成其他值记得同步调整L2_MAIN_AMO的参数。3.3 高级版多周期共振主力追踪这个公式综合了短中长三个周期的资金数据用来过滤假信号。{多周期共振主力追踪} 短周期强度: L2_MAIN_AMO(30) / SUM(AMOUNT, 30) * 100; 中周期强度: L2_MAIN_AMO(120) / SUM(AMOUNT, 120) * 100; 长周期强度: L2_MAIN_AMO(300) / SUM(AMOUNT, 300) * 100; 共振条件: 短周期强度 3 AND 中周期强度 2 AND 长周期强度 1; DRAWICON(共振条件, 0, 1); DRAWTEXT(共振条件, 0.5, 主力共振), COLORRED; 短周期强度, COLORWHITE, LINETHICK1; 中周期强度, COLORYELLOW, LINETHICK1; 长周期强度, COLORCYAN, LINETHICK1; 零轴: 0, COLORGRAY, DOTLINE;这个公式的逻辑是只有当短、中、长三个周期的资金强度同时为正且达到阈值时才认为主力资金在持续介入。这样可以过滤掉那些只有短周期脉冲的假信号。阈值的设定3、2、1是我根据大量回测调出来的。短周期阈值最高因为短周期噪音大需要更强的信号才能确认长周期阈值最低因为长周期本身就更稳定不需要太高的门槛。DRAWICON和DRAWTEXT用来在图表上标记共振点方便复盘时快速定位。实操心得这个公式在震荡市里表现最好因为震荡市里假突破多多周期共振能有效过滤。但在单边趋势市里它可能会让你错过一些早期信号因为等三个周期都确认的时候价格已经走了一段了。所以趋势市里可以把阈值调低一点或者只看短中两个周期。4. 参数调优与回测验证公式写完了不等于能用。参数调优和回测验证是必须做的功课否则你就是在拿真金白银试错。4.1 参数敏感度分析我拿过去一年的分钟级数据做过参数扫描测试了不同N值下资金强度指标的信号质量。评价标准有两个信号胜率发出信号后5分钟内价格上涨的概率和信号频率平均每天发出多少次信号。N值秒信号胜率日均信号次数综合评价1552%28噪音太大不推荐3058%16短线可用需配合过滤6063%9平衡性最好12061%5信号少但质量高30057%2太滞后适合波段从表里可以看出60秒是一个甜点值。胜率最高信号频率也还能接受。30秒虽然信号多但胜率掉得厉害说明短周期里噪音占比太高。但这不是绝对的。高换手率的票日换手率大于10%可以把N调到30低换手率的票日换手率小于3%建议调到120。因为换手率高的票成交密集短周期就能积累足够的数据换手率低的票成交稀疏短周期数据不够稳定。4.2 回测框架搭建通达信自带的回测功能比较弱我一般用导出数据到Python做回测。具体步骤第一步在通达信里用EXPORT函数把资金强度指标和对应的价格数据导出成CSV。格式大概是时间、资金强度、开盘价、最高价、最低价、收盘价。第二步用Python的pandas读入数据写一个简单的回测逻辑import pandas as pd import numpy as np df pd.read_csv(l2_strength_export.csv) df[signal] np.where(df[资金强度] 5, 1, 0) df[forward_return] df[收盘价].shift(-5) / df[收盘价] - 1 win_rate df[df[signal] 1][forward_return].apply(lambda x: 1 if x 0 else 0).mean() avg_return df[df[signal] 1][forward_return].mean() print(f信号胜率: {win_rate:.2%}) print(f平均5分钟收益: {avg_return:.4%})第三步调整阈值和持有周期看哪个组合的收益风险比最高。我实测下来资金强度大于5且持续3个周期以上的信号质量最好胜率能到65%左右平均5分钟收益在0.15%到0.25%之间。扣除手续费后还有正期望。4.3 不同市况下的表现差异同一个参数在不同市况下表现差异很大。我按大盘走势把回测区间分成三类上涨市、震荡市、下跌市。市况信号胜率平均收益建议上涨市68%0.22%正常使用震荡市61%0.08%提高阈值到8下跌市49%-0.05%暂停使用或反向下跌市里资金强度指标的胜率不到50%说明主力净流入在下跌趋势里经常是诱多。这时候要么把阈值提高到10以上要么干脆不用这个指标改用其他逻辑。注意这个回测结果是基于历史数据的不代表未来表现。而且回测没有考虑滑点和流动性冲击实盘收益会比回测低一些。建议先用小仓位跑一个月确认实盘表现和回测偏差不大再加大仓位。5. 常见问题与排查技巧实录用了这么多年L2函数踩过的坑不少。下面整理几个最典型的问题和解决方法。5.1 数据不刷新或延迟最常见的问题是L2数据突然不刷新了指标变成一条直线。原因通常有三个一是L2行情权限到期。通达信的L2数据是付费服务到期后会自动降级到L1L2函数返回空值。检查方法是看“系统设置-行情权限”里L2是否还在有效期内。二是网络连接不稳定。L2数据量比L1大很多对网络质量要求高。如果网络抖动数据会断断续续。可以看通达信右下角的连接状态正常应该是绿色黄色或红色就说明有问题。三是公式计算量太大。如果你在公式里调用了大量L2函数而且周期设得很小通达信可能算不过来。解决方法是减少函数调用次数或者把周期调大。我一般建议单个公式里L2函数不超过5个。5.2 资金流向与价格背离有时候你会看到主力资金持续净流入但价格就是不涨。这种情况有几种可能第一种是主力在对倒。主力用自己的两个账户互相买卖制造资金流入的假象吸引散户跟风。识别方法是看成交量和持仓量的变化如果资金流入但持仓量没增加大概率是对倒。第二种是抛压太大。主力确实在买但散户和游资在疯狂卖买盘接不住。这时候看散户资金流向如果散户净流出很大说明抛压主要来自散户主力可能是在被动接盘。第三种是数据延迟。L2数据从交易所到你的软件有几百毫秒的延迟极端行情下这个延迟会导致你看到的资金流向和实际价格走势对不上。这种情况没办法完全避免只能尽量用大周期的数据比如120秒或300秒延迟的影响相对小一些。5.3 公式在不同版本通达信上的兼容性通达信有很多版本金融终端、专业版、券商定制版。不同版本对L2函数的支持程度不一样。我遇到过好几次在金融终端上跑得好好的公式换到券商版就报错。主要差异在两个方面一是函数名有些版本叫L2_MAIN_AMO有些版本叫L2_MAINNET二是参数顺序比如L2_AMO(N, M)在有些版本里是L2_AMO(M, N)。解决方法是在公式开头加一个版本检测{版本兼容处理} {如果是券商版用L2_MAINNET否则用L2_MAIN_AMO} 主力净额: IF(DATATYPE 1, L2_MAINNET(60), L2_MAIN_AMO(60));DATATYPE是通达信的内置变量不同版本返回值不同。你可以先查一下自己版本的DATATYPE值然后写对应的分支。5.4 常见问题速查表问题现象可能原因排查方法解决方案指标直线不刷新L2权限到期检查行情权限续费或降级使用数据跳动剧烈N值太小调大N值改用60秒以上资金流入价格不涨主力对倒看持仓量变化结合其他指标确认公式报错版本不兼容检查函数名加版本检测分支回测收益好实盘差滑点未计入对比回测和实盘降低仓位或加滑点开盘收盘信号失真成交结构特殊过滤时段跳过前15分钟和后15分钟实操心得我建议每次修改公式后都做一次小样本回测不用跑全年数据跑最近一个月的就行。这样能快速发现参数是否合理避免用错误参数实盘操作。回测的时候记得把手续费和滑点算进去不然结果会过于乐观。6. 把L2资金流向和其他指标组合使用单独用L2资金流向指标胜率大概在60%出头。但如果和其他指标组合胜率能提到70%以上。下面说几个我常用的组合方式。6.1 配合量价关系过滤假信号资金流向指标最大的问题是在缩量行情里容易失真。因为成交清淡的时候一笔稍大的单子就能让资金流向指标跳变。解决方法是用量比做过滤{量价过滤后的资金强度} 量比: VOL / MA(VOL, 60); 有效信号: 资金强度 5 AND 量比 1.2;只有当量比大于1.2的时候资金强度信号才有效。这样能过滤掉大部分缩量假信号。我回测过加了这个过滤条件后胜率从63%提到了69%信号频率从每天9次降到5次但质量明显提升。6.2 配合均线系统判断趋势资金流向指标本身不判断趋势它只告诉你资金在流入还是流出。但如果资金流入方向和大周期均线方向一致信号的可靠性会大幅提高。我的做法是用20周期均线判断短期趋势用60周期均线判断中期趋势。只有当价格在20均线之上且20均线在60均线之上时才认可资金流入信号。反之如果价格在均线之下即使资金流入也不做多。这个组合的逻辑是均线代表趋势资金流向代表动能。趋势向上且动能向上才是最佳做多时机。趋势向下但动能向上可能是反弹也可能是诱多不值得冒险。6.3 多股票横向对比选最强L2资金流向指标还有一个用法横向对比。把同一板块的几只股票的资金强度放在一起看选最强的那个。具体操作在通达信里建一个自定义板块把目标股票加进去。然后用排序功能按资金强度排序。资金强度最高且持续为正的就是板块龙头。这个方法在热点板块轮动的时候特别好用。因为热点板块里资金会向龙头集中龙头的资金强度会明显高于跟风股。你不需要预测哪个是龙头资金流向会告诉你。注意横向对比的时候要确保所有股票用的是同一个N值否则没有可比性。另外不同股票的流通盘差异很大最好用归一化后的资金强度L2_STRENGTH而不是绝对金额。7. 一些零散但重要的经验最后说几个零散的点都是实际用的时候才会遇到的问题。第一L2数据的历史回看有限制。通达信一般只保留最近30到60天的L2数据更早的数据会被压缩或删除。所以如果你想做长周期回测必须定期导出数据存档。我一般是每周导出一次存成CSV积累了一年多的数据。第二不同券商的L2数据质量有差异。有的券商是直接从交易所买的原始数据质量好有的券商是二手数据延迟大、丢包多。如果你发现资金流向指标经常跳变或者和价格对不上可能是数据源的问题换个券商试试。第三公式不要太复杂。我见过有人写了几百行的L2公式调用了几十个函数结果通达信直接卡死。单个公式的L2函数调用次数建议控制在5个以内总行数控制在50行以内。复杂的逻辑可以拆成多个公式用引用方式组合。第四实盘和回测的差异主要来自滑点。L2资金流向指标发出的信号往往是瞬时信号等你看到信号再下单价格可能已经动了。我实测下来从信号发出到下单成交平均滑点在0.05%到0.1%之间。这个成本必须算进去否则回测收益会虚高。第五不要迷信任何单一指标。L2资金流向是个好工具但它不是万能的。它擅长判断短期动能不擅长判断中长期趋势。把它和趋势指标、基本面分析结合起来用才能发挥最大价值。我自己的做法是L2资金流向决定什么时候买基本面和技术面决定买什么。第六定期检查公式是否还有效。市场结构在变化主力的手法也在进化。去年有效的参数今年可能就失效了。我一般每季度做一次参数重新校准用最近三个月的数据重新跑一遍回测看看最优参数有没有漂移。如果漂移超过20%就需要调整了。第七记录每一笔交易的资金流向数据。这个习惯让我受益很多。每次交易后把当时的资金强度、量比、均线位置等数据记下来积累多了就能发现规律。比如我发现自己在资金强度8到12之间入场时胜率最高低于8信号太弱高于12往往是短期高点。这种个人化的规律是任何通用指标都给不了的。