通达信大单统计公式写完之后,最容易出现的现象是统计值长期为 0,或者所有位置的值长得几乎一样。这两种现象指向同一个原因:公式里能直接读到的成交数据是 K 线的汇总值,不是单笔明细。没有把口径先定下来,也不会区分汇总与单笔,统计就只剩一个形状。

下面按「阈值口径、逐笔数据的前提、两种写法、区间累计、方向判定、数据缺口、核对方法、记录模板」八步讲。涉及的都是取数口径与统计写法,不涉及任何方向判断;文中字段名与函数名以通达信公式编辑器内附的说明为准。

一、阈值口径要先定下来

什么叫大单,没有统一的定义。能落到公式里的做法是按单笔成交金额划一条线,超过这条线的成交计入大额。这条线定在哪里,直接决定统计值的大小,也决定了两个时间段的统计值能不能互相比较。

{ 阈值口径要先写死 }
大额阈值 := 1000000;   { 单笔成交金额,单位元 }
{ 阈值改了,前后两段统计值不再可比,记录里要标注 }

阈值用固定金额还是随价格水平浮动,是第二个要定的选择。固定金额写法简单,但高价品种与低价品种的成交金额天然不同,同一条阈值在两边命中的范围不一样。随价格浮动的写法把阈值与均价挂钩,跨品种可比,代价是公式里多一处依赖,门槛值本身也随行情变化。

二、逐笔数据是可用的前提

通达信大单统计公式在 K 线级别能取到的成交字段有两个:成交量与成交额,都是当根的汇总值。汇总值里没有单笔的结构信息,一笔大额成交与许多笔小额成交落到同一根 K 线上,汇总结果可以完全相同。要按单笔口径统计,先要解决的问题是数据从哪里来。

数据形态 能提供什么 对统计的约束
当根汇总字段 这一根的成交量与成交额 无法区分单笔结构,只能做近似
逐笔成交明细 每一笔的价格与数量 依赖客户端的分笔数据是否完整
客户端统计功能 按单笔金额划档的现成结果 口径由客户端给出,公式里读不到明细

选哪一条路取决于要回答的问题。问的是「这一根的成交额有多大」,汇总字段够用;问的是「这一根里有多少笔大额成交」,必须有逐笔明细,或者先把明细按根汇总成一份可供公式读取的数据,再引用进来。

三、单笔金额与单笔数量的两种写法

只能用汇总字段时的写法,思路是用当根的额与量推算平均单笔规模,再与阈值比较。

{ 用汇总字段的近似写法 }
均单价 := AMOUNT / VOL;
大额额 := IF(均单价 >= 大额阈值, AMOUNT, 0);
大额占比 := SUM(大额额, N) / SUM(AMOUNT, N) * 100;
{ 平均单笔金额被抬高,说明这一根里大额成交所占的分量更大 }

这个写法里的均单价是平均值,不是单笔值。它只有在成交结构比较集中的时候才接近实际情况:一根 K 线里若由少数大额成交构成,平均值会被抬高;若大小成交混杂,平均值会落在中间,与阈值的比较就失去分辨力。用这个写法时要把它当作一个相对水平的读数,而不是「大单笔数」的替代品。

有逐笔明细可读时,写法按单笔判断再汇总,结构信息不会在汇总环节丢掉。

{ 有逐笔数据时的写法 }
单笔额 := 单笔价格 * 单笔数量;
大额笔数 := COUNT(单笔额 >= 大额阈值, N);
大额金额 := SUM(IF(单笔额 >= 大额阈值, 单笔额, 0), N);
{ 汇总成与 K 线等长的序列之后,才能被指标引用 }

第二种写法需要先解决数据落位的问题。逐笔明细要经过一次汇总计算,把结果按品种与周期存成可供引用的数据,公式再去读取。这一步与 K 线级别的计算不在同一个环节里,更新时点也要单独管。

四、区间累计与占比

单根上的大额金额受单根成交规模影响,做比较时用区间累计更稳定。累计的写法是把最近 N 根的大额金额相加,再与同一区间的总成交额相比。

