同一根期货K线有人说它放量了有人却说成交还不及前一段平均水平。两种描述未必有一个算错可能只是分母选得不同。“比上一根多了多少”关注相邻变化“相对前一段处在什么水平”关注一段时期的参照。选哪一种取决于你想看短时变化还是想判断当前活动是否高于此前水平。TqSdk的原K线成交量与位移、均值函数可以把这两种观察放在同一份数据上比较。当前30为什么既能说放大又能说偏低假设同一合约、同一周期的四根K线均已结束成交量按时间从早到晚排列如下单位为手K线位置前第3根前第2根上一根当前根成交量1001001030如果拿当前30与上一根10比较比值是30÷103。准确说法是“当前成交量为上一根的3倍”它反映从最近一根到当前这一根成交量增加了。如果拿当前30与此前三根的平均量比较分母是10010010÷370比值是30÷70约为0.43。此时准确说法是“当前只有前三根平均量的约43%”低于这个窗口的平均水平。3与0.43并不互相否定。上一根10较小所以当前30显得明显回升但再往前还有两根100前窗平均量仍高于30。“比刚才多”与“仍未回到此前平均水平”可以同时成立。这里两种分母都不包含当前根。当前30是被比较的对象不应在想观察“相对之前怎样”时又悄悄进入此前均值。想看相邻变化上一根更直接当问题是“这一根是否比刚刚那根更热闹”上一根就是直接参照。相邻比值能保留短时变化不必等待一个较长窗口的平均水平明显改变。但这个读法也容易受上一根本身影响。例子中的10很低30相对它达到3倍不能据此就说30高于最近一段的常见水平。你得到的是相邻变化不是对整个背景的判断。因此在期货复盘里“较上一根放量至3倍”是一条清楚的信息把后半句省掉只留下“放量3倍”读者就可能误以为它相对任何基准都很高。想看前段水平前窗均量更合适如果想知道当前成交量相对此前一段是高是低前n根平均量更贴近这个问题。它把多个已结束样本等权放进分母不让最近一根单独代表整段背景。这也不是让前窗均量永远替代上一根。窗口包含哪些K线会决定它代表什么例子中选前三根得到70换成其他长度或区间比较含义也随之改变。一个窗口对你的观察有用不等于它适用于所有合约、周期和时段。两种参照可以并列而不必争夺一个统一的“正确放量”名称你要回答的问题更直接的基准本例能说出的结果与刚刚那根相比发生了多大变化上一根成交量30是10的3倍相对前一段成交水平处在什么位置选定前窗的平均量30约为70的0.43倍对于需要描述背景的观察均量有用对于需要解释眼前变化的观察上一根有用。先明确问题再选择参照结果才能和原来的研究目的对应。用TqSdk让两个基准保持清楚TqSdk的K线volume表示该根K线时间范围内的成交量。比较这些量应使用同一合约、同一周期的有效已结束K线不能把当日累计Tick成交量直接当成每根K线的成交量。官方tafunc.ref用于序列位移ref(V, 1)可在当前位置对应上一根的成交量tafunc.ma用于等权简单移动平均。以前n根作参照可以表达为ma(ref(V, 1), n)先让参照退到上一根再取n根平均从而排除当前值。这里V是原K线成交量序列n是正的窗口根数不是自动按天解释的参数。这套表达的用途是让“上一根”和“此前n根”各自有明确来处不是多写一层公式就获得更好的交易信号。观察表可以把当前量、上一根量、前窗均量与两个比值一起留下并附合约、周期及窗口起止K线身份。计算前已有程序仍需完成数据更新确认当前被比较的K线已经结束且选定窗口完整、顺序正确。位移或均值因样本不足出现NaN时应暂缓该项比较分母为0或无效时也不能强行给出倍数更不能用补0让结果看起来完整。否则比值变化可能来自无效输入而不是实际成交量变化。为什么推荐用TqSdk做这类量的对照如果你的期货观察经常需要解释“放量到底是相对谁”我推荐用TqSdk把这两个基准并列保留。选择的关键不是让上一根与均量互相取代而是用同一份具名K线成交量明确构造出相邻变化和前段水平两种参照。这样30相对10显得增加、相对70仍偏低就能同时被准确表达。TqSdk在这里提供原始序列和相应计算入口研究者决定哪个问题更重要一个比值不必被包装成适用于所有情形的放量阈值也没有因此自动变成买入条件。