窗口聚合运算
与网格聚合方法一样,所有窗口聚合 C++ 序列方法都接受整数区间参数,并生成包含每个区间计算的聚合的结果序列。
窗口聚合方法如何确定其滑动窗口间隔的差异可参阅窗口与网格聚合页面中描述。所有窗口聚合方法的结果在结果序列中作为每个间隔的计算聚合返回。与网格聚合方法一样,对象的序列根据interval
参数(类型为uint8
)的值划分为间隔,这决定了组中元素的最大数量。因此,输入序列将被划分为区间元素块,在这些区间元素上执行操作。
以下是可用的方法:
windowAggMax
Sequence<T> windowAggMax(mco_size_t interval) const
返回每个元素窗口中具有最大值的序列。
windowAggMin
Sequence<T> windowAggMin(mco_size_t interval) const
返回每个元素窗口中具有最小值的序列。
windowAggSum
Sequence<R> windowAggSum(mco_size_t interval) const
返回每个元素窗口之和的序列。
windowAggAvg
Sequence<double> windowAggAvg(mco_size_t interval) const
返回每个元素窗口平均值的序列。
windowAggVar
Sequence<double> windowAggVar(mco_size_t interval) const
返回每个元素窗口方差的序列。
windowAggVarSamp
Sequence<double> windowAggVarSamp(mco_size_t interval) const
返回每个元素窗口样本方差的序列。
windowAggDev
Sequence<double> windowAggDev(mco_size_t interval) const
返回每个元素窗口的标准差序列。
windowAggDevSamp
Sequence<double> windowAggDevSamp(mco_size_t interval) const
返回每个元素窗口的样本标准差序列。
示例
以下是展示窗口聚合方法的示例代码片段:
{
mco_trans_h trans;
mco_cursor_t quote_cursor;
Quote quote;
MCO_RET rc;
...
rc = mco_trans_start(db, MCO_READ_ONLY, MCO_TRANS_FOREGROUND, &trans);
if ( MCO_S_OK == rc )
{
for (rc = mco_cursor_first(trans, "e_cursor);
rc != MCO_S_CURSOR_END;
rc = mco_cursor_next(trans, "e_cursor))
{
quote.from.cursor(trans, "e_cursor);
// 计算窗口(移动)聚合值。
// 找出 20 日移动平均值超过 5 日移动平均值的日期。
print_sequence(quote, quote.day_map((quote.close_iterator().windowAggAvg(20) -
quote.close_iterator().windowAggAvg(5)).cross(1)));
}
mco_trans_rollback(trans);
}
}