{ 区间累计与占比 }
区间大额 := SUM(大额额, N);
区间总额 := SUM(AMOUNT, N);
区间占比 := 区间大额 / 区间总额 * 100;
{ 分子分母取自同一区间,占比才落在 0 到 100 之间 }

区间长度 N 决定了这个读数的灵敏程度。N 取小,读数随单根变化跳动;N 取大,读数被长期结构拉平。两套 N 的读数不能混在同一张表里比大小,这一点与振幅、波动率一类指标的参数处理方式相同。

五、主动方向的判定差异

把大额成交按主动方向分开统计,需要先确定方向是怎么判定的。通行的做法是把成交价与当时的买一价、卖一价比较:成交在卖方报价上算作主动向上的一方,成交在买方报价上算作主动向下的一方。判定依据是报价的比较结果,不是成交本身自带的标记。

方向判定依赖报价的时点。同一笔成交,用实时推送的报价去比与用快照时点的报价去比,落到哪一侧可能不同。不同数据源对同一段行情的方向划分因此存在差异。公式里若用现成的内外盘字段,要确认字段来源,不要拿两个来源的字段直接相减。

方向分开统计之后的写法与总量统计一样,只是分子换成某一侧的大额金额。要注意的是两侧之和与总量之间未必完全闭合,差额来自判定不明确的成交。对不上时先看差额的大小,再看是不是被停牌或集合竞价时段的数据拉开的。

六、数据缺口时的表现

缺口来源 统计值的样子 处理方式
分笔数据未补充 基于明细的统计为 0 或为空 先补齐数据再重算,不要用 0 顶替
停牌区间 无成交,区间累计被摊薄 把停牌根数从区间长度里扣掉,或单独标注
集合竞价时段 单笔规模与连续竞价段不同 单独统计或排除,不与连续段混算
除权除息位置 价格跳变,金额口径前后不一致 按复权口径核对

表里第一行是最需要警惕的一种。统计值为 0 有两种含义:这一段真的没有大额成交,或者明细数据根本没取到。两者在数值上完全相同,只能靠核对数据完整性来区分。

七、核对方法

通达信大单统计公式的核对做法是选一根 K 线,把当根的成交额与客户端成交明细里的金额汇总对照。两边一致,说明汇总字段取数正常;不一致时先查该位置的数据是否补齐。第二步是核对区间:取连续若干根的成交额逐根相加,与公式里的区间总额对照,确认累加窗口没有错位。

第三步是核对大额部分。用汇总字段的近似写法时,把均单价输出到副图,人工挑几个均单价明显抬高的位置,与成交明细里的单笔结构对照,看这个读数是不是真的指向了大额成交集中的位置。这一步能判断近似写法在你所用的数据上是否可用。数据完整性的排查顺序见 公式报错与卡顿排查 一栏,区间口径与回落的验证思路见 指标回测与风险验证 一栏。

八、记录模板

{ 一份可直接抄的统计记录 }
统计日期   —— 这一份统计覆盖的日期
品种范围   —— 本次计算覆盖的范围
大额阈值   —— 本次使用的阈值与单位
统计区间   —— 区间长度 N 的取值
数据来源   —— 汇总字段还是逐笔明细
数据完整性 —— 明细是否补齐,未补齐的根数
{ 七项写清之后,两次统计的差异才能被解释 }

记录里最重要的两列是阈值与数据来源。阈值换了,统计值的大小不再可比;数据来源换了,统计值的含义也不一样。把这两列写清,翻出任何一个旧数字都能判断它能不能与新结果放在一起看。复盘环节里怎么把这些字段与已有的记录表对齐,可以参考 复盘方法与数据工具 一栏的字段设计。

把上面的内容收一下:通达信大单统计公式的有效性取决于两件事——阈值是否写死并记录在案,以及数据到底来自汇总字段还是逐笔明细。这两件事说清了,统计值才有解释的余地;说不清,任何读数的变化都找不到归因。

文中字段名、函数名与统计口径为通用描述;通达信不同版本与券商定制版对成交额字段的取值方式、分笔数据的提供范围与内外盘字段的判定规则存在差异,具体写法请以你所用版本公式编辑器内附的函数说明与数据说明为准。本文只讨论取数口径与统计写法,不构成任何投资建议。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。