一、原版源码拆解
网上最常见的写法:
ZLJR:=BIGORDER(1,1)-BIGORDER(2,1); XG:ZLJR>0 AND ZLJR>REF(ZLJR,1);
主要问题有:① BIGORDER 口径不透明:大单阈值各家不同,同一笔成交 A 算主力、B 算散户,结果完全相反;
② 只看正负不看量:净流入 1 万元也算“净流入”,噪音极大;
③ 忽略换手率:低换手下的净流入毫无意义,可能是对倒或尾盘偷袭。
🔍 二、深度拆解:为什么原版公式会失真?
1. 逻辑死穴:大单阈值的“版本地狱”
通达信 BIGORDER 函数把成交按金额拆成大单/中单/小单,但“大单”起点(如 20 万 / 50 万)不同版本不同。更致命的是,主力可以拆单——一笔 100 万的买单拆成 10 笔 9.9 万,就全变成“中单”消失在你的公式里。
2. 函数陷阱:BIGORDER 的滞后与缺失
部分版本 BIGORDER 只支持日线,分钟级资金流需要用 DYNAINFO(23) 等实时函数替代;另外停牌、新股首日数据缺失会返回 0 或无效值,必须过滤。
3. 视觉盲区:净流入 ≠ 真买入
对倒(自买自卖)也会产生“大单净流入”的假象。单看资金流方向会被骗,必须配合换手率和价格位置二次确认。
📊 三、数据回测:不同口径下的信号表现
| 口径版本 | 大单阈值 | 信号池规模(日均) | 特征描述 |
|---|---|---|---|
| 口径A (20万起) | >20万 | 约 200 只/日 | 阈值低,噪音大,包含大量中单伪装 |
| 口径B (50万起) | >50万 | 约 60 只/日 | 相对干净,但漏掉真正的拆单主力 |
| 口径C (100万起) | >100万 | 约 15 只/日 | 极严苛,仅捕获机构级大单 |
结论:单纯提高大单阈值会减少噪音,但无法解决拆单问题。必须叠加换手率(如 >3%)和位置过滤(如低位首板),才能把“真金白银”和“对倒表演”分开。
🔧 四、优化版源码(可直接复制)
{主力净流入 · 工程优化版}
{参数区: N:1,100,5; T:1,10,3}
主动买:=BIGORDER(1,2);
主动卖:=BIGORDER(2,2);
净额:=主动买-主动卖;
{— 换手率过滤:剔除对倒噪音 —}
换手:=VOL/CAPITAL*100;
有效:=换手>N AND 换手<T*10;
{— 净额标准化:用流通盘比例替代绝对值 —}
净额比:=净额/CAPITAL/10000;
{— 综合选股 —}
XG:
净额比>0.0005
AND 有效
AND C>MA(C,20)
AND NOT(NAMELIKE('ST')) AND BARSCOUNT(C)>30;
五、这次改了什么?
核心优化:
1. 净额标准化:用 净额/流通盘 替代绝对值,小盘股和大盘股可在同一尺度比较;
2. 换手率双门槛:下限过滤僵尸股,上限过滤对倒拉升(换手 >30% 多为出货);
3. 叠加趋势过滤:要求站上 20 日线,确保资金流入发生在上升趋势中。
【编者手记】资金流数据是“参考系”不是“答案”。我吃过最大的亏,就是看到 BIGORDER 显示巨额净流入就追,结果那是主力对倒拉升准备出货。现在我的铁律:资金流只做确认,不做决策——先有形态和趋势判断,再用资金流验证。

