# 数据仓库 / 时间序列统计 ## `sp_median(arg1, arg2)` 声明:function 时间序列统计相关函数。 | 参数 | 类型 | 说明 | | ------ | -------- | ---- | | `arg1` | any | | | `arg2` | datetime | | 返回:any ## `sp_mode(arg1, arg2)` 声明:function 时间序列统计相关函数。 | 参数 | 类型 | 说明 | | ------ | -------- | ---- | | `arg1` | any | | | `arg2` | datetime | | 返回:any ## `sp_norm(stock_id, arg2)` 声明:function 时间序列统计相关函数。 | 参数 | 类型 | 说明 | | ---------- | ------ | ---- | | `stock_id` | string | | | `arg2` | any | | 返回:any ## `sp_product(stock_id, arg2)` 声明:function 时间序列统计相关函数。 | 参数 | 类型 | 说明 | | ---------- | ------ | ---- | | `stock_id` | string | | | `arg2` | any | | 返回:any ## `sp_rank(arg1, arg2, arg3)` 声明:function 时间序列统计相关函数。 | 参数 | 类型 | 说明 | | ------ | ---- | ---- | | `arg1` | any | | | `arg2` | any | | | `arg3` | any | | 返回:any ## `hhv(exp, n, cache_string)` 声明:function 返回N日最高的Exp的值,与系统参数(股票、时间、周期等相关),查看相关行情数据说明。 | 参数 | 类型 | 说明 | | -------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `exp` | TExpression | TExpression型表达式 | | `n` | integer | 整数,天数。N为0时,从上市日算起;注意,计算上市以来的最高/最低时,0必须用常量。比如hhv(high(),0)。不能以变量的方式传递:N:=0; hhv(high(),N),会报错。 | | `cache_string` | string | 可选参数,字符串类型,缓存标志串。参见:时间序列统计缓存标志与性能加速 | 返回:real ### 示例 ```tsl //获取万科A(SZ000002)截止2011-09-09日14个交易日内的最高,最低的收盘价以及 //发生日期。 setSysParam(pn_stock(),'SZ000002'); setSysParam(pn_date(),intToDate(20110909)); n := 14; r := array('h_value':hhv(close(),n), 'h_date':dateToStr(getSysParam('hhvtime')), 'l_value':llv(close(),n), 'l_date':dateToStr(getSysParam('llvtime')) ); return r; 结果: ``` ## `llv(exp, n, cache_string)` 声明:function 返回N日最低的Exp的值,与系统参数(股票、时间、周期等相关),查看相关行情数据说明。 | 参数 | 类型 | 说明 | | -------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `exp` | TExpression | TExpression型表达式 | | `n` | integer | 整数,天数。N为0时,从上市日算起;N为负数时无效。注意,计算上市以来的最高/最低时,0必须用常量。比如llv(close(),0)。不能以变量的方式:N:=0; llv(close(),N),会报错。 | | `cache_string` | string | 可选参数,字符串类型,缓存标志串。参见:时间序列统计缓存标志与性能加速 | 返回:real ## `ma(exp, n, cache_string)` 声明:function 返回N日Exp的平均值,与系统参数(股票、时间、周期等相关)。 | 参数 | 类型 | 说明 | | -------------- | ----------- | --------------------------------------------------------------------- | | `exp` | TExpression | TExpression型表达式 | | `n` | integer | 整数,天数。N为0时,返回当天值;N为-1时无效。 | | `cache_string` | string | 可选参数,字符串类型,缓存标志串。参见:时间序列统计缓存标志与性能加速 | 返回:real ### 示例 ```tsl 范例一: //获得万科A(SZ000002)在2011-09-09日的10日均价 setSysParam(pn_stock(),'SZ000002'); setSysParam(pn_date(),intToDate(20110909)); n := 10; return ma(close(),n); //返回8.103 范例二: //获取万科A一段时间的10日均价 setSysParam(pn_stock(),"SZ000002"); setSysParam(pn_date(),strToDate("2014-01-15")); t := nDay(100,'time',sp_time(),'close',close(),'ma10',ma(close(),10),'ma20',ma(close(),20)); return t; 结果: ``` ## `ema(exp, n, cache_string)` 声明:function 返回N日Exp的移动平均,与系统参数(股票、时间、周期等相关)。 | 参数 | 类型 | 说明 | | -------------- | ----------- | --------------------------------------------------------------------- | | `exp` | TExpression | TExpression型表达式; | | `n` | integer | 整数,天数;N为-1,0时无效。 | | `cache_string` | string | 可选参数,字符串类型,缓存标志串。参见:时间序列统计缓存标志与性能加速 | 返回:real ### 示例 ```tsl //获得万科A(SZ000002)在2011-09-09日的10日平滑移动均价 setSysParam(pn_stock(),'SZ000002'); setSysParam(pn_date(),intToDate(20110909)); n := 10; return ema(close(),n); // 结果:8.1158 ``` ## `sma(exp, n, m, cache_string)` 声明:function 求Exp的N日平滑移动平均,M为权重。 | 参数 | 类型 | 说明 | | -------------- | ----------- | --------------------------------------------------------------------- | | `exp` | TExpression | TExpression型表达式 | | `n` | integer | 整数,天数 | | `m` | integer | 整数,权重 | | `cache_string` | string | 可选参数,字符串类型,缓存标志串。参见:时间序列统计缓存标志与性能加速 | 返回:real ### 示例 ```tsl //获得万科A(SZ000002)在2011-09-09日的10日平滑移动均价,3为权重 setSysParam(pn_stock(),'SZ000002'); setSysParam(pn_date(),intToDate(20110909)); n := 10; m := 3; return sma(close(),n,m);//返回8.0914 ``` ## `count(exp, n, cache_string)` 声明:function 统计N天中表达式Exp值为真的天数。 | 参数 | 类型 | 说明 | | -------------- | ----------- | --------------------------------------------------------------------- | | `exp` | TExpression | 表达式类型 | | `n` | integer | 整数,交易日天数,如果为-1表示从上市第一天起统计 | | `cache_string` | string | 可选参数,字符串类型,缓存标志串。参见:时间序列统计缓存标志与性能加速 | 返回:integer ### 示例 ```tsl //上证指数在最近100天内的上涨天数; setSysParam(pn_stock(),'SH000001'); setSysParam(pn_date(),intToDate(20140122)); return count(isUp(),100); //返回47。 ``` ## `sumN(exp, n, cache_string)` 声明:function 求Exp的N日累加和。 | 参数 | 类型 | 说明 | | -------------- | ----------- | --------------------------------------------------------------------- | | `exp` | TExpression | TExpression型表达式 | | `n` | integer | 整数,交易日天数,如果为-1表示从上市第一天起统计 | | `cache_string` | string | 可选参数,字符串类型,缓存标志串。参见:时间序列统计缓存标志与性能加速 | 返回:real ### 示例 ```tsl //获得万科A(SZ000002)在2011-09-09日的5日总成交量 setSysParam(pn_stock(),'SZ000002'); setSysParam(pn_date(),intToDate(20110909)); return sumN(vol(),5); // 返回152502152 ``` ## `cross(a, b)` 声明:function A线从下面穿越B线时返回1,从A上面向下穿越B时返回-1,否则返回0。与系统参数(股票、时间、周期等相关) | 参数 | 类型 | 说明 | | ---- | ----------- | ------------------- | | `a` | TExpression | TExpression型表达式 | | `b` | TExpression | TExpression型表达式 | 返回:integer ### 示例 ```tsl //万科在指定区间内的均线穿越情况; setSysParam(pn_stock(),'SZ000002'); end_date := intToDate(20110829); beg_date := incWeek(end_date,-1); //end_date 前推一个 r := array(); i := 0; for d := end_date downto beg_date do begin if not isTradeDay(d) then continue; setSysParam(pn_date(),d); r[i]['date'] := dateToStr(d); case cross(close(),ma(close(),5)) of 1:begin r[i]['cross_state'] := '突破5日均线'; end -1:begin r[i]['cross_state'] := '跌破5日均线'; end 0:begin r[i]['cross_state'] := ''; end end; i++; end; return r; 返回结果: ```