playbook/docs/tsl/syntax_book/function/03_datawarehouse.md

6417 lines
132 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### 数据仓库函数
#### 内容
- 系统参数名称函数
- 多市场支撑函数
- 时间相关函数
- 判定函数
- 盘中相关
- 盘后相关(在当日可用于盘中)
- 时间序列统计
- 成交明细数据函数
- 交易明细字段标识函数
- 查询和轮询函数
- 市场和板块函数
- 取行情数据序列函数
- 引用指定函数
- 系统参数设置和获取函数
- 复权类型函数
- 复权基准日函数
- 周期函数
- 财务函数
- 选股与取数
- 向导函数
- 条件判定
#### 系统参数名称函数
##### 内容
- cyclefilter
- pn_Stock
- pn_Date
- pn_Rate
- pn_RateDay
- pn_nDay
- pn_Cycle
- pn_Precision
- pn_NilTrans
- Pn_I64Trans
- pn_ViewPoint
- pn_FreeCycle
- pn_ReportMode
- Pn_Emptymode
- pn_ChangedDateMode
- pn_ReportType
- pn_NoRaiseNoData
- pn_CalcCTRLWord
##### cyclefilter
主要用于过滤假期的分时数据。
参数值说明:
0 没有过滤器,可用于取消设置的参数
1 过滤掉期货放假期间的夜盘
3 新增集合竞价周期点
范例1
```tsl
// 结果集将只有20161010的数据没有假期的夜盘数据。
setsysparam("cyclefilter", 1);
setsysparam(pn_cycle(), cy_15m());
return select * from markettable datekey 20161007T to 20161010.1600T of"ag1612"end;
```
范例2
```tsl
// 结果将会新增20161010T08:59:00的集合竞价数据
// 期货夜盘有两个集合竞价时点正常夜盘是20:59:00放假无夜盘是8:59:00
setsysparam("cyclefilter", 3);
setsysparam(pn_cycle(), cy_15m());
return select * , datetimetostr(["date"]) as"date"
from markettable datekey 20161007T to 20161010.1600T of"ag1612"end;
```
##### pn_Stock
范例
范例1
```tsl
// 设置当前证券为万科A
setsysparam(pn_stock(), 'SZ000002');
return getsysparam(pn_stock()); // 获取当前的证券代码
// 返回字符串SZ000002
```
范例2
```tsl
// 取指定证券SH60000在指定日2019-02-18这一天的收盘价
setsysparam(pn_stock(), 'SH600000');
setsysparam(pn_date(), 20190218T); // 设置当前时间
return close(); // 取收盘价
// 返回10.84
```
参考SetSysParam GetSysParam pn_Date pn_Rate pn_RateDay pn_nDay pn_Cycle
pn_Precision pn_ViewPoint pn_FreeCycle pn_ReportMode
##### pn_Date
范例
范例1
```tsl
// 设置当前时间为2019-2-18
setsysparam(pn_date(), 20190218T);
return sp_time(); // 或return getsysparam(pn_date()); // 获取当前时间
// 返回43514即2019-02-18
```
范例2
```tsl
// 取指定证券SH60000在指定日2019-02-18这一天的收盘价
setsysparam(pn_stock(), 'SH600000');
setsysparam(pn_date(), 20190218T); // 设置当前时间
return close(); // 取收盘价
// 返回10.84
```
参考SetSysParam GetSysParam pn_Stock pn_Rate pn_RateDay pn_nDay pn_Cycle
pn_Precision pn_ViewPoint pn_FreeCycle pn_ReportMode
##### pn_Rate
范例
```tsl
// 以第一个交易日为基准进行复杂复权后的截止20110909万科A的收盘价时间序列
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
setsysparam(pn_rate(), rt_complex()); // 复权方式:复杂复权
setsysparam(pn_rateday(), rd_firstday()); // 复权基准日:第一个交易日
return nday(30, 'date', datetostr(sp_time()),
'close', close());
```
结果(部分)
参考SetSysParam GetSysParam pn_Stock pn_Date pn_RateDay pn_nDay pn_Cycle
pn_Precision 复权基准日函数 pn_ViewPoint pn_FreeCycle pn_ReportMode
##### pn_RateDay
范例
```tsl
// 设置2018-08-20为复权基准日小于这个日期的前复权大于这个日的后复权。
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), 20180905T);
setsysparam(pn_rate(), 1); // 复权方式:比例复权
setsysparam(pn_rateday(), 20180820T); // 复权基准日
return nday(30, 'date', datetostr(sp_time()), 'close', close());
```
参考SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_nDay pn_Cycle
pn_Precision 复权类型函数 pn_ViewPoint pn_FreeCycle pn_ReportMode
##### pn_nDay
范例
```tsl
setsysparam(pn_stock(), 'SZ000001');
setsysparam(pn_date(), inttodate(20140115));
setsysparam(pn_nday(), 250);
return nday2('time', datetostr(sp_time()), 'close', close());
```
参考SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_Cycle
pn_Precision pn_ViewPoint pn_FreeCycle pn_ReportMode
##### pn_Cycle
范例
范例1
```tsl
// 取万科A在2019-02-18 11:25:00时的五分钟线成交量
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), 20190218.1125T);
setsysparam(pn_cycle(), cy_5m());
return vol();
// 返回1389725
```
范例2
```tsl
// 取上证指数一段时间内的5分钟线数据
setsysparam(pn_cycle(), cy_5m());
return select ['date'], ['close'], ['vol'] from markettable datekey 20190218.1030T to 20190218.1120T of'SH000001'end;
// 返回结果:
```
参考周期函数 SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_nDay
pn_Precision pn_ViewPoint pn_FreeCycle pn_ReportMode 自由周期
##### pn_Precision
范例
范例1设置与生效
```tsl
setsysparam(PN_Precision(), 3); // 设置有效
ov := BackupSystemParameters2();
setsysparam(PN_Precision(), 2); // 设置无效在return 之前被恢复到备份之前的状态
return rand(2, 3);
// 返回结果保留3位小数
```
范例2
```tsl
// 提取万科A2019-2-19日的5分钟线收盘价并保留2位小数结果输出
setsysparam(PN_Precision(), 2); // 有效
setsysparam(pn_cycle(), cy_30m());
return select datetimetostr(['date']) as'date', ['close']
from markettable datekey 20190219T to 20190219.16T of'SZ000002'end;
// 返回结果:
```
参考SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_nDay pn_Cycle
pn_ViewPoint pn_FreeCycle pn_ReportMode
##### pn_NilTrans
范例
matlab调用
```tsl
// matlab代码
ts := actxserver('TSExpert.CoExec')
ts.SetSysParam('NilTrans', 9)
ts.RemoteExecute('return array((1,2,nil,4),(2,nil,3,nil));')
// 返回:
```
参考SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_nDay pn_Cycle
pn_ViewPoint pn_FreeCycle pn_ReportMode
##### Pn_I64Trans
参考SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_nDay pn_Cycle
pn_ViewPoint pn_FreeCycle pn_ReportMode
##### pn_ViewPoint
范例在分钟线下指定仿真时间为10点29分42秒求仿真下10点30分的分钟线价量
```tsl
setsysparam(pn_stock(), "SH600519");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_ViewPoint(), 20240702.102942T); // 仿真时间为10:29:42
setsysparam(pn_date(), 20240702.1030T); // 取分钟线十点半时的价量
return array(close(), vol());
```
参见专题非整周期行情数据提取陷阱和时点真实行情数据回溯参考SetSysParam
GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_nDay pn_Cycle pn_FreeCycle
pn_ReportMode
##### pn_FreeCycle
参考SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_nDay pn_Cycle
pn_ReportMode 自由周期
##### pn_ReportMode
范例
```tsl
SetSysParam(PN_Stock(), 'SH600170');
// pn_ReportMode()=-1,返回调整前、调整后
SetSysParam(pn_ReportMode(), -1);
return Select ['StockID'], ['StockName'], ['截止日'], ['公布日'], ['营业收入'], ['归属于母公司所有者净利润']
from infotable 46
of'SH600170'
where ['截止日'] >= 20171231 end;
// 返回结果
StockID
StockName
// 截止日
// 公布日
// 营业收入
// 归属于母公司所有者净利润
SH600170
// 上海建工
20171231
20180328
142, 082, 638, 561.83
2, 584, 465, 203.87
SH600170
// 上海建工
20171231
20190329
142, 082, 638, 561.83
2, 584, 465, 203.87
SH600170
// 上海建工
20180331
20180428
31, 075, 378, 878.24
532, 834, 340.41
SH600170
// 上海建工
20180331
20190430
31, 075, 378, 878.24
532, 834, 340.41
SH600170
// 上海建工
20180630
20180829
78, 290, 436, 984.83
1, 289, 780, 254.93
SH600170
// 上海建工
20180930
20181031
115, 410, 360, 329.49
1, 811, 096, 340.58
SH600170
// 上海建工
20181231
20190329
170, 545, 783, 102.81
2, 779, 866, 799.83
SH600170
// 上海建工
20190331
20190430
47, 099, 976, 904.12
1, 317, 287, 587.90
```
参考财务数据调整的处理专题 财务函数 SetSysParam GetSysParam pn_Stock pn_Date
pn_Rate pn_RateDay pn_nDay pn_Cycle pn_FreeCycle pn_ReportMode
##### Pn_Emptymode
范例
```tsl
// 取万科A在2019年的三季报与年报的股东权益合计笔者执行日期为20191224日年报还未出
setsysparam(pn_emptymode(), 5); // 空记录设置为浮点NAN
setsysparam(pn_stock(), 'SZ000002');
t1 := reportofall(44111, 20190930);
t2 := reportofall(44111, 20191231);
return array(t1, t2);
```
返回:
```text
244,851,895,300.25
NAN
```
##### pn_ChangedDateMode
范例
提取万科A的在20190404日的总股本数据
```tsl
endt := 20190404T;
setsysparam(pn_stock(), 'SZ000002');
v1 := StockTotalShares(endt); // 考虑变动日及公布日
setsysparam(PN_ChangedDateMode(), 1);
v2 := StockTotalShares(endt); // 仅考虑变动日
return array(v1, v2);
// 结果array(11039152001.0,11302143001.0)
```
##### pn_ReportType
pn_ReportType取值说明:
| 取值 | 含义 | 涉及报表 | 应用范围 | 是否与pn_stock/pn_date相关 |
| --- | --- | --- | --- | --- |
| 0默认 | 提取最新公布的报告期 | 正式财报 | 应用最广泛 | 与pn_stock、pn_date相关 |
| 1 | 优先级:正式财报>业绩快报>业绩预测 | 正式财报、业绩快报、业绩预测 | 适用于实时财务数据提取 | 与pn_stock、pn_date相关 |
| 2 | 优先级:正式财报>业绩快报 | 正式财报、业绩快报 | 适用于实时财务数据提取 | 与pn_stock、pn_date相关 |
| 3 | 优先级:正式财报>业绩预测 | 正式财报、业绩预测 | 适用于实时财务数据提取 | 与pn_stock、pn_date相关 |
| 90 | 按正式财报发布规则提取 | 正式财报 | 定期更新,所有股票规则相同 | 与pn_stock、pn_date无关 |
| >=19000101 | 指定报告期,若指定报告期未发布,取最新发布报告期 | 正式财报 | 指定报告期 | 与pn_stock相关与pn_date无关 |
相关专题文档
实时财务数据相关2025-11-21-量化数据-因子研究09关于利用实时财务信息的财务数据提取说明更新版
正式财报发布规则说明
发布规则:
| 财报类型 | 公布日期 |
| --- | --- |
| 一季报 | 4月底全部公布4月最后一天开盘前已全部公布 |
| 中报 | 8月底全部公布8月最后一天开盘前已全部公布 |
| 三季报 | 10月底全部公布10月最后一天开盘前已全部公布 |
| 年报 | 次年4月底全部公布次年4月最后一天开盘前已全部公布 |
按财报发布规则获取最新报告期与最新年度报告期案例:
| 截止日 | 最新报告期 | 最新年度报告期 |
| --- | --- | --- |
| 2023-01-01~2023-04-29 | 20220930 | 20211231 |
| 2023-04-30~2023-08-30 | 20230331 | 20221231 |
| 2023-08-31~2023-10-30 | 20230630 | 20221231 |
| 2023-10-31~2023-12-31 | 20230930 | 20221231 |
范例:
范例1pn_ReportType()=0
```tsl
EndT := 20230121T;
ov := BackupSystemParameters2();
SetSysParam(pn_stock(), 'SH688699');
SetSysParam(pn_date(), EndT);
SetSysParam(pn_ReportType(), 0); // 财报最新报告期,等价于不设置该系统参数
RDate := NewReportDateOfEndT2(EndT);
return RDate;
// 返回结果20220930 财报2022年三季报已公布年报未公布
```
范例2pn_ReportType()=1
```tsl
EndT := 20230121T;
ov := BackupSystemParameters2();
SetSysParam(pn_stock(), 'SH688699');
SetSysParam(pn_date(), EndT);
SetSysParam(pn_ReportType(), 1); // 财报>快报>预测
RDate := NewReportDateOfEndT2(EndT);
return RDate;
// 返回结果20221231 财报和快报2022年年报未公布预测已公布
```
范例3pn_ReportType()=2
```tsl
EndT := 20230121T;
ov := BackupSystemParameters2();
SetSysParam(pn_stock(), 'SH688699');
SetSysParam(pn_date(), EndT);
SetSysParam(pn_ReportType(), 2); // 财报>快报
RDate := NewReportDateOfEndT2(EndT);
return RDate;
// 返回结果20220930财报和快报2022年年报未公布财报2022年三季报已公布
```
范例4pn_ReportType()=3
```tsl
EndT := 20230121T;
ov := BackupSystemParameters2();
SetSysParam(pn_stock(), 'SH688699');
SetSysParam(pn_date(), EndT);
SetSysParam(pn_ReportType(), 3); // 财报>预测
RDate := NewReportDateOfEndT2(EndT);
return RDate;
// 返回结果20221231财报2022年年报未公布预测已公布
```
范例5pn_ReportType()=90发布规则提取
```tsl
EndT := 20230121T;
ov := BackupSystemParameters2();
SetSysParam(pn_ReportType(), 90); // 财报按财报发布规则
RDate := NewReportDateOfEndT2(EndT);
return RDate;
// 返回结果20220930 按财报公布规则20230121t,2022年年报未公布在4月底才公布2022年三季报已在2022年10月公布了
```
范例6pn_ReportType()=20221231指定报告期
```tsl
EndT := 20230121T;
ov := BackupSystemParameters2();
SetSysParam(pn_stock(), 'SH688699');
SetSysParam(pn_ReportType(), 20221231); // 财报指定报告期已公布
RDate := NewReportDateOfEndT2(EndT);
return RDate;
// 返回结果20220930 20230121T指定报告期2022年年报未公布2022年三季报已公布
```
##### pn_NoRaiseNoData
用途:获取/设置“无数据不抛异常”的系统参数键。
参数:无。
返回:系统参数名(用于 SetSysParam/GetSysParam
范例
范例1获取当前禁用无数据异常模式
```tsl
setsysparam(pn_noraisenodata(), 1);
return getsysparam(pn_noraisenodata());
```
返回1
范例2当指定证券无数据时不报错通过close()取价格返回0
```tsl
setsysparam(pn_noraisenodata(), 1);
return spec(close(), "abc");
```
返回0
范例3当指定证券无数据时不报错通过Rd取盘口时返回nil
```tsl
setsysparam(pn_noraisenodata(), 1);
return spec(rd(-1), "abc");
```
返回nil
##### pn_CalcCTRLWord
用途:获取/设置 CalcCTRLWord 系统参数键,用于控制 nil 参与计算或浮点除 0 的提示/报错行为。
参数:无。
返回:系统参数名(用于 SetSysParam/GetSysParam
说明:
设置系统参数"CalcCTRLWord"可以控制程序中若有nil参与计算以及浮点除0时进行警告或者程序抛出异常。
设置语法setsysparam(pn_CalcCTRLWord(),v);
此为全局变量对设置后的所有程序有效默认为0不启动。
系统参数值说明:
异常值运算报错与警告:警告是指在运行信息中运行时打印提醒信息,报错即出现该类运算时直接报错,终止当前程序。
该参数值类型为二进制ps:天软中0b开头表示二进制数
从低位到高位位值为1则为启动为0则为不启动默认都不启动则默认值为0
第一位浮点除0警告
第二位浮点除0报错
第三位Nil计算警告
第四位Nil计算报错
第五位Nil大小比较警告
第六位Nil大小比较报错
第七位Nil等于不等于警告
第八位Nil等于不等于报错
第九位Nil.与[]操作返回nil并警告
第十位Nil.与[]操作返回nil不报错也不警告
使用范例01只提醒不报错
```tsl
Echo #127; // 清除掉客户端ECHO窗口中的内容
// 启动浮点除0警告Nil计算警告Nil大小比较警告Nil等于不等于警告
setsysparam("CalcCTRLWord", 0b01010101); // 等同setsysparam("CalcCTRLWord",85);
return array(0 / 0,
1 / 0,
nil * 2,
nil > 0,
1 + 1);
// 程序不报错,不终止,且有返回值,打印提醒信息为:
float division by zero at:noname86(TSCheckModel) line: 5
float division by zero at:noname86(TSCheckModel) line: 6
nil calculation at:noname86(TSCheckModel) line: 7
nil Numerical great / less comparison at:noname86(TSCheckModel) line: 8
```
使用范例02报错+提醒
```tsl
Echo #127;
setsysparam("CalcCTRLWord", 0b11111111); // 报错+提醒
return array(0 / 0,
1 / 0,
nil * 2,
nil > 0,
1 + 1);
```
程序报错提示第5行出现除0操作
使用范例03Nil的.与[]操作不报错
```tsl
setsysparam(pn_CalcCTRLWord(), 0x100); // 默认是会报错的,设置后不报错只提醒
t := nil;
return array(t.a, t[1]);
```
程序不报错返回数组array(nil,nil),会打印信息如
NIL invoke at:NoName339(xxx) line: 6
NIL [] get at:NoName339(xxx) line: 6
报错类型有以下六类,分别对应如下:
1、float division by zero 出现除0运算
2、NIL calculation存在Nil运算
3、NIL Numerical great/less comparison存在Nil大小比较运算
4、NIL Numerical eq/neq comparison存在Nil等于或不等于运算
5、NIL invoke:存在Nil.操作
6、NIL [] get:存在Nil[n]操作
#### 多市场支撑函数
天软平台支持多市场数据的接入,每个市场都是独立开盘和收盘,用户可以获得所在市场的相关信息。
##### 内容
- MarketID
- MarketInfo
- MarketOpenCloseTime
- DefaultTimeZone
- TSPeriod
##### MarketID
##### MarketInfo
范例
```tsl
// 获取SH60000所属市场的市场相关信息
return MarketInfo(MarketID("SH600000"));
```
交易的分段信息结构details字段的内容如下
34200对应的时间是9:30分41400对应的时间是11:30分。46800对应的是130054000对应的是1500。
注意在details中的相应的minutes字段该分钟数不是当前区间内的分钟数而是截止到当前区间为止包含的分钟数。
##### MarketOpenCloseTime
##### DefaultTimeZone
##### TSPeriod
范例
范例一:取万科A在2023年6月28日的一分钟线交易时间序列
```tsl
stockid := "SZ000002";
cycle := cy_1m();
dt := 20230628T;
return tsperiod(stockid, cycle, dt);
```
结果:
范例二:取期货合约i2307在2023年6月28日的一分钟线交易时间序列,包含夜盘
```tsl
stockid := "i2307";
cycle := cy_1m();
dt := 20230628T;
return tsperiod(stockid, cycle, dt);
```
结果:
范例三:传入自由周期,取万科A在2023年6月28日的8秒线交易时间序列
```tsl
stockid := "SZ000002";
cycle := 8;
dt := 20230628T;
return tsperiod(stockid, cycle, dt);
```
结果:
范例四:传入自由周期以及基准时间点,取万科A在2023年6月28日的8秒线交易时间序列
```tsl
stockid := "SZ000002";
cycle := 8;
dt := 20230628.133015T;
return tsperiod(stockid, cycle, dt);
```
结果:
#### 时间相关函数
##### 内容
- sp_time
- tradeDays
- FirstDay
- LastDay
##### sp_time
范例
范例一设置的日期为交易日时sp_time()的结果
```tsl
// 系统证券代码对应的交易时间
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20140103)); // 2014-01-03是一个交易日
a := sp_time();
return a;
// 返回41642 (2014-01-03);
```
范例二设置的日期为非交易日时sp_time(0)和sp_time(1)的结果对比
```tsl
// 如果设置日期是一个非交易日2014-01-05周日sp_time被设定为离指定日最新的一个交易日
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20140105));
b := sp_time();
c := sp_time(1);
return array(b, c);
// 返回array(41642,41644),即(2014-01-03和2014-01-05);
```
范例三对比sp_time(2)与sp_time(0)、sp_time(1)返回日期的差异
```tsl
// 如果要返回设定的日期例如2014-01-05)1月5日是周日不受交易日的影响。
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20140105));
d := sp_time(1); // 返回41644 (2014-01-05);
e := Nday(1, ”t”, sp_time(), ”t1”, sp_time(1), ”t2”, sp_time(2));
// e中的t列和t1列一致而t2列可以访问到2014-01-05的日期值41644
```
范例四sp_time 在NDay中的使用
```tsl
// sp_time 在NDay中的使用
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20140105));
c := nday(10, 'date', datetostr(sp_time()), 'close', close());
```
参考SpecDate GetSysParam SetSysParam
##### tradeDays
范例
范例一:
```tsl
setsysparam(pn_stock(), 'SZ000002');
beg_date := inttodate(20100101);
end_date := inttodate(20101231);
// end_date 必须大于beg_date
return tradedays(beg_date, end_date); // 返回240
```
范例二:
```tsl
StockID := "SZ000002";
BegT := inttodate(20130101);
EndT := inttodate(20130122);
setsysparam(pn_stock(), StockID);
setsysparam(pn_cycle(), cy_1m());
return tradedays(BegT, EndT);
// 结果240
// 万科A在2012年12月26日至2013年1月18日停牌以上只取到2013-01-21 00:00:00 至2013-01-22 00:00:00之间的交易日数据即240个分钟周期
```
参考TDateTime
##### FirstDay
范例
```tsl
setsysparam(pn_stock(), 'SZ000002');
// 获得系统品种的第一个交易日
return firstday(); // 33240(1991-01-02);
// 获得指定参数品种的第一个交易日
return firstday('SH600086');
// 结果35587(1997-06-06);
```
参考TDateTime
##### LastDay
范例
```tsl
// 获取某只股票的最后一个交易日。
setsysparam(pn_stock(), 'SZ000002');
return lastday(); // 40794 (2011-09-08)
return lastday('SH600001');
// 结果40162(2009-12-15)该股已经下市
```
参考TDateTime
#### 判定函数
##### 内容
- IsStock
- IsTradeDay
- TestStock
- IsValidCode
- ValidFullCode
- IsCashFlowInfoId
- IsMainReportId
- AnalyseStockArr
- IsBalanceInfoId
- IsInterestInfoId
- IsFundBalanceSheetInfoId
- IsFundInterestInfoId
- IsStockFinancialItem
- IsFinancialInfoID
##### IsStock
范例
```tsl
// 判定一个代码是否为有效的股票代码。
return IsStock('SZ000001');
// 返回1
return IsStock('SZ100002'); // 返回0
```
##### IsTradeDay
范例
```tsl
// 判定系统品种在指定时间是否有交易。
setsysparam(pn_stock(), 'SZ000002');
return IsTradeDay(inttodate(20110828)); // 返回0
return IsTradeDay(inttodate(20110826)); // 返回1
```
##### TestStock
范例
```tsl
// 判定是否存在该股票的历史或者实时数据。
return TestStock('SZ000002'); // 返回1
```
##### IsValidCode
范例
```tsl
// 判定指定的品种代码是否为合法有效。
return IsValidCode('600036'); // 返回1
return IsValidCode('SH600036'); // 返回1
return IsValidCode('s600036'); // 返回0
// 获得完整的代码。
return isValidCode('SZ000002', ID); // 'SZ000002'是有效的代码ID为'SZ000002'
return IsValidCode('S600', ID); // 'S600'不是有效的代码ID为0
```
参考isstock
##### ValidFullCode
范例
```tsl
// 返回一个有效股票代码的完整代码。
stock_id := '000002';
_id := ValidFullCode(stock_id);
return _id;
// 返回:'SZ000002'
```
##### IsCashFlowInfoId
范例
```tsl
return IsCashFlowInfoId(48003);
// 返回1
```
##### IsMainReportId
范例
```tsl
return IsMainReportId(46002);
// 返回1
```
##### AnalyseStockArr
范例
```tsl
return AnalyseStockArr('上证50', 'IF01;IF02');
```
返回:
##### IsBalanceInfoId
范例
```tsl
return IsBalanceInfoId(44003);
// 返回1
```
##### IsInterestInfoId
范例
```tsl
return IsInterestInfoId(46003);
// 返回1
```
##### IsFundBalanceSheetInfoId
范例
```tsl
return IsFundBalanceSheetInfoId(312002);
// 返回1
```
##### IsFundInterestInfoId
范例
```tsl
return IsFundInterestInfoId(314002);
// 返回1
```
##### IsStockFinancialItem
范例
```tsl
return IsStockFinancialItem(62003);
// 返回1
```
##### IsFinancialInfoID
- IsStock
- IsTradeDay
- TestStock
- IsValidCode
- ValidFullCode
- IsCashFlowInfoId
- IsMainReportId
- AnalyseStockArr
- IsBalanceInfoId
- IsInterestInfoId
- IsFundBalanceSheetInfoId
- IsFundInterestInfoId
- IsStockFinancialItem
- IsFinancialInfoID
#### 盘中相关
##### 内容
- Rd
##### Rd
范例
范例01取个股盘口行情
```tsl
setsysparam(pn_stock(), 'SZ000002');
rds := array(datetimetostr(sp_time()),
rd(0),//股票代码
rd(1),//股票名称
rd(2),//开盘价
rd(3)//昨收
);
return rds;
```
范例02取多个股票盘口行情
```tsl
stocks := getbk('A股'); // 所有A股个股
ret := array();
for i := 0 to length(stocks) - 1 do
begin
setsysparam(Pn_stock(), stocks[i]);
ret[i, 'StockID'] := stocks[i];
ret[i, 'StockName'] := StockName(stocks[i]);
ret[i, '盘口时间'] := datetimetostr(rd(-1));
ret[i, '价格'] := rd(6);
ret[i, '成交量'] := rd(8); // 可以类似新增其它指标
end;
return ret;
```
范例03与行情函数的对比
默认与现在指标函数对比
```tsl
SetSysParam(pn_stock(), 'SZ000002');
SetSysParam(pn_cycle(), cy_detail());
return array(rd(6), close()); // 两者返回的结果相同
```
与指定日函数取数对比
```tsl
SetSysParam(pn_stock(), 'SZ000002');
SetSysParam(pn_cycle(), cy_detail());
SetSysParam(pn_date(), inttodate(20121212));
return array(rd(6), close()); // 两者返回的结果不同,rd(6)返回的是最新价格,而close()返回的是20121212这天万科A的收盘价。
```
差别在与rd只是得到实盘的价格数据close()可以通过设置系统时间得到历史某个时点的价格。
默认当前时间对比
```tsl
SetSysParam(pn_stock(), 'SZ000002');
SetSysParam(pn_cycle(), cy_detail());
return array(rd(-1), sp_time()); // 两者返回的结果相同
```
指定日当前时间对比
```tsl
SetSysParam(pn_stock(), 'SZ000002');
SetSysParam(pn_cycle(), cy_detail());
SetSysParam(pn_date(), inttodate(20121212));
return array(rd(-1), sp_time()); // 两者返回的结果不同。
```
第一个程序都是取到万科A最新的成交时间。在第二个程序中rd(-1)取到的是当前万科A的最新成交时间,但是sp_time()取到的是2012/12/12
00:00:00这个时刻前万科A最新的成交时间。
综上rd得到的就是程序运行这个时间点的行情的最新值,系统参数的设置对rd不起作用。
#### 盘后相关(在当日可用于盘中)
##### 内容
- Low
- SseSyl2
- Sys_PrevClose
- Open
- Close
- BuyVol3
- Vol
- Buy2
- TradeCount
- 行情数据说明
- BuyVol2
- Buy1
- Amount
- BuyVol1
- High
- SseSyl1
- Buy3
- SectionOpen
- Sale2
- SaleVol3
- Sale5
- SectionVol
- Buy4
- SaleVol4
- SectionLow
- SectionHigh
- BuyVol5
- SectionPrevClose
- VolRate
- Sale3
- SectionAmount
- Buy5
- SaleVol1
- Sale1
- SectionTradeCount
- SaleVol5
- BuyVol4
- SaleVol2
- Sale4
- InitialtiveBuyVol
- SectionalInitialtiveSaleVol
- SubmitBuyVol
- SectionalInitialtiveBuyAmount
- Advance
- Prev_Settlement
- SectionTradeWay
- SubmitSaleVol
- Decline
- SectionalSubmitBSR
- InitialtiveSaleAmount
- OpenInterest
- SectionalInitialtiveBuyVol
- SectionOpenInterest
- InitialtiveBuyAmount
- SectionalSubmitBuyVol
- SectionalSubmitSaleVol
- InitialtiveSaleVol
- SectionalInitialtiveSaleAmount
- SubmitBSR
- Settlement
- IsEqual
- Flat
- IsDown
- IsUp
##### Low
范例
```tsl
// 返回平安银行最低价
setsysparam(pn_stock(), "SZ000001");
setsysparam(pn_date(), inttodate(20140122));
return low(); // 返回11.35
```
参考High Close Open Vol Amount Sys_PrevClose
##### SseSyl2
范例
```tsl
// 返回股指期货IF1401在2014年1月15日的昨结算价
setsysparam(pn_stock(), "IF1401");
setsysparam(pn_date(), inttodate(20140115));
return SseSyl2 (); // 返回2213.6
```
##### Sys_PrevClose
范例
```tsl
// 返回平安银行系统昨收
setsysparam(pn_stock(), "SZ000001");
setsysparam(pn_date(), inttodate(20140122));
return Sys_PrevClose (); // 返回11.36
```
参考High Close Open Vol Low Amount
##### Open
范例
```tsl
// 取平安银行在2025年4月29日的开盘价
setsysparam(pn_stock(), "SZ000001");
setsysparam(pn_date(), 20250429T);
setsysparam(pn_cycle(), cy_day());
return open(); // 结果11
// 获取万科A 2014年1月22日当天的复权开盘价复权方式为比例复权复权基准日是上市日。
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), strtodate('2014-01-22'));
setsysparam(pn_rate(), 1);
setsysparam(pn_rateday(), -1);
return open(); // 结果615.24
// 获取万科A 2014年1月22日14:00:001分钟线的复权开盘价复权方式为比例复权复权基准日是上市日。
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime('2014-01-22 14:00:00'));
setsysparam(pn_rate(), 1);
setsysparam(pn_rateday(), -1);
return open(); // 结果648.38
```
参考Close High Low Vol Amount Sys_PrevClose SectionOpen
##### Close
范例
范例一:
```tsl
// 不设置股票、时间、周期、复权,默认取上证指数的最近交易日的日线不复权数据
// 执行日期2014年1月27日取当天的数据
return close();
// 结果2033.3
```
范例二:
```tsl
// 设置当前股票为万科A当前时间为2014-01-15
setsysparam(pn_stock(), "SZ000002");
setsysparam(pn_date(), inttodate(20140115));
return close();
// 结果7.17
```
范例三:
```tsl
// 设置当前股票为万科A当前时间为2014-01-15 10:00:00周期为1分钟线该数据取的是09:59:01至10:00:00区间的最后一笔的价格
setsysparam(pn_stock(), "SZ000002");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime('2014-01-15 10:00:00'));
return close();
// 结果7.18
```
范例四:
```tsl
// 设置当前股票为万科A当前时间为2014-01-15 10:00:00周期为1分钟线比例复权复权基准日为上市日
setsysparam(pn_stock(), "SZ000002");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_rate(), 1);
setsysparam(pn_rateday(), -1);
setsysparam(pn_date(), strtodatetime("2014-01-15 10:00:00"));
c := close();
return c;
// 结果610.14
```
范例五:
```tsl
// 应用于nday取一段时间的收盘10日均价20日均价
setsysparam(pn_stock(), "SZ000002");
setsysparam(pn_cycle(), cy_day());
setsysparam(pn_date(), strtodate("2014-01-15"));
r := nday(100, 'time', datetostr(sp_time()), 'close', close(), 'ma10', ma(close(), 10), 'ma20', ma(close(), 20));
return r;
```
参考Open High Low Vol Amount Sys_PrevClose
##### BuyVol3
范例参见BuyVol1。
##### Vol
范例
范例一:
```tsl
// 不设置股票、时间、周期、复权,默认取上证指数的最近交易日的日线不复权数据
// 执行日期2014年1月27日取当天的数据
return vol();
// 结果8881542144
```
范例二:
```tsl
// 设置当前股票为万科A当前时间为2014-01-15
setsysparam(pn_stock(), "SZ000002");
setsysparam(pn_date(), inttodate(20140115));
return vol();
// 结果49175340
```
范例三:
```tsl
// 设置当前股票为万科A当前时间为2014-01-15 10:00:00周期为1分钟线该数据取的是09:59:01至10:00:00区间加总的数据
setsysparam(pn_stock(), "SZ000002");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime('2014-01-15 10:00:00'));
return vol();
// 结果307063
```
范例四:
```tsl
// 设置当前股票为万科A当前时间为2014-01-15 10:00:00周期为1分钟线比例复权复权基准日为上市日
setsysparam(pn_stock(), "SZ000002");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_rate(), 1);
setsysparam(pn_rateday(), -1);
setsysparam(pn_date(), strtodatetime("2014-01-15 10:00:00"));
v := vol();
return v;
// 结果3613.47
```
参考High Close Open Amount Low Sys_PrevClose
##### Buy2
范例参见Buy1。
##### TradeCount
范例
```tsl
// 返回平安银行实际成交笔数
setsysparam(pn_stock(), "SZ000001");
setsysparam(pn_date(), inttodate(20140122));
return TradeCount (); // 返回28778
```
##### 行情数据说明
行情数据一般与股票pn_stock、周期pn_cycle、当前时间pn_date、复权pn_rate、复权基准日pn_rateday相关。取行情数据相关函数一般需要先设置当前股票、周期、时间、复权、基准日等系统参数否则取默认值。默认当前股票为上证指数SH000001、当前周期为日线cy_day()、当前时间为今天today()、不复权、复权基准日为最后交易日。
周期说明:
分钟线的时间分割从上一时间的01秒开始到指定周期点的00秒结束。比如1分钟线取10:00:00的时间区间[09:59:01,10:00:00]。
其中close、buy1、buyvol1、buy2、buyvol2、buy3、buyvol3、buy4、buyvol4、buy2、buyvol5、sale1、salevol1、sale2、salevol2、sale3、salevol3、sale4、salevol4、sale5、salevol5、VolRate、InitiativeBuyAmount、InitiativeBuyVol、InitiativeSaleAmount、InitiativeSaleVol以及当日时点累计数据取的都是该周期内最后一笔的数据。
high、low、open、vol、Amount、TradeCount、SubmitBuyVol、SubmitSaleVol等取区间统计数据。
时间说明:
如果取分时数据时间设置时需要加上时间部分如setsysparam(pn_date(),strtodatetime("2014-01-02
10:00:00"));
如果不指定时间部分如setsysparam(pn_date(),strtodate
("2014-01-02"))则默认取当天0点0分的数据即会取到前一个交易日的最后一个分时周期的数据。
##### BuyVol2
范例参见BuyVol1。
##### Buy1
范例
```tsl
// 返回平安银行买一价
setsysparam(pn_stock(), "SZ000001");
setsysparam(pn_date(), inttodate(20140122));
return Buy1(); // 返回11.78,当天收盘时的买一价
```
##### Amount
范例
范例一:
```tsl
// 设置当前股票为万科A当前时间为2014-01-15 10:00:00周期为1分钟线该数据取的是09:59:01至10:00:00区间加总的数据
setsysparam(pn_stock(), "SZ000002");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime('2014-01-15 10:00:00'));
return Amount();
// 结果2204439.5
```
范例二:
```tsl
// 设置当前股票为万科A当前时间为2014-01-15 10:00:00周期为1分钟线比例复权复权基准日为上市日
// 跟复权无关,复权之后与范例一中不复权的结果相同
setsysparam(pn_stock(), "SZ000002");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_rate(), 1);
setsysparam(pn_rateday(), -1);
setsysparam(pn_date(), strtodatetime("2014-01-15 10:00:00"));
A := Amount();
return A;
// 结果2204439.5
```
参考High Close Open Vol Low Sys_PrevClose
##### BuyVol1
范例
```tsl
// 返回平安银行买一量
setsysparam(pn_stock(), "SZ000001");
setsysparam(pn_date(), inttodate(20140122));
return BuyVol1 (); // 返回480265,当天收盘时的买一量
```
##### High
范例
```tsl
// 返回平安银行最高价
setsysparam(pn_stock(), "SZ000001");
setsysparam(pn_date(), inttodate(20140122));
return High();
// 返回11.86
```
参考Close Open Low Vol Amount Sys_PrevClose
##### SseSyl1
范例
```tsl
// 返回股指期货IF1401在2014年1月15日的结算价
setsysparam(pn_stock(), "IF1401");
setsysparam(pn_date(), inttodate(20140115));
return SseSyl1 (); // 返回2210.4
```
##### Buy3
范例参见Buy1。
##### SectionOpen
范例
通过范例一和范例二可以比较SectionOpen和open的区别
范例一:
```tsl
setsysparam(pn_stock(), "IF1401");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime("2014-01-15 10:00:00"));
SO := SectionOpen();
O := open();
return array(SO, O);
// 返回array(2220.2,2212.2)
```
范例二:
```tsl
setsysparam(pn_stock(), "IF1401");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime("2014-01-15 14:00:00"));
SO := SectionOpen();
O := open();
return array(SO, O);
// 返回array(2220.2,2206.6)
```
参考High close Open Vol Amount Sys_PrevClose
##### Sale2
范例参见Buy1。
##### SaleVol3
范例参见BuyVol1。
##### Sale5
范例参见Buy1。
##### SectionVol
范例
```tsl
setsysparam(pn_stock(), "IF1401");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime("2014-01-15 14:00:00"));
SV := SectionVol ();
return SV;
// 返回372927截止至14:00:00止1月15日的成交量
```
参考High close Open Amount Low Sys_PrevClose
##### Buy4
范例参见Buy1。
##### SaleVol4
范例参见BuyVol1。
##### SectionLow
范例
```tsl
setsysparam(pn_stock(), "IF1401");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime("2014-01-15 14:00:00"));
SL := SectionLow ();
return SL;
// 返回2196截止至14:00:00止1月15日的最低价
```
参考High close Open Vol Amount Sys_PrevClose
##### SectionHigh
范例
```tsl
setsysparam(pn_stock(), "IF1401");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime("2014-01-15 14:00:00"));
SH := SectionHigh ();
return SH;
// 返回2221.8截止至14:00:00止1月15日的最高价
```
参考High close Open Vol Amount Sys_PrevClose
##### BuyVol5
范例参见BuyVol1。
##### SectionPrevClose
范例参见SectionOpen。参考High close Open Vol Low Amount
##### VolRate
范例参见Close。
##### Sale3
范例参见Buy1。
##### SectionAmount
范例
```tsl
setsysparam(pn_stock(), "IF1401");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime("2014-01-15 14:00:00"));
SA := SectionAmount ();
return SA;
// 返回247128702720截止至14:00:00止1月15日的成交金额
```
参考High close Open Vol Low Sys_PrevClose
##### Buy5
范例参见Buy1。
##### SaleVol1
范例参见BuyVol1。
##### Sale1
范例参见Buy1。
##### SectionTradeCount
范例
```tsl
setsysparam(pn_stock(), "IF1401");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime("2014-01-15 14:00:00"));
STC := SectionTradeCount ();
return STC;
// 返回73643截止至14:00:00止1月15日的成交比数
```
##### SaleVol5
范例参见BuyVol1。
##### BuyVol4
范例参见BuyVol1。
##### SaleVol2
范例参见BuyVol1。
##### Sale4
范例参见Buy1。
##### InitialtiveBuyVol
范例参见Close。参考High Close Open Vol Low Sys_PrevClose
##### SectionalInitialtiveSaleVol
范例参见Close。参考High close Open Vol Low Sys_PrevClose
##### SubmitBuyVol
范例参见Vol。参考High Close Open Vol Low Sys_PrevClose
##### SectionalInitialtiveBuyAmount
范例参见Close参考High close Open Vol Low Sys_PrevClose
##### Advance
范例
```tsl
// 获得上证A股板块的涨跌情况
setsysparam(pn_stock(), 'SH000001');
setsysparam(pn_date(), inttodate(20110908));
market_ad := array('上涨家数':advance(),
'下跌家数':decline(),
'平盘家数':flat()
);
return market_ad;
```
参考Decline Flat
##### Prev_Settlement
范例
返回沪深300股指期货当月合约在20110907的前结算价
```tsl
SetSysParam(PN_Stock(), 'IF01');
SetSysParam(PN_Date(), inttodate(20110907));
SetSysParam(PN_Cycle(), cy_day());
return Prev_Settlement();
// 返回2011年9月7日的前结算价2726.6
```
##### SectionTradeWay
##### SubmitSaleVol
范例参见Vol。参考High close Open Vol Low Sys_PrevClose
##### Decline
范例参见Advance参考Advance Flat
##### SectionalSubmitBSR
范例参见Close参考High close Open Vol Low Sys_PrevClose
##### InitialtiveSaleAmount
范例参见Close。参考High Close Open Vol Low Sys_PrevClose
##### OpenInterest
范例
```tsl
setsysparam(pn_stock(), "IF1401");
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime("2014-01-15 10:00:00"));
OI := OpenInterest();
return OI;
// 结果18
```
##### SectionalInitialtiveBuyVol
范例参见Close。参考High Close Open Vol Low Sys_PrevClose
##### SectionOpenInterest
范例参见Close。
##### InitialtiveBuyAmount
范例参见close。参考High close Open Vol Low Sys_PrevClose
##### SectionalSubmitBuyVol
范例参见Close。参考High close Open Vol Low Sys_PrevClose
##### SectionalSubmitSaleVol
范例参见Close。参考High close Open Vol Low Sys_PrevClose
##### InitialtiveSaleVol
范例参见close。参考High close Open Vol Low Sys_PrevClose
##### SectionalInitialtiveSaleAmount
范例参见Close。参考High close Open Vol Low Sys_PrevClose
##### SubmitBSR
范例参见Close。参考High Close Open Vol Low Sys_PrevClose
##### Settlement
范例参见Close。
##### IsEqual
范例参见IsUp参考IsUp IsDown
##### Flat
范例参见Advance参考Advance Decline
##### IsDown
范例参见IsUp。参考IsUp IsEqual
##### IsUp
范例
```tsl
// 万科在指定区间内的上涨下跌情况;
setsysparam(pn_stock(), 'SZ000002');
end_date := inttodate(20110909);
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);
if IsUp() then r[i]['ud_state'] := '涨';
else if IsDown() then r[i]['ud_state'] := '跌';
else if IsEqual() then r[i]['ud_state'] := '平';
i++;
end;
return r;
```
返回结果如下图:
参考IsDown IsEqual
#### 时间序列统计
此处的时间序列统计是直接对天软数据仓库中的时间序列数据的统计。如果需要对其他类型的数据进行统计可以使用统计函数或者TS-SQL的时间序列统计功能。
##### 内容
- HHV
- LLV
- MA
- EMA
- SMA
- Count
- SumN
- SP_STD
- SP_STDP
- SP_VAR
- SP_VARP
- SP_AVEDEV
- SP_DEVSQ
- Cross
- sp_large
- sp_small
- sp_percentile
- sp_percentrank
- sp_quartile
- sp_rank
- sp_trimmean
- sp_frequency
- sp_geomean
- sp_harmean
- sp_median
- sp_mode
- sp_product
- sp_totalvariance
- sp_norm
- sp_skewness
- sp_kurtosis
- sp_skewness2
- sp_kurtosis2
- 双序列统计
- 时间序列统计缓存标志与性能加速
##### HHV
范例
```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
##### LLV
范例参见HHV
参考HHV
##### MA
范例
范例一:
```tsl
// 获得万科A(SZ000002)在2011-09-09日的10日均价
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
N := 10;
return ma(close(), N);
// 返回8.103
```
范例二:
```tsl
// 获取万科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
算法函数EMA算法说明
Y=EMA(X,N) 则Y=[2*X+(N-1)*Y']/(N+1),
其中Y'表示上一周期Y值它的初值为X的第一个数据一般推到上市日当天
手算可参考:
附件:ema手算.xlsx
范例
```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
算法若Y=SMA(X,N,M)则Y=[M*X+(N-M)*Y']/N,其中Y'表示上一周期Y值,N必须大于M。范例
```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
范例
```tsl
// 上证指数在最近100天内的上涨天数
setsysparam(pn_stock(), 'SH000001');
setsysparam(pn_date(), inttodate(20140122));
return count(isup(), 100);
// 返回47。
```
##### SumN
范例
```tsl
// 获得万科A(SZ000002)在2011-09-09日的5日总成交量
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
return sumn(VOL(), 5); // 返回152502152
```
##### SP_STD
范例
```tsl
// 计算万科A截止20110909前30个交易日股价的统计信息
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
_stat := array();
_stat := array('标准差':sp_std(close(), 30),
'总体标准差':sp_stdp(close(), 30),
'方差':sp_var(close(), 30),
'总体方差':sp_varp(close(), 30),
'平均绝对偏差':sp_avedev(close(), 30),
'偏差平方和':sp_devsq(close(), 30));
return _stat;
```
参考时间序列统计
##### SP_STDP
范例
```tsl
// 计算万科截止20110909前30个交易日股票的总体标准差
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
return sp_stdp(close(), 30); // 返回0.1456
```
参考时间序列统计
##### SP_VAR
范例
```tsl
// 计算万科截止20110909前30个交易日股票的样本方差
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
return sp_var(close(), 30); // 返回0.0219
```
参考时间序列统计
##### SP_VARP
范例参见SP_VAR参考时间序列统计
##### SP_AVEDEV
范例参见SP_VAR参考时间序列统计
##### SP_DEVSQ
范例参见SP_VAR参考时间序列统计
##### Cross
范例
```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;
```
##### sp_large
算法
备注指定表达式与系统当前时间相关M的取值数据小于N.范例
万科A在2018/10/30最近10个日线交易日内分时数据成交量的最大值
```tsl
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "分钟线最大成交量", Specall(SP_Large(Vol(), 1, 240), array(Pn_Cycle():Cy_1m(), pn_date():SP_time() + 0.99)));
```
##### sp_small
范例
万科A在2018/10/30最近12月中月末最后5个日线交易日的最小值价格序列
```tsl
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
Setsysparam(pn_Cycle(), cy_Month());
return Nday(12, "日期", SP_time(), "月末5日最小价格", Specall(SP_Small(Close(), 1, 5), array(Pn_Cycle():Cy_day())));
```
##### sp_percentile
范例
万科A在2018/10/30最近10个日线交易日中每天分钟线收盘价格第0.8百分比对应的价格数据序列
```tsl
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "价格", SpecAll(SP_percentile(close(), 0.8, 240), array(pn_Cycle():Cy_1m(), pn_date():SP_time() + 0.99)));
```
##### sp_percentrank
范例万科A在2018/10/30日最近10个交易的收盘价在每天分时价格的百分比排名
```tsl
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "百分比", SpecAll(SP_percentRank(close(), close(), 240), array(pn_Cycle():Cy_1m(), pn_date():SP_time() + 0.99)));
```
##### sp_quartile
范例万科A在2018/10/30日最近10个交易日的收盘价在每天第2个四分位的价格序列
```tsl
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "价格", Specall(SP_quartile(Close(), 2, 4800), array(Pn_Cycle():Cy_3s(), pn_date():SP_time() + 0.99)));
```
##### sp_rank
范例万科A在2018/10/30最近10个交易日的收盘价在每日分时价格序列中的排名
```tsl
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "排名", SpecAll(SP_Rank(close(), close(), 240), array(pn_Cycle():Cy_1m(), pn_date():SP_time() + 0.99)));
```
##### sp_trimmean
范例万科A在2018/10/30最近10个交易日每天交易价格去除掉首尾比例占10%后的平均价格序列
```tsl
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "平均价格", Specall(SP_trimmean(Close(), 0.8, 4800), array(Pn_Cycle():Cy_3s(), pn_date():SP_time() + 0.99)));
```
##### sp_frequency
范例万科A在2018/10/30最近20个交易日每天涨幅在-7,-3,0,3,7的分布情况
```tsl
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return sp_frequency(Stockzf3(), array(-7, -3, 0, 3, 7), 20);
```
##### sp_geomean
范例万科A在2018/10/30最近10个交易日每天60分钟线的几何平均价格序列
```tsl
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(),
"几何平均价格", Specall(SP_geomean(Close(), 4),
array(Pn_Cycle():Cy_60m(), pn_date():SP_time() + 0.99)));
```
##### sp_harmean
范例万科A在2018/10/30最近10个交易日每天交易价格的调和平均价格序列
```tsl
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "调和平均价格", Specall(SP_Harmean(Close(), 4800), array(Pn_Cycle():Cy_3s(), pn_date():SP_time() + 0.99)));
```
##### sp_median
范例万科A在2018/10/30前30个交易日中每天交易价格的中位数序列
```tsl
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return nday(30, "日期", SP_time(), "众数", Specall(Sp_Median(Close(), tradedays(SP_time(), SP_time() + 14 / 24 + 57 / 24 / 60)), array(pn_date():SP_Time() + 14 / 24 + 57 / 24 / 60, pn_Cycle():Cy_3s())));
```
##### sp_mode
范例万科A在2018/10/30前30个交易日中每天交易价格的众数序列
```tsl
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return nday(30, "日期", SP_time(), "众数", Specall(Sp_Mode(Close(), tradedays(SP_time(), SP_time() + 14 / 24 + 57 / 24 / 60)), array(pn_date():SP_Time() + 14 / 24 + 57 / 24 / 60, pn_Cycle():Cy_3s())));
```
##### sp_product
范例万科A在2018/10/30最近12个月中每月最后5个日线交易日累计涨幅序列
```tsl
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
Setsysparam(pn_Cycle(), cy_Month());
return Nday(12, "日期", SP_time(), "最后一周累计涨幅", Specall((SP_product(1 + stockzf3() / 100, 5)) * 100 - 100, array(pn_date():SP_time(), pn_Cycle():Cy_day())));
```
##### sp_totalvariance
范例万科A在2018/10/30最近10个交易日每天交易价格的总体偏差
```tsl
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "偏差", Specall(SP_totalvariance(Close(), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():Cy_3s())));
```
##### sp_norm
范例万科A在2018/10/30最近10个交易日每天成交价格相对平均价格波动的标准差
```tsl
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return nday(10, "日期", SP_time(), "标准差", 1 / SQRT(4800) * Specall(sp_Norm(Close() - StockPJCJ4(SP_time()), 4800), array(pn_Cycle():Cy_3s(), pn_date():SP_time() + 0.99)));
```
##### sp_skewness
范例万科A在2018/10/30最近10个交易日每天交易价格的偏度序列其中偏度的计算用的是3秒线的价格序列
```tsl
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "偏度", Specall(SP_skewness(Close(), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():Cy_3s())));
```
##### sp_kurtosis
范例万科A在2018/10/30最近10个交易日每天交易价格的峰度序列
```tsl
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "峰度", Specall(SP_kurtosis(Close(), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():Cy_3s())));
```
##### sp_skewness2
范例万科A在2018/10/30最近10个交易日每天交易价格的偏度序列
```tsl
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "偏度", Specall(SP_skewness2(Close(), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():Cy_3s())));
```
##### sp_kurtosis2
范例
万科A在2018/10/30最近10个交易日每天交易价格的峰度序列
```tsl
Setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return Nday(10, "日期", SP_time(), "峰度", Specall(SP_kurtosis2(Close(), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():Cy_3s())));
```
##### 双序列统计
###### 内容
- sp_cov
- sp_correl
- sp_slope
- sp_intercept
- sp_rsq
- sp_steyx
- sp_slopeandintercept
###### sp_cov
用途:双序列统计相关函数。
参数arg1arg2arg3arg4按示例顺序传入
返回:处理后的结果值。
范例2018/10/30万科与大盘最近10天每天与大盘走势的协方差序列
```tsl
setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return nday(10, "日期", SP_time(), "协方差", Specall(SP_Cov(close(), Spec(Close(), "SH000001"), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():cy_3s())));
```
###### sp_correl
用途:双序列统计相关函数。
参数arg1arg2arg3arg4按示例顺序传入
返回:处理后的结果值。
范例2018/10/30万科与大盘最近10天每天与大盘走势的相关系数序列
```tsl
setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return nday(10, "日期", SP_time(), "相关系数", Specall(SP_Correl(close(), Spec(Close(), "SH000001"), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():cy_3s())));
```
###### sp_slope
用途:双序列统计相关函数。
参数arg1arg2arg3arg4按示例顺序传入
返回:处理后的结果值。
范例2018/10/30万科与大盘最近10天每天与大盘走势的回归斜率
```tsl
setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return nday(10, "日期", SP_time(), "回归斜率", Specall(SP_slope(close(), Spec(Close(), "SH000001"), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():cy_3s())));
```
###### sp_intercept
用途:双序列统计相关函数。
参数arg1arg2arg3arg4按示例顺序传入
返回:处理后的结果值。
范例2018/10/30万科与大盘最近10天每天与大盘走势的回归截距
```tsl
setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return nday(10, "日期", SP_time(), "回归截距", Specall(SP_intercept(close(), Spec(Close(), "SH000001"), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():cy_3s())));
```
###### sp_rsq
用途:双序列统计相关函数。
参数arg1arg2arg3arg4按示例顺序传入
返回:处理后的结果值。
范例2018/10/30万科与大盘最近10天每天与大盘走势的Pearson乘积矩相关系数的平方
```tsl
setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return nday(10, "日期", SP_time(), "系数平方", Specall(SP_RSQ(close(), Spec(Close(), "SH000001"), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():cy_3s())));
```
###### sp_steyx
用途:双序列统计相关函数。
参数arg1arg2arg3arg4按示例顺序传入
返回:处理后的结果值。
范例2018/10/30万科与大盘最近10天每天与大盘走势的相对标准偏差
```tsl
setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return nday(10, "日期", SP_time(), "相对标准偏差", Specall(SP_steyx(close(), Spec(Close(), "SH000001"), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():cy_3s())));
```
###### sp_slopeandintercept
用途:双序列统计相关函数。
参数arg1arg2arg3arg4按示例顺序传入
返回:处理后的结果值。
范例2018/10/30万科与大盘最近10天每天与大盘走势的回归斜率和截距
```tsl
setsysparam(pn_Stock(), "SZ000002");
Setsysparam(pn_date(), 20181030T);
return nday3(10, Specall(SP_slopeandintercept(close(), Spec(Close(), "SH000001"), 4800), array(pn_date():SP_time() + 0.99, pn_Cycle():cy_3s())));
```
##### 时间序列统计缓存标志与性能加速
技术时间序列统计相关函数会自动进行数据缓存以进行加速,例如:
EMA(Close(),30)在执行的时候如果存在在Nday或者MA,EMA等序列函数中每一步计算均会利用前一个交易日计算的缓存。这样效率可以得到大大的提高但是这个时候产生了一个问题例如
EMA(EMA(Close(),N),30)在这个外围EMA的计算中由于内层EMA的参数N是不定的所以外层EMA的缓存无法知道按照什么规则进行缓存如果直接缓存的话有可能在N的不同参数的调用时得到错误的结果。这个时候我们通过给每个时间序列统计函数CROSS除外增加了一个可选的参数即一个缓存的字符串标志。这个字符串标志作用域仅仅用于当前调用的时间序列统计函数和其他调用的标志定义无关也就是说可以和其他调用的标志定义重复也可以
这样说起来很拗口,我们可以来一个例子来说明:
DEA:=EMA(EMA(Close(),Short)-EMA(Close(),Long),M,""$Short$" "$Long);
这个上述代码是MACD的定义中的一段代码我们可以看到对于DEA而言由于EMA的内还有两个EMA的计算分别和SHORT参数和LONG参数有关我们可以将SHORT参数和LONG参数组成一个字符串来作为外层EMA的缓存标志串这样当具有缓存的时候当SHORT和LONG进行了改变我们不会利用其他参数组存贮的缓存数据来进行EMA的计算也就是说我们只会用SHORT和LONG相同的计算缓存这样就避免了缓存错误的问题。
对于上述的除CROSS函数以外的时间序列统计函数而言我们均支持在最后增加一个可选的缓存标志串。
由于缓存会占据存贮空间而且还因为不会因数据变化而改变而得到不正确的结果因此缓存仅仅在NDAY以及上述时间序列函数中被打开在执行完最外层的时间序列统计函数之后缓存会被清除。
我们有时候会在策略回测多因素模型等开发的时候希望利用到技术指标加速但我们又不是使用NDAY等序列函数来提取数据而是通过循环来提取数据这个时候我们需要利用相应的指令来打开这个缓存。有的时候我们又或许不希望使用缓存。
###### 内容
- TechCacheDo打开技术类缓存
- NoTechCacheDo禁用技术类缓存
###### TechCacheDo打开技术类缓存
范例
```tsl
TechCacheDo
begin
for i := 0 to length(Days) - 1 do
begin
setsysparam(pn_Date(), Days[i]);
Kdj := kdj_f(9, 3, 3, 0); // 在时间循环中需要在KDJ计算中进行加速
..........................
end;
end;
```
###### NoTechCacheDo禁用技术类缓存
#### 成交明细数据函数
##### 内容
- toverData
- toverDataEx
- TD
- TDByIndex
- TDCount
- TDCountEx
- TDInfo
- TDInfoByIndex
- TDSum
##### toverData
范例
```tsl
// 获得万科A(SZ000002)当日(交易日)的成交明细;
setsysparam(pn_stock(), 'SZ000002');
t := toverdata(inttodate(20140115));
update t set ['time'] = datetimetostr(['time']) end;
return t;
```
##### toverDataEx
范例
```tsl
// 获得万科A(SZ000002)在2014-1-15日13点至15点之间成交量在10000~90000
// 成交金额0~9000000,价格7.00~8.00之间的交易明细
setsysparam(pn_stock(), 'SZ000002');
fields := 0;
d := inttodate(20140115);
trade_flag := 0;
beg_time := strtotime('13:00:00');
end_time := strtotime('15:00:00');
min_vol := 10000;
min_amount := 0;
min_price := 7.00;
max_vol := 90000;
max_amount := 9000000;
max_price := 8.00;
return toverdataex(fields, d, trade_flag, beg_time, end_time,
min_vol, min_amount, min_price, max_vol, max_amount, max_price);
```
##### TD
范例
```tsl
// 获得万科A(SZ0000002)在2011-09-09 14:15:33的10s
setsysparam(pn_stock(), 'SZ000002');
setsysparam(PN_Cycle(), cy_10s());
setsysparam(pn_date(), strtodatetime('2011-09-09 14:15:33'));
tds := array(
datetimetostr(td(0)),//时间
td(1),//价格
td(2),//成交金额
td(3)//成交量
);
return tds;
```
##### TDByIndex
范例
```tsl
// 返回万科A在20110909日第100条交易记录的时间、价格、成交金额和成交量。
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
tds := array(
datetimetostr(tdbyindex(0, 100)),//日期时间
tdbyindex(1, 100),//价格
tdbyindex(2, 100),//成交金额
tdbyindex(3, 100)//成交量
);
return tds;
```
返回结果如下图:
##### TDCount
范例
```tsl
// 获取万科A(SZ000002)截止2011-09-09的5天内系统记录的交易记录数量
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
return nday(5, 'date', datetostr(sp_time()), '系统记录交易点数量', tdcount());
```
返回结果如下图:
##### TDCountEx
范例
```tsl
// 获得万科A(SZ000002)在2014-1-15日13点至15点之间成交量在10000~90000
// 成交金额0~9000000,价格7.00~8.00之间的主买的交易记录个数
setsysparam(pn_stock(), 'SZ000002');
fields := 0;
d := inttodate(20140115);
trade_flag := 1;
beg_time := strtotime('13:00:00');
end_time := strtotime('15:00:00');
min_vol := 10000;
min_amount := 0;
min_price := 7.00;
max_vol := 90000;
max_amount := 9000000;
max_price := 8.00;
return tdcountex(d, trade_flag, beg_time, end_time,
min_vol, min_amount, min_price,
max_vol, max_amount, max_price);
// 返回221
```
##### TDInfo
范例
```tsl
// 获得万科A(SZ000002)在2014-1-15 10:00:00时间点的交易明细数组
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_cycle(), cy_1m());
setsysparam(pn_date(), strtodatetime("2014-01-15 10:00:00"));
return TDInfo();
```
##### TDInfoByIndex
范例
```tsl
// 获得万科A(SZ000002)在2011-9-9日最后一条交易明细数组
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
return TDInfoByIndex(-1);
```
返回结果如下图:
##### TDSum
范例
```tsl
// 对万科A(SZ000002)在2011-9-9日统计满足以下条件的成交量成交金额
// 13点至15点之间、成交量在10000~90000
// 成交金额0~9000000、价格8.00~8.50之间且是主买
setsysparam(pn_stock(), 'SZ000002');
d := inttodate(20110909);
trade_flag := 1;
beg_time := strtotime('13:00:00');
end_time := strtotime('15:00:00');
min_vol := 10000;
min_amount := 0;
min_price := 8.00;
max_vol := 90000;
max_amount := 9000000;
max_price := 8.50;
TDSum(sumVol, sumAmount, d, trade_flag, beg_time, end_time,
min_vol, min_amount, min_price,
max_vol, max_amount, max_price);
return array(sumVol, sumAmount);
```
返回结果如下图:
#### 交易明细字段标识函数
##### 内容
- tdf_buy2
- tdf_sale3
- tdf_vol
- tdf_buy5
- tdf_time
- tdf_price
- tdf_buy3
- tdf_amount
- tdf_sale1
- tdf_lb
- tdf_sale4
- tdf_buy4
- tdf_sale5
- tdf_buy1
- tdf_sale2
- tdf_buy3count
- tdf_tradecount
- tdf_sale2count
- tdf_buy5count
- tdf_buy2count
- tdf_sale3count
- tdf_sale5count
- tdf_buy1count
- tdf_buy4count
- tdf_syl2
- tdf_sale1count
- tdf_sale4count
- tdf_syl1
##### tdf_buy2
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_sale3
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_vol
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_buy5
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_time
范例
```tsl
// 获得万科A(SZ000002)在2011-9-9日13点至15点之间成交量在10000~90000
// 成交金额0~9000000,价格8.00~8.50之间的时间序列
setsysparam(pn_stock(), 'SZ000002');
fields := 0;
d := inttodate(20110909);
trade_flag := 0;
beg_time := strtotime('13:00:00');
end_time := strtotime('15:00:00');
min_vol := 10000;
min_amount := 0;
min_price := 8.00;
max_vol := 90000;
max_amount := 9000000;
max_price := 8.50;
return toverdataex(tdf_time(), d, trade_flag, beg_time, end_time,
min_vol, min_amount, min_price, max_vol, max_amount, max_price);
```
返回结果如下图:
参考toverDataEx
##### tdf_price
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_buy3
范例参见tdf_time。参考toverDataEx
##### tdf_amount
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_sale1
范例参见tdf_time。参考toverDataEx
##### tdf_lb
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_sale4
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_buy4
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_sale5
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_buy1
范例参见tdf_time。参考toverDataEx
##### tdf_sale2
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_buy3count
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_tradecount
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_sale2count
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_buy5count
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_buy2count
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_sale3count
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_sale5count
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_buy1count
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_buy4count
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_syl2
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_sale1count
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_sale4count
范例参见tdf_time。参考toverDataEx tdf_time
##### tdf_syl1
范例参见tdf_time。参考toverDataEx tdf_time
#### 查询和轮询函数
##### 内容
- Query
- Foreach
##### Query
范例
```tsl
// 查询指定日期在板块上证A股;创业板以及SZ000001;SZ000002;SZ000997中满足
// 收盘价大于10日均线的股票的以下信息证券代码、证券名称收盘价。
setsysparam(pn_date(), inttodate(20110909));
data := Query('上证A股;创业板', 'SZ000001;SZ000002;SZ000997',
close() > ma(close(), 10), '',
'证券代码', DefaultStockID(),
'证券名称', CurrentStockName(),
'收盘价', close());
return data;
```
##### Foreach
#### 市场和板块函数
##### 内容
- GetBK
- GetUserBKList
- GetBKList
- GetUserBKList2
- GetBKList2
##### GetBK
范例
```tsl
stocks := GetBk('上证A股;创业板');
return stocks;
```
返回结果如下图:
参考GetUserBKList GetBKList GetUserBKList2 GetBKList2 getbkbydate
##### GetUserBKList
范例
范例一:获取所有的用户板块名称
```tsl
my_sectors := GetUserbkList ();
return my_sectors;
```
范例二:获取指定目录下的用户板块名称
```tsl
// 用户板块的申万行业下,有多个子目录,用户需要指定子目录获取子目录下的用户板块
my_sectors := GetUserbkList ("申万行业\\申万金融业");
return my_sectors;
```
参考GetBK GetBKList GetUserBKList2 GetBKList2
##### GetBKList
范例
范例01
```tsl
// 获得申万行业列表,其中,“申万行业”是申万相关行业板块的目录名称或父板块名称。
bk_list := GetBKList('申万行业');
return bk_list;
```
范例02
```tsl
// 获得申万行业-采掘业子行业列表
bk_list2 := GetBKList('申万行业\\申万采掘');
return bk_list2;
```
参考GetBK GetUserBKList GetUserBKList2 GetBKList2
##### GetUserBKList2
范例
```tsl
// 获得用户板块的申万行业下的所有板块及其所属的行业组别
my_sectors := GetUserBKList2("申万行业");
return my_sectors;
```
参考GetBK GetBKList GetUserBKList GetBKList2
##### GetBKList2
范例
```tsl
// 返回所有系统板块列表
return GetBklist2();
```
返回结果如下图:
范例二:
```tsl
// 返回系统申万行业板块列表
return GetBklist2('申万行业');
```
结果(部分)
参考GetBK GetUserBKList GetUserBKList2 GetBKList
#### 取行情数据序列函数
##### 内容
- NDay
- NDay2
- NDay3
##### NDay
范例
```tsl
// 返回万科A历史2天的收盘价
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20140115));
Table := NDay( 2, 'close', Close() );
{默认当前周期为日线设置当前时间为2014年1月15日当前股票的昨天的收盘价格为7.23今天的当前价格为7.17,则返回的结果相当于
Table := array (('close': 7.23), ('close': 7.17));
// 也就是说X相当于
Table[0]['close'] := 7.23;
Table[1]['close'] := 7.17;
}
// 取得万科截止20110909前30个交易日的若干行情信息
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
return nday(30, '时间', datetimetostr(sp_time()),
'收盘价', close(),
'当日高价', high(),
'30日均线', ma(close(), 30));
```
结果(部分)
参考NDay2 NDay3
##### NDay2
范例
```tsl
// 用NDAY2取得万科截止20110909前30个交易日的若干行情信息
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
setsysparam(pn_nDay(), 30);
return nday2('时间', datetimetostr(sp_time()),
'收盘价', close(),
'当日高价', high(),
'30日均线', ma(close(), 30));
```
返回结果(部分)
参考NDay NDay3
##### NDay3
范例
```tsl
// 取得万科截止20110909前30个交易日的价格序列(按交易日升序排列)
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
return nday3(30, close());
```
参考NDay NDay2
#### 引用指定函数
##### 内容
- Ref
- SpecDate
- Spec
- SpecAll
##### Ref
范例
```tsl
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
r := array();
r := array('设定日价格':close(),//20110909
'设定日前1交易日收盘':ref(close(), 1),//20110908
'设定日后1交易日收盘':ref(close(), -1)); // 20110913
return r;
```
##### SpecDate
范例
```tsl
setsysparam(pn_stock(), 'SZ000002');
setsysparam(pn_date(), inttodate(20110909));
return nday(30, 'date', datetostr(sp_time()),
'close', close(),
// 使用年初价格作为参照。
'close_20110101', specdate(close(), inttodate(20110101)));
```
结果(部分)
参考Spec TDateTime
##### Spec
范例
```tsl
// 获得两个指数时间序列净值曲线
setsysparam(pn_stock(), 'SH000904');
setsysparam(pn_date(), inttodate(20110909));
N := 30;
beg_close1 := ref(close(), N - 1); // SH000904 N日前收盘
beg_close2 := spec(ref(close(), N - 1), 'SH000300'); // SH000300 N日前收盘
return nday(N, 'date', datetostr(sp_time()),
'中证200', 1000 * close() / beg_close1,
'沪深300', 1000 * spec(close(), 'SH000300') / beg_close2);
```
结果(部分)
参考SpecDate
##### SpecAll
范例
```tsl
return specall(close(),
array(pn_stock():'SZ000001',
pn_date():inttodate(20140117),
pn_rate():1,
pn_rateday():-1));
// 获取SZ000001的2014年01月17日的复权价格复权方式为比例复权复权基准日为上市日。
```
参考SpecDate Spec
#### 系统参数设置和获取函数
##### 内容
- GetSysParam
- SetSysParam
- sp_s
- sp_g
##### GetSysParam
范例
```tsl
// 获取当前的股票代码
return GetSysParam(pn_stock()); // 返回SH000001;
```
参考SetSysParam 系统参数名称函数 块环境设置语句 SYSPARAMS
##### SetSysParam
范例
范例1设置及提取
```tsl
setsysparam('Abc', 123); // 自定义参数名为'Abc'并赋值为123
return getsysparam('Abc'); // 提取参数名为'Abc'的值。
// 返回123
// 或
setsysparam('Abc', 123);
return sysparams['Abc']; // 提取参数名为'Abc'的值。
```
范例2常用于设置系统参数如证券时间周期等。
```tsl
setsysparam(pn_stock(), 'SZ000002'); // 设置当前证券为万科A
setsysparam(pn_date(), 20190218T); // 设置当前时间为2019-2-18
setsysparam(pn_cycle(), cy_day()); // 设置周期为日线
return close(); // 提取收盘价
// 返回27.2
```
范例3
```tsl
// 设置当前的股票为平安银行SZ000001设置当前的时间为2014-01-15
Setsysparam(pn_stock(), 'SZ000001');
Setsysparam(pn_date(), inttodate(20140115));
return close();
```
参考GetSysParam 系统参数名称函数 块环境设置语句 SYSPARAMS
##### sp_s
范例
范例一:设置及提取
```tsl
sp_s ('Abc', 123); // 自定义参数名为'Abc'并赋值为123
return sp_g('Abc'); // 提取参数名为'Abc'的值。
// 返回123
```
范例二:常用于设置系统参数如证券,时间,周期等。
```tsl
sp_s (pn_stock(), 'SZ000002'); // 设置当前证券为万科A
sp_s (pn_date(), 20190218T); // 设置当前时间为2019-2-18
sp_s (pn_cycle(), cy_day()); // 设置周期为日线
return close(); // 提取收盘价
// 返回27.2
```
##### sp_g
范例
```tsl
// 获取当前的股票代码
return sp_g (pn_stock()); // 返回SH000001;
```
#### 复权类型函数
##### 内容
- rt_none
- rt_scale
- rt_complex
##### rt_none
参考pn_Rate
##### rt_scale
参考pn_Rate
##### rt_complex
参考pn_Rate
#### 复权基准日函数
##### 内容
- rd_lastday
- rd_firstday
##### rd_lastday
参考pn_RateDay
##### rd_firstday
参考pn_RateDay
#### 周期函数
周期函数为设置周期系统参数的常量函数。
周期有四类,第一类是日、周、月、季、半年、年,第一类是分钟为单位的周期,第三类是秒为单位的周期,第四类是以成交明细里的点为单位。
从2014年7月起天软平台开始提供了对自由周期的支持自由周期分为两种类型一种是任意秒滚动周期另外一种是任意交易日滚动周期。对于任意秒滚动周期而言周期是不跨天的也就是说任意一个周期区间均在同一个交易天内。此外在设置原有固定类型秒或者分钟周期的时候我们可以用设置pn_FreeCycle()系统参数来转换为任意秒滚动周期。
参见Q天软自由周期
##### 内容
- Cy_month
- Cy_20m
- Cy_1m
- Cy_HalfYear
- Cy_5m
- Cy_60m
- Cy_Year
- Cy_week
- Cy_2m
- Cy_10m
- Cy_Quarter
- Cy_120m
- Cy_day
- Cy_30m
- Cy_3m
- Cy_40m
- Cy_TwoYear
- Cy_15m
- cy_trailingseconds
- Cy_6s
- cy_trailingdays
- Cy_15s
- Cy_Detail
- Cy_30s
- Cy_5s
- Cy_2s
- Cy_12s
- Cy_1s
- Cy_10s
- Cy_20s
- Cy_4s
- Cy_FreeCycle
- Cy_3s
- Cy_Halfs
##### Cy_month
参考pn_Cycle 周期函数
##### Cy_20m
参考pn_Cycle 周期函数
##### Cy_1m
参考pn_Cycle 周期函数
##### Cy_HalfYear
参考pn_Cycle 周期函数
##### Cy_5m
参考pn_Cycle 周期函数
##### Cy_60m
参考pn_Cycle 周期函数
##### Cy_Year
参考pn_Cycle 周期函数
##### Cy_week
参考pn_Cycle 周期函数
##### Cy_2m
参考pn_Cycle 周期函数
##### Cy_10m
参考pn_Cycle 周期函数
##### Cy_Quarter
参考pn_Cycle 周期函数
##### Cy_120m
参考pn_Cycle 周期函数
##### Cy_day
参考pn_Cycle 周期函数
##### Cy_30m
参考pn_Cycle 周期函数
##### Cy_3m
参考pn_Cycle 周期函数
##### Cy_40m
参考pn_Cycle 周期函数
##### Cy_TwoYear
范例
```tsl
return Cy_TwoYear();
// 结果:’两年’
```
##### Cy_15m
参考pn_Cycle 周期函数
##### cy_trailingseconds
参考pn_Cycle 周期函数 自由周期
##### Cy_6s
参考pn_Cycle 周期函数
##### cy_trailingdays
参考pn_Cycle 周期函数 自由周期
##### Cy_15s
参考pn_Cycle 周期函数
##### Cy_Detail
参考pn_Cycle 周期函数
##### Cy_30s
参考pn_Cycle 周期函数
##### Cy_5s
参考pn_Cycle 周期函数
##### Cy_2s
参考pn_Cycle 周期函数
##### Cy_12s
参考pn_Cycle 周期函数
##### Cy_1s
参考pn_Cycle 周期函数
##### Cy_10s
参考pn_Cycle 周期函数
##### Cy_20s
参考pn_Cycle 周期函数
##### Cy_4s
参考pn_Cycle 周期函数
##### Cy_FreeCycle
参考pn_Cycle 周期函数 自由周期
##### Cy_3s
参考pn_Cycle 周期函数
##### Cy_Halfs
参考pn_Cycle 周期函数
#### 财务函数
##### 内容
- Report
- ReportOfAll
- ReportOfDiy
- ReportExists
- ReportHist
- ReportHistExists
- LastQuarterData
- Last12MData
- Base
- BaseExists
- InfoArray
- InfoArrayExt
- InfoArrayExists
- bName
- idtType
- idfType
- BasicIDExists
- BaseArray
##### Report
范例
```tsl
// 提取平安银行2017年3季报的营业收入
setsysparam(pn_stock(), 'SZ000001');
setsysparam(pn_date(), 20171031);
return report(46002, 20170930);
// 结果79833000000
```
##### ReportOfAll
范例
范例1提取平安银行2017年3季报的营业收入与report一致
```tsl
setsysparam(pn_stock(), 'SZ000001');
setsysparam(pn_date(), 20171031);
return reportofall(46002, 20170930);
// 结果79833000000
```
范例2提取平安银行2017年3季报的每股收益report不能获取该指标是report功能的扩展
```tsl
setsysparam(pn_stock(), 'SZ000001');
setsysparam(pn_date(), 20171031);
return reportofall(9900000, 20170930);
// 结果1.12
```
##### ReportOfDiy
范例
(注:实际的结果不一定和下同)
```tsl
Setsysparam(pn_stock(), "SZ000002");
return ReportOfDiy(8025001, 20091231, now(), '刘研究员'); // 假定8025001为预测每股收益则返回最新的刘研究员的2009年年度的预测每股收益。
return ReportOfDiy(8025001, 20091231, now(), ""); // 则返回最新的任何研究员的2009年年度的预测每股收益。
```
##### ReportExists
范例
```tsl
// 通过红利比(18007)判断SH601888在2011年是否分红
setsysparam(pn_stock(), 'SH601888');
return ReportExists(18007, 20101231); // 返回1,是
```
##### ReportHist
范例
```tsl
// 获取SH601888公布的利润分配表的所有报告期ID列表
setsysparam(pn_stock(), 'SH601888');
// 营业收入ID利润分配表的一个科目
infoid := DataBaseRatioId(1);
return ReportHist(infoid);
```
返回结果如下图:
```tsl
// 获取SH601888公布的利润分配表的最接近20140331的报告期
setsysparam(pn_stock(), 'SH601888');
// 营业收入ID利润分配表的一个科目
infoid := DataBaseRatioId(1);
return ReportHist(infoid, 20140331);
// 返回20130930执行时间20140117未公布2013年报及2014一季报
```
##### ReportHistExists
范例
```tsl
// 检查SZ300002在曾经发生过分红
setsysparam(pn_stock(), 'SZ300002');
return ReportHistExists(18007);
// 返回1表示历史有分红
```
##### LastQuarterData
范例
```tsl
// 提取平安银行2017年3季度的营业收入
setsysparam(pn_stock(), 'SZ000001');
setsysparam(pn_date(), 20171031T);
return LastQuarterData(20170930, 46002, 0);
// 结果25760000000
```
##### Last12MData
范例
```tsl
// 提取平安银行2017年3季报TTM的营业收入
setsysparam(pn_stock(), 'SZ000001');
setsysparam(pn_date(), 20171031T);
return Last12MData(20170930, 46002);
// 结果105580000000
```
##### Base
范例
```tsl
// 获取SZ000002的公司全称
setsysparam(pn_stock(), 'SZ000002');
return base(10002); // 返回”万科企业股份有限公司”
```
##### BaseExists
范例
```tsl
// 获取SZ000002的公司全称
setsysparam(pn_stock(), 'SZ000002');
if BaseExists(10002) then return base(10002);
else return "";
// 返回万科企业股份有限公司
```
##### InfoArray
范例
```tsl
// 获取万科A分红送股表数据
setsysparam(pn_stock(), 'SZ000002');
// 分红送股表ID
infoid := DatabaseInfoArrayId(21);
return infoarray(infoid);
```
##### InfoArrayExt
范例
(注:实际的结果不一定和下同)
下表是深长城的股本变更表
记录号变动日总股本 A股未流通股已流通股流通A股变动原因
0 19940921 56300000 56300000 43300000 13000000 13000000
1 1995041056300000 56300000 40000000 16300000 16300000 职工股上市
2 19950607 106970000 106970000 76000000 30970000 30970000 送股上市
3 19960715 139061000 139061000 98800000 40261000 40261000 送股上市
4 19970512 171045030 171045030 121523999 49521031 49521031 配股上市
5 19970708 239463040 239463040 170133598 69329442 69329442 送股上市
如:
(1)InfoArrayExt(12,'变动日',19970512,-1) 返回的记录是第4条
(2)InfoArrayExt(12,'变动日',19970512,0) 返回的记录是第0条
(3)InfoArrayExt(12,'变动日',19970512,2) 返回的记录是第1条
(4) InfoArrayExt(12,'变动日',19970512,2,”总股本”,Shares) 返回的值为56300000。
```tsl
// 第4个参数缺省满足条件的最后一条记录即返回股权登记日<=20130516的最后一条记录
setsysparam(pn_stock(), 'SZ000002');
infoid := DatabaseInfoArrayId(21);
return InfoArrayExt(infoid, '股权登记日', 20130516);
```
##### InfoArrayExists
范例
```tsl
// 判断是否存在配股
setsysparam(pn_stock(), 'SH601888');
return InfoArrayExists(20);
// 返回0表示不存在配股数据。
```
##### bName
范例
```tsl
return bName(18007);
// 返回”红利比”即用18007可提取红利比数据。
```
##### idtType
范例
```tsl
TYPES := array('', '报告期相关', '报告期无关', '报表');
TYPES[-1] := '未知';
return array('公司全称':TYPES[idttype(10002)],
'红利比':TYPES[idttype(18007)],
'分红送股表':TYPES[idttype(18)],
'未知':TYPES[idttype(99)]);
```
##### idfType
范例
```tsl
TYPES := array('整型', '实数', '字符', '表格');
TYPES[-1] := '未知';
return array('公司全称':TYPES[idftype(10002)],
'红利比':TYPES[idftype(18007)],
'分红送股表':TYPES[idftype(18)],
'未知':TYPES[idftype(99)]);
```
##### BasicIDExists
范例
```tsl
infoid := DatabaseInfoArrayId(21);
return BasicIDExists(infoid);
// 返回1表示存在
```
##### BaseArray
范例
```tsl
SetSysParam(pn_stock(), 'sz000001');
return BaseArray(46002, 20151231);
// 返回96163000000
```
#### 选股与取数
##### 内容
- QueryBk
- QueryBkWithPeriod
- QueryWithPeriod
- DefaultRepID
- QWPMaxCount
- evalstring
##### QueryBk
范例
```tsl
return
QueryBK("深证A股;上证A股;中小企业板", "", @true, "", "板块名", @DefaultBKName(),
"指定日流通市值和(万)(20120930,只考虑A股)", @Bk_MarketValue(41182, 1),
"指定日总股本和(万)(20120930,只考虑A股)", @Bk_TotalShares(41182, 1),
"每股主营收入(20111231,总股本加权,只考虑A股,全部,绩差股标准=0)", @Bk_MainincomePS(20111231, 0, 1, 0, 0));
```
##### QueryBkWithPeriod
范例
```tsl
// 返回板块一段时间的成交数据
setsysparam(pn_begt(), inttodate(20120801));
setsysparam(pn_endt(), inttodate(20121001));
setsysparam("TimeIndex", 1);
return
QueryBKWithPeriod("深证A股", "", @true, "", "换手率(%)(加权,只考虑A股)", @Bk_HSL3(0, 1),
"成交量(万)(只考虑A股)", @Bk_VolSum3(1),
"成交金额(万)(只考虑A股)", @Bk_AmountSum3(1));
```
##### QueryWithPeriod
范例
```tsl
// 返回一组股票一段时间的行情数据
oV := BackUpSystemParameters2();
setsysparam(pn_begt(), inttodate(20120801));
setsysparam(pn_endt(), inttodate(20121001));
setsysparam("TimeIndex", 1);
return
QueryWithPeriod("", "SZ000002;SZ000001;SH600000;SH600004", @true, "", "收盘价", @close(),
"成交量", @vol(),
"成交金额", @amount());
```
##### DefaultRepID
范例
```tsl
// 返回万科A默认报告期的营业收入
oV := BackUpSystemParameters2();
setsysparam(pn_stock(), 'SZ000002');
// 获取默认报告期
RDate := DefaultRepID();
V := ReportNew(46002, RDate);
return v;
```
##### QWPMaxCount
范例
```tsl
return QWPMaxCount();
// 返回50000
```
##### evalstring
范例
```tsl
return evalstring('1+3');
// 返回4
```
#### 向导函数
##### 内容
- RelativeStrengthOfIndustry
- SpecSysParams
- RelativeStrengthOfSector
- ReportOfListed
- ReportPerShareOfListed
- Derivative1
- PositionOfSector
- ReduceWithHighestOfPeriod
- OccuredRepIdOfRepPeriod
- ContinuedMatchOfRepPeriod
- GrowthOfRepPeriod
- RelativeStrengthOfSectorDesc
- PositionOfSectorDesc
- GrowthWithLowestOfPeriod
- SumOfSector
- PositionOfIndustry
- AvgOfSector
- OccuredTimeOfPeriod
- SpecDateValue
- Derivative2
- N期
- N日
- 历史遗留
- 区间
- 中间函数
- N季
- 当日
- StockTrailingAvgByEndT
- StockTrailingStdByEndT
##### RelativeStrengthOfIndustry
##### SpecSysParams
范例
```tsl
return SpecSysParams(@SpecSysParamsdemo(), 20180801T, cy_day(), 0, 0); // 其中SpecSysParamsdemo()函数定义股票为平安银行,返回收盘价
// 返回9.15
```
##### RelativeStrengthOfSector
算法
1、获得板块Sector成分股
2、统计成分股中个券exp值>当前证券的exp值再加1为result
3、相对强弱(%)= (1- result/成分股总个数)\*100范例
```tsl
// 统计A股板块与沪深300指数相比的相对强弱。结果得到A股中涨幅小于沪深300涨幅的个券占比
SetSysParam(pn_stock(), 'SH000300');
SetSysParam(pn_date(), 20180801T);
return RelativeStrengthOfSector(@stockzf3(), 'A股');
// 结果41.4621
```
##### ReportOfListed
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return ReportOfListed(46002, 20160331); // 平安银行在2016年一季报的营业收入
// 返回27532000000
```
##### ReportPerShareOfListed
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return ReportPerShareOfListed(46033, 20160331); // 平安银行在2016年一季报的每股收益(净利润/总股本)
// 返回0.43
```
##### Derivative1
算法
指标趋势= (3*前N日指标值-4*前(N+1)日指标值+前(N+2)日指标值)/2\*100范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801T);
return Derivative1(@close(), 0); // 指标值为收盘价
// 返回:-42
```
##### PositionOfSector
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801T);
return PositionOfSector(@close(), 'A股');
// 返回1778
```
##### ReduceWithHighestOfPeriod
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return ReduceWithHighestOfPeriod(@close(), 20180801T, 20180803T, 0);
// 返回:-0.24
```
##### OccuredRepIdOfRepPeriod
范例
```tsl
// 从2010年开始到2018年每年年报每股收益大于1.5的报告期
SetSysParam(pn_stock(), 'SZ000002');
return OccuredRepIdOfRepPeriod(@reportofall(42002, GetSysParam('DefaultRepID')) > 1.5, 20101231, 2018);
```
返回:
##### ContinuedMatchOfRepPeriod
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return ContinuedMatchOfRepPeriod(@reportofall(46002, GetSysParam('DefaultRepID')), 20140331, 2018);
// 返回1
```
##### GrowthOfRepPeriod
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return GrowthOfRepPeriod(@reportofall(46002, GetSysParam('DefaultRepID')), 20150331, 1); // 返回平安银行在2015一季报中营业收入的同比增长
// 返回28.39
```
##### RelativeStrengthOfSectorDesc
算法
1、获得板块Sector成分股
2、统计成分股中个券exp<当前证券的exp值再加1为result
3相对强弱(%)= (1- result/成分股总个数)\*100范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801T);
return RelativeStrengthOfSectorDesc(@close(), 'A股');
// 返回50.25
```
##### PositionOfSectorDesc
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801T);
return PositionOfSectorDesc(@close(), 'A股');
// 返回1761
```
##### GrowthWithLowestOfPeriod
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return GrowthWithLowestOfPeriod(@close(), 20180801T, 20180903T, 0);
// 返回1.41
```
##### SumOfSector
范例
```tsl
setsysparam(pn_bk(), "上证A股");
setsysparam(Pn_date(), 20180801T);
return SumOfSector(@close(), 20180801T, 20180801T, 1, 0, 0, 0);
// 返回在2018年8月1日上证A股板块在当日已经上市的股票收盘价的和。
// 返回19495.45
```
##### PositionOfIndustry
##### AvgOfSector
范例
```tsl
return AvgOfSector(@close(), 2, 20180801T, 20180801T, 1, 0, 0, 0); // 返回在2018年8月1日所有A股在当日已经上市的股票收盘价的算术平均。
// 返回12.27
```
##### OccuredTimeOfPeriod
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return OccuredTimeOfPeriod(@close(), 20180801T, 20180810T); // 返回平安银行在2018年8月1日至2018年8月10日存在行情数据(收盘价)的日期
```
返回:
##### SpecDateValue
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180917T);
return SpecDateValue(20180801T, @close()); // 返回2018年8月1号平安银行的收盘价
// 返回9.15
```
##### Derivative2
算法
加速度=(2*当日指标-5*一日前指标+4*二日前指标-三日前指标)*100;范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801T);
return Derivative2(@close()); // 指标值为收盘价
// 返回:-49
```
##### N期
###### 内容
- OccuredOfNReport
- ContinuedMatchOfNReport
- OccuredRepIdOfNReport
- SumOfNReport
- AvgOfNReport
- RefReportValue
- GrowthOfNReport
- ACCOfNReport
- RobustGrowthOfNReport
- RobustACCOfNReport
- HighestOfNReport
- lowestOfNReport
- StandGrowthOfNReport
- EAVOfNReport
- EAAOfNReport
- TurnPositiveOfNReport
- SecondOrderGrowthOfNReport
- HighGrowthOfNReport
###### OccuredOfNReport
用途N期相关函数
参数arg1arg2arg3按示例顺序传入)。
返回处理后的结果值
范例返回平安银行截止到2015年12月31日的所有年报数量
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return OccuredOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20151231, 100);
// 返回25
```
###### ContinuedMatchOfNReport
用途N期相关函数
参数arg1arg2arg3按示例顺序传入)。
返回处理后的结果值
范例判断2014到2015这两年平安银行年报是否全部存在
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return ContinuedMatchOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20151231, 2);
// 返回1
```
###### OccuredRepIdOfNReport
用途N期相关函数
参数arg1arg2arg3按示例顺序传入)。
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return OccuredRepIdOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20001231, 20);
```
返回结果:
###### SumOfNReport
用途进行数值统计计算
参数arg1arg2arg3按示例顺序传入)。
返回处理后的结果值
范例计算平安银行2015年报与2014年报营业收入的和
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return SumOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20151231, 2);
// 返回169570000000
```
###### AvgOfNReport
用途进行数值统计计算
参数arg1arg2arg3按示例顺序传入)。
返回处理后的结果值
范例返回平安银行2015年报与2014年报营业收入的平均
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return AvgOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20151231, 2);
// 返回84785000000
```
###### RefReportValue
用途N期相关函数
参数arg1arg2arg3按示例顺序传入)。
返回处理后的结果值
范例返回平安银行2015年年报营业收入额
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return RefReportValue(@reportofall(46002, GetSysParam('DefaultRepID')), 20161231, 1);
// 返回96163000000
```
###### GrowthOfNReport
用途N期相关函数
参数arg1arg2arg3arg4按示例顺序传入)。
返回处理后的结果值
范例返回平安银行2014年与2015年报营业收入增长比例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return GrowthOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20151231, 1, 1);
// 返回34.00
```
###### ACCOfNReport
用途N期相关函数
参数arg1arg2arg3arg4按示例顺序传入)。
返回处理后的结果值
算法
过去N期数据对期数t的二次方程进行回归取二次项系数作为业绩增长加速度以净利润为例回归公式如下NPt=
a*t^2+b*t+c。其中NPt表示过去第t期的净利润t取值为[1,2,……,N]。
假设当前报告期为20201231取季度报告期N=8则最近连续8个季度报告期为[20190331,20190630,20190930,20191231,
20200331,20200630,20200930,20201231]对应的期数t为[1,2,3,4,5,6,7,8]回归二次项系数a即为净利润增长加速度
为消除回归数据与期数t数量级差异对结果的影响模型支持对回归数据如净利润与t进行标准化处理(z-value)二次项系数a为加速度二次回归抛物线的最低点为-b/(2\*a)。范例
范例01返回加速度不标准化
```tsl
setsysparam(pn_stock(), "SH600519");?
return ACCOfNReport(@Last12MData(DefaultRepID(), 46078), 20201231, 8, 1);
// 3004419.44946277
```
范例02返回加速度标准化
```tsl
setsysparam(pn_stock(), "SH600519");
return ACCOfNReport(@Last12MData(DefaultRepID(), 46078), 20201231, 8, 1, 1); // 0.006
```
###### RobustGrowthOfNReport
用途N期相关函数
参数arg1按示例顺序传入)。
返回处理后的结果值
算法过去N期的净利润增速均值除以净利润增速标准差刻画过去一段时间内净利润增速的稳定性当指标值比较高的时候表示过去一段时间内上市公司的业绩保持了稳定增长的态势范例
```tsl
setsysparam(pn_stock(), "SH600519");
return RobustGrowthOfNReport(@Last12MData(DefaultRepID(), 9900604),
20201231, 8, 0); // 0.916987656203954
```
###### RobustACCOfNReport
用途N期相关函数
参数arg1arg2arg3arg4按示例顺序传入)。
返回处理后的结果值
算法
N期稳健加速度=N期稳健增速一阶差分 即本期N期稳健增速- 上期N期稳健增速
上期由参数LastReportType确定0表示同比报告期1表示环比报告期范例
```tsl
setsysparam(pn_stock(), "SH600519");
return RobustACCOfNReport(@Last12MData(DefaultRepID(), 9900604), 20201231, 8, 0); // -0.0878801178157446
```
###### HighestOfNReport
用途N期相关函数
参数arg1arg2arg3arg4按示例顺序传入)。
返回处理后的结果值
范例
```tsl
// 对SH600585在22年年报前5个年度报告期最高的总营业收入。
SetSysParam(pn_stock(), "SH600585");
return HighestOfNReport(@ReportOfAll(46080, DefaultRepID()), 20221231, 5, 0);
// 返回176294715308
```
###### lowestOfNReport
用途N期相关函数
参数arg1arg2arg3arg4按示例顺序传入)。
返回处理后的结果值
范例
```tsl
// 对SH600585在22年年报前5个年度报告期最低的总营业收入。
SetSysParam(pn_stock(), "SH600585");
return lowestOfNReport(@ReportOfAll(46080, DefaultRepID()), 20221231, 5, 0);
// 返回128402625696
```
###### StandGrowthOfNReport
用途N期相关函数
参数arg1arg2arg3arg4按示例顺序传入)。
返回处理后的结果值
算法N期标准化增长率=(当期-去年同期)/过去N期标准差范例
```tsl
setsysparam(pn_stock(), "SH600519");
Exp := @LastQuarterData(GetSysParam('DefaultRepID'), 46078);
ReportID := 20211231;
N := 8;
ReportType := 1; // 0年度1季度
t := StandGrowthOfNReport(Exp, ReportID, N, ReportType);
return t; // 1.265
```
###### EAVOfNReport
用途N期相关函数
参数arg1arg2arg3arg4arg5按示例顺序传入)。
返回处理后的结果值
算法
N期加速度EAV=当期标准化增长率-上期标准化增长率
当期标准化增长率=(当期数据-去年同期数据)/过去N期标准差
上期由参数LastReportType确定0表示同比报告期默认】,1表示环比报告期范例
```tsl
setsysparam(pn_stock(), "SH600519");
Exp := @LastQuarterData(DefaultRepID(), 46078);
ReportID := 20200930;
N := 8;
ReportType := 1; // 0年度1季度
LastReportType := 0;
t := EAVOfNReport(Exp, ReportID, N, ReportType, LastReportType);
return t; // -0.45
```
###### EAAOfNReport
用途N期相关函数
参数arg1arg2arg3按示例顺序传入)。
返回处理后的结果值
算法
N期加速度EAA=当期同比增长率-上期同比增长率
当期同比增长率=(当期数据-去年同期数据)/abs去年同期数据
上期由参数LastReportType确定0表示同比报告期默认】,1表示环比报告期范例
```tsl
setsysparam(pn_stock(), "SH600519");
Exp := @LastQuarterData(DefaultRepID(), 46078);
ReportID := 20211231;
LastReportType := 0;
t := EAAOfNReport(Exp, ReportID, LastReportType);
return t; // -0.016
```
###### TurnPositiveOfNReport
用途N期相关函数
参数arg1arg2arg3arg4按示例顺序传入)。
返回整数
范例
```tsl
setsysparam(pn_stock(), "SH600110");
Exp := @LastQuarterData(GetSysParam('DefaultRepID'), 42017); // 季度扣非净利润
ReportID := 20210331;
N := 5;
ReportType := 1; // 0年度1季度
t := TurnPositiveOfNReport(Exp, ReportID, N, ReportType);
return t; // 1
```
###### SecondOrderGrowthOfNReport
用途N期相关函数
参数arg1arg2arg3arg4按示例顺序传入)。
返回处理后的结果值
范例
```tsl
setsysparam(pn_stock(), "SZ000636");
Exp := @LastQuarterData(GetSysParam('DefaultRepID'), 9900604);
ReportID := 20200331;
N := 5;
ReportType := 1; // 0年度1季度
t := SecondOrderGrowthOfNReport(Exp, ReportID, N, ReportType);
return t; // 1
```
###### HighGrowthOfNReport
用途N期相关函数
参数arg1arg2arg3arg4arg5按示例顺序传入)。
返回处理后的结果值
范例
```tsl
setsysparam(pn_stock(), "SZ002340");
Exp := @LastQuarterData(GetSysParam('DefaultRepID'), 9900604);
ReportID := 20210331;
N := 5;
ReportType := 1; // 0年度1季度
Range := 3;
t := HighGrowthOfNReport(Exp, ReportID, N, ReportType, Range);
return t; // 1
```
##### N日
###### 内容
- HighestOfNDay
- RefValue
- OccuredOfNDay
- GrowthOfNDay
- SwingOfNDay
- ContinuedMatchOfNDay
- StdOfNDay
- SumOfNDay
- LowestOfNDay
- OccuredTimeOfNDay
- AvgOfNDay
- GrowthWithHighestOfNDay
- GrowthWithLowestOfNDay
- TimeOfHighestOfNDay
- TimeOfLowestOfNDay
- MedianOfNDay
- KurtosisOfNDay
- SkewnessOfNDay
- CovOfNDay
- RSQOfNDay
- SteyxOfNDay
- SlopeOfNDay2
- CorrelOfNDay2
- InterceptOfNDay2
- CorrelOfNDay
- DecayAvgOfNDay
- DeltaOfNDay
- HHVBarsOfNDay
- interceptofNday
- LLVBarsOfNDay
- PercentRankOfNDay
- SignedPower
- SlopeofNday
- CovarOfNDay
- ProductOfNDay
- WmaofNday
- SumifofNday
- SmaofNDay
- 中间函数
###### HighestOfNDay
用途N日相关函数
参数arg1arg2按示例顺序传入)。
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return HighestOfNDay(@close(), 5);
// 返回9.42
```
###### RefValue
用途N日相关函数
参数arg1arg2按示例顺序传入)。
返回处理后的结果值
范例返回上证指数在2018年7月18号的收盘价
```tsl
SetSysParam(pn_stock(), 'SH000001');
SetSysParam(pn_date(), 20180801t);
return RefValue(@close(), 10);
// 返回2787.257
```
###### OccuredOfNDay
用途N日相关函数
参数arg1arg2按示例顺序传入)。
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return OccuredOfNDay(@close(), 10);
// 返回10
```
###### GrowthOfNDay
用途N日相关函数
参数arg1arg2arg3按示例顺序传入)。
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return GrowthOfNDay(@close(), 5, 0);
// 返回:-0.23
```
###### SwingOfNDay
用途N日相关函数
参数arg1arg2arg3按示例顺序传入)。
返回处理后的结果值
算法
振幅=指标N日最大值-指标N日最小值
振幅(百分比)=abs(指标N日最大值-指标N日最小值)/(指标N日最小值)范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return SwingOfNDay(@close(), 5, 0);
// 返回0.27
```
###### ContinuedMatchOfNDay
用途N日相关函数
参数arg1arg2按示例顺序传入)。
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), 'SH000001');
SetSysParam(pn_date(), 20180801t);
return ContinuedMatchOfNDay(@close(), 3);
// 返回1
```
###### StdOfNDay
用途N日相关函数
参数arg1arg2按示例顺序传入)。
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return StdOfNDay(@close(), 5);
// 返回0.11
```
###### SumOfNDay
用途进行数值统计计算
参数arg1arg2按示例顺序传入)。
返回处理后的结果值
范例计算平安银行截止2018年8月1日最近10个交易日的成交量和
```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return SumOfNDay(@vol(), 10);
// 结果: 962645765
```
###### LowestOfNDay
用途N日相关函数
参数arg1arg2按示例顺序传入)。
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return LowestOfNDay(@close(), 5);
// 返回9.15
```
###### OccuredTimeOfNDay
用途日期时间处理函数
参数arg1arg2按示例顺序传入)。
返回日期或时间值
范例
```tsl
SetSysParam(pn_stock(), 'SZ000063');
SetSysParam(pn_date(), 20180615t);
return OccuredTimeOfNDay(@vol(), 10);
```
返回:
###### AvgOfNDay
用途进行数值统计计算
参数arg1arg2按示例顺序传入)。
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return AvgOfNDay(@close(), 5);
// 返回9.292
```
###### GrowthWithHighestOfNDay
用途N日相关函数
参数arg1arg2arg3按示例顺序传入)。
返回处理后的结果值
范例
```tsl
// 对SH600585在20231010T的100日价格N日最大与当前的偏离值。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return GrowthWithHighestOfNDay(@close(), 100, 0);
// 返回:-2.21
```
###### GrowthWithLowestOfNDay
用途N日相关函数
参数arg1arg2arg3按示例顺序传入)。
返回处理后的结果值
范例
```tsl
// 对SH600585在20231010T的100日价格N日最小与当前的偏离值。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return GrowthWithLowestOfNDay(@close(), 100, 0);
// 返回1.82
```
###### TimeOfHighestOfNDay
用途日期时间处理函数
参数arg1arg2按示例顺序传入)。
返回日期或时间值
范例
```tsl
// 对SH600585在20231010T的100日价格最高时间。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return TimeOfHighestOfNDay(@close(), 100);
// 返回2023-05-15
```
###### TimeOfLowestOfNDay
用途日期时间处理函数
参数arg1arg2按示例顺序传入)。
返回日期或时间值
范例
```tsl
// 对SH600585在20231010T的100日价格最低时间。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return TimeOfLowestOfNDay(@close(), 100);
// 返回2023-07-12
```
###### MedianOfNDay
用途N日相关函数
参数arg1arg2按示例顺序传入)。
返回处理后的结果值
范例
```tsl
// 对SH600585在20231010T的100日价格中位数。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return MedianOfNDay(@close(), 100);
// 返回26.705
```
###### KurtosisOfNDay
用途N日相关函数
参数arg1arg2按示例顺序传入)。
返回处理后的结果值
范例
```tsl
// 对SH600585在20231010T的100日价格峰度。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return KurtosisOfNDay(@close(), 100);
// 返回:-0.73
```
###### SkewnessOfNDay
用途N日相关函数
参数arg1arg2按示例顺序传入)。
返回处理后的结果值
范例
```tsl
// 对SH600585在20231010T的100日价格偏度。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return SkewnessOfNDay(@close(), 100);
// 返回:-0.65
```
###### CovOfNDay
用途N日相关函数
参数arg1arg2arg3按示例顺序传入)。
返回处理后的结果值
范例
```tsl
// 20231010TSH600585前10日收盘与SH000001收盘的协方差。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return CovOfNDay(@close(), 10, "SH000001");
// 返回5.7123
```
###### RSQOfNDay
用途N日相关函数
参数arg1arg2arg3按示例顺序传入)。
返回处理后的结果值
范例
```tsl
// 20231010TSH600585前10日收盘与SH000001收盘的相关系数平方。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return RSQOfNDay(@close(), 10, "SH000001");
// 返回0.437
```
###### SteyxOfNDay
用途N日相关函数
参数arg1arg2arg3按示例顺序传入)。
返回处理后的结果值
范例
```tsl
// 20231010TSH600585前10日收盘与SH000001收盘的相对标准偏差。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return SteyxOfNDay(@close(), 10, "SH000001");
// 返回13.72035
```
###### SlopeOfNDay2
用途N日相关函数
参数arg1arg2arg3按示例顺序传入)。
返回处理后的结果值
范例
```tsl
// 20231010TSH600585前10日收盘与SH000001收盘的回归斜率。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return SlopeOfNDay2(@close(), 10, "SH000001");
// 返回20.4608
```
###### CorrelOfNDay2
用途N日相关函数
参数arg1arg2arg3按示例顺序传入)。
返回处理后的结果值
范例
```tsl
// 20231010TSH600585前10日收盘与SH000001收盘的相关系数。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return CorrelOfNDay2(@close(), 10, "SH000001");
// 返回0.661
```
###### InterceptOfNDay2
用途N日相关函数
参数arg1arg2arg3按示例顺序传入)。
返回处理后的结果值
范例
```tsl
// 20231010TSH600585前10日收盘与SH000001收盘的回归截距。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return InterceptOfNDay2(@close(), 10, "SH000001");
// 返回2569.49
```
###### CorrelOfNDay
用途N日相关函数
参数arg1arg2arg3arg4按示例顺序传入)。
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return CorrelOfNDay(@stockpjcj3(), @RefValue(@close(), 5), 10, "");
// 结果:-0.61
```
###### DecayAvgOfNDay
用途进行数值统计计算
参数arg1arg2按示例顺序传入)。
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return DecayAvgOfNDay(@close(), 5);
// 结果25.61
```
###### DeltaOfNDay
用途N日相关函数
参数arg1arg2按示例顺序传入)。
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return DeltaOfNDay(@close(), 5);
// 结果:-1.39
```
###### HHVBarsOfNDay
用途N日相关函数
参数arg1arg2arg3按示例顺序传入)。
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return HHVBarsOfNDay(@close(), 10, "");
// 结果8
```
###### interceptofNday
用途N日相关函数
参数arg1arg2arg3arg4按示例顺序传入)。
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return interceptofNday(@close(), @open(), 100, "");
// 结果1.36
```
###### LLVBarsOfNDay
- SumOfNDay
- RefValue
- ContinuedMatchOfNDay
- OccuredTimeOfNDay
- HighestOfNDay
- StdOfNDay
- LowestOfNDay
- SwingOfNDay
- GrowthOfNDay
- AvgOfNDay
- OccuredOfNDay
- GrowthWithHighestOfNDay
- GrowthWithLowestOfNDay
- TimeOfHighestOfNDay
- TimeOfLowestOfNDay
- MedianOfNDay
- KurtosisOfNDay
- SkewnessOfNDay
- CovOfNDay
- RSQOfNDay
- SteyxOfNDay
- SlopeOfNDay2
- CorrelOfNDay2
- InterceptOfNDay2
- CorrelOfNDay
- DecayAvgOfNDay
- DeltaOfNDay
- HHVBarsOfNDay
- interceptofNday
- LLVBarsOfNDay
- PercentRankOfNDay
- SignedPower
- SlopeofNday
- CovarOfNDay
- ProductOfNDay
- WmaofNday
- SumifofNday
- SmaofNDay
- 中间函数
###### PercentRankOfNDay
用途N日相关函数
参数arg1arg2arg3按示例顺序传入)。
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231030T);
return PercentRankOfNDay(@close(), 10, "");
// 结果0.56
```
###### SignedPower
用途N日相关函数
参数arg1arg2按示例顺序传入)。
返回处理后的结果值
算法SignedPower(x,n)=sign(x)\*(abs(x)^n)范例
```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231030T);
return SignedPower(@close(), 3);
// 结果14402.12
```
###### SlopeofNday
用途N日相关函数
参数arg1arg2arg3arg4按示例顺序传入)。
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231030T);
return SlopeofNday(@close(), @open(), 30, "");
// 结果0.97
```
###### CovarOfNDay
用途N日相关函数
参数arg1arg2arg3arg4按示例顺序传入)。
返回处理后的结果值
算法cov=mean(x*y)-mean(x)*mean(y)范例
```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231030T);
return CovarOfNDay(@close(), @open(), 30, "");
// 结果0.79
```
###### ProductOfNDay
用途N日相关函数
参数arg1arg2arg3按示例顺序传入)。
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231030T);
return ProductOfNDay(@close(), 3, "");
// 结果14359.59
```
###### WmaofNday
用途N日相关函数
参数arg1arg2arg3按示例顺序传入)。
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231030T);
return WmaofNday(@open(), 30, "");
// 结果25.04
```
###### SumifofNday
用途进行数值统计计算
参数arg1arg2arg3arg4按示例顺序传入)。
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231030T);
return SumifofNday(@open(), 30, "@open()>@close()", "");
// 结果763.47
```
###### SmaofNDay
用途N日相关函数
参数arg1arg2arg3arg4按示例顺序传入)。
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231030T);
return SmaofNDay(@open(), 30, 1, "");
// 结果25.44
```
###### 中间函数
####### 内容
- GetExpCaceStr
- TechCal_Unit
####### GetExpCaceStr
- GetExpCaceStr
- TechCal_Unit
####### TechCal_Unit
- GetExpCaceStr
- TechCal_Unit
##### 历史遗留
###### 内容
- SumOfSectorExceptNoTrade
- AvgOfSectorExceptNoTrade
###### SumOfSectorExceptNoTrade
用途进行数值统计计算
参数
返回处理后的结果值
范例
```tsl
SetSysParam(pn_bk(), '安徽');
SetSysParam(pn_date(), 20180801t);
return SumOfSectorExceptNoTrade(@close());
// 返回1261.95
```
###### AvgOfSectorExceptNoTrade
用途进行数值统计计算
参数
返回处理后的结果值
范例
```tsl
SetSysParam(pn_bk(), '安徽');
SetSysParam(pn_date(), 20180801t);
return AvgOfSectorExceptNoTrade(@close(), 0);
// 返回9.77
```
##### 区间
###### 内容
- SumOfPeriod
- SwingOfPeriod
- HighestOfPeriod
- TimeOfHighestOfPeriod
- OccuredOfPeriod
- AvgOfPeriod
- OccuredOfRepPeriod
- ContinuedMatchOfPeriod
- LowestOfPeriod
- AvgOfRepPeriod
- SumOfRepPeriod
- GrowthOfPeriod
- TimeOfLowestOfPeriod
- HHVBarsOfPeriod
- LLVBarsOfPeriod
- HighestOfRepPeriod2
- LowestOfRepPeriod2
- MedianOfPeriod
- PercentRankOfPeriod
- SkewnessOfPeriod
- KurtosisOfPeriod
- GrowthOfRepPeriod2
- SumOfRepPeriod2
- AvgOfRepPeriod2
- StdOfPeriod
- StdOfRepPeriod2
- CorrelOfPeriod
- RSQOfPeriod
- SlopeOfPeriod
- InterceptOfPeriod
- CovOfPeriod
- SteyxOfPeriod
###### SumOfPeriod
用途进行数值统计计算
参数
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return SumOfPeriod(@close(), 20180801T, 20180802T);
// 返回18.09
```
###### SwingOfPeriod
用途区间相关函数
参数
返回处理后的结果值
算法
振幅=指标区间最大值-指标区间最小值
振幅(百分比)=abs(指标区间最大值-指标区间最小值)/(指标区间最小值)范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return SwingOfPeriod(@close(), 20180801T, 20180802T, 0);
// 返回0.21
```
###### HighestOfPeriod
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return HighestOfPeriod(@close(), 20180801T, 20180802T);
// 返回9.15
```
###### TimeOfHighestOfPeriod
用途日期时间处理函数
参数
返回日期或时间值
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return TimeOfHighestOfPeriod(@close(), 20180801T, 20180802T);
// 返回2018-08-01
```
###### OccuredOfPeriod
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
// SH600585在20230101T至20231010T上涨次数。
SetSysParam(pn_stock(), "SH600585");
return OccuredOfPeriod(@IsUp(), 20230101T, 20231010T);
// 返回84
```
###### AvgOfPeriod
用途进行数值统计计算
参数
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return AvgOfPeriod(@close(), 20180801T, 20180802T);
// 返回9.045
```
###### OccuredOfRepPeriod
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return OccuredOfRepPeriod(@reportofall(46002, GetSysParam('DefaultRepID')), 20150331, 2018); // 即返回2015年到2018年一季报的数量
// 返回4
```
###### ContinuedMatchOfPeriod
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return ContinuedMatchOfPeriod(@close(), 20180801T, 20180803T);
// 返回1
```
###### LowestOfPeriod
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return LowestOfPeriod(@close(), 20180801T, 20180803T);
// 返回8.91
```
###### AvgOfRepPeriod
用途进行数值统计计算
参数
返回处理后的结果值
范例平安银行2015到2018四个一季报营业收入的平均值
```tsl
SetSysParam(pn_stock(), 'sz000001');
return AvgOfRepPeriod(@reportofall(46002, GetSysParam('DefaultRepID')), 20150331, 2018);
// 返回25988750000
```
###### SumOfRepPeriod
用途进行数值统计计算
参数
返回处理后的结果值
范例平安银行2015到2018四个一季报营业收入的和
```tsl
SetSysParam(pn_stock(), 'sz000001');
return SumOfRepPeriod(@reportofall(46002, GetSysParam('DefaultRepID')), 20150331, 2018);
// 返回103955000000
```
###### GrowthOfPeriod
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return GrowthOfPeriod(@close(), 20180801T, 20180803T, 1);
// 返回:-2.62
```
###### TimeOfLowestOfPeriod
用途日期时间处理函数
参数
返回日期或时间值
范例
```tsl
SetSysParam(pn_stock(), 'SZ000001');
return TimeOfLowestOfPeriod(@close(), 20180801T, 20180802T);
// 返回2018-08-02
```
###### HHVBarsOfPeriod
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
// SH600585在20230101T至20231010T最高点到当前的周期数。
SetSysParam(pn_stock(), "SH600585");
return HHVBarsOfPeriod(@close(), 20230101T, 20231010T);
// 返回153
```
###### LLVBarsOfPeriod
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
// SH600585在20230101T至20231010T最低点到当前的周期数。
SetSysParam(pn_stock(), "SH600585");
return LLVBarsOfPeriod(@close(), 20230101T, 20231010T);
// 返回58
```
###### HighestOfRepPeriod2
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
// 对SZ000001在2020年年报至2022年报的最高营业收入。
SetSysParam(pn_stock(), "SZ000001");
return HighestOfRepPeriod2(@reportofall(46002, GetSysParam('DefaultRepID')), 20201231, 20221231, 0);
// 返回179895000000
```
###### LowestOfRepPeriod2
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
// 对SZ000001在2020年年报至2022年报的最低营业收入。
SetSysParam(pn_stock(), "SZ000001");
return LowestOfRepPeriod2(@reportofall(46002, GetSysParam('DefaultRepID')), 20201231, 20221231, 0);
// 返回153542000000
```
###### MedianOfPeriod
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
// SH600585在20230101T至20231010T的价格中位数。
SetSysParam(pn_stock(), "SH600585");
return MedianOfPeriod(@close(), 20230101T, 20231010T);
// 返回25.78
```
###### PercentRankOfPeriod
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
// SH600585在20230101T至20231010T的价格分位数。
SetSysParam(pn_stock(), "SH600585");
return PercentRankOfPeriod(@close(), 20230101T, 20231010T);
// 返回0.1476
```
###### SkewnessOfPeriod
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
// SH600585在20230101T至20231010T的价格偏度。
SetSysParam(pn_stock(), "SH600585");
return SkewnessOfPeriod(@close(), 20230101T, 20231010T);
// 返回0.1796
```
###### KurtosisOfPeriod
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
// SH600585在20230101T至20231010T的价格峰度。
SetSysParam(pn_stock(), "SH600585");
return KurtosisOfPeriod(@close(), 20230101T, 20231010T);
// 返回:-0.602
```
###### GrowthOfRepPeriod2
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
// 对SZ000001在2020年年报至2022年报的营业收入增长率。
SetSysParam(pn_stock(), "SZ000001");
return GrowthOfRepPeriod2(@reportofall(46002, GetSysParam('DefaultRepID')), 20201231, 20221231, 1);
// 返回17.16
```
###### SumOfRepPeriod2
用途进行数值统计计算
参数
返回处理后的结果值
范例
```tsl
// 对SZ000001在2020年年报至2022年报的营业收入和。
SetSysParam(pn_stock(), "SZ000001");
return SumOfRepPeriod2(@reportofall(46002, GetSysParam('DefaultRepID')), 20201231, 20221231, 0);
// 返回502820000000
```
###### AvgOfRepPeriod2
用途进行数值统计计算
参数
返回处理后的结果值
范例
```tsl
// 对SZ000001在2020年年报至2022年报的平均营业收入。
SetSysParam(pn_stock(), "SZ000001");
return AvgOfRepPeriod2(@reportofall(46002, GetSysParam('DefaultRepID')), 20201231, 20221231, 0);
// 返回167606666666.667
```
###### StdOfPeriod
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
// SH600585在20230101T至20231010T的价格标准差。
SetSysParam(pn_stock(), "SH600585");
return StdOfPeriod(@close(), 20230101T, 20231010T);
// 返回2.1048
```
###### StdOfRepPeriod2
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
// 对SZ000001在2020年年报至2022年报的营业收入标准差。
SetSysParam(pn_stock(), "SZ000001");
return StdOfRepPeriod2(@reportofall(46002, GetSysParam('DefaultRepID')), 20201231, 20221231, 0);
// 返回13265996846.57
```
###### CorrelOfPeriod
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
// 20230901T至20231010TSH600585收盘与SH000001收盘的相关系数。
SetSysParam(pn_stock(), "SH600585");
return CorrelOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
// 返回0.45
```
###### RSQOfPeriod
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
// 20230901T至20231010TSH600585收盘与SH000001收盘的相关系数平方。
SetSysParam(pn_stock(), "SH600585");
return RSQOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
// 返回0.21
```
###### SlopeOfPeriod
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
// 20230901T至20231010TSH600585收盘与SH000001收盘的回归斜率。
SetSysParam(pn_stock(), "SH600585");
return SlopeOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
// 返回21.84
```
###### InterceptOfPeriod
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
// 20230901T至20231010TSH600585收盘与SH000001收盘的回归截距。
SetSysParam(pn_stock(), "SH600585");
return InterceptOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
// 返回2550.63
```
###### CovOfPeriod
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
// 20230901T至20231010TSH600585收盘与SH000001收盘的协方差。
SetSysParam(pn_stock(), "SH600585");
return CovOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
// 返回4.93
```
###### SteyxOfPeriod
用途区间相关函数
参数
返回处理后的结果值
范例
```tsl
// 20230901T至20231010TSH600585收盘与SH000001收盘的相对标准偏差。
SetSysParam(pn_stock(), "SH600585");
return SteyxOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
// 返回21.40
```
##### 中间函数
###### 内容
- RatioValueByType
- isValidValue
- FilterSampleByCriterion_Wiz
- CompositeRatioValue
- SimplyRatioValue
- isNull
- isValidPositiveValue
- ReportValueOfPeriod
###### RatioValueByType
用途中间函数相关函数
参数
返回处理后的结果值
算法
增长=V2-V1
增长率=(V2-V1)/V1\*100%
复合增长率= (Sign(V2/V1)*Power(abs(V2/V1),1/N)-1)*100%
其中sign为条件判断依据给定参数的正/0/负返回1/0/-1power为幂为1/N的幂函数范例
```tsl
return RatioValueByType(1, 2, 1, 2);
// 返回100
```
###### isValidValue
用途判断条件是否成立
参数
返回布尔值
范例
```tsl
return isValidValue(10);
// 返回1
```
###### FilterSampleByCriterion_Wiz
用途中间函数相关函数
参数
返回处理后的结果值
范例
```tsl
stockarr := GetBK('A股');
FilterSampleByCriterion_Wiz(stockarr, 20150101, 0, 0, 20180801);
return stockarr;
```
返回:
###### CompositeRatioValue
用途中间函数相关函数
参数
返回整数
算法复合增长率= (Sign(V2/V1)*Power(abs(V2/V1),1/N)-1)*100%
其中sign为条件判断依据给定参数的正/0/负返回1/0/-1power为幂为1/N的幂函数范例
```tsl
return CompositeRatioValue(1, 4, 2);
// 返回100
```
###### SimplyRatioValue
用途中间函数相关函数
参数
返回处理后的结果值
算法增长率=(V2-V1)/V1\*100%范例
```tsl
return SimplyRatioValue(1, 2);
// 返回100
```
###### isNull
用途判断条件是否成立
参数
返回布尔值
范例
```tsl
return isNull(0);
// 返回1
```
###### isValidPositiveValue
用途判断条件是否成立
参数
返回布尔值
范例
```tsl
return isValidPositiveValue(1);
// 返回1
```
###### ReportValueOfPeriod
- RatioValueByType
- isValidValue
- FilterSampleByCriterion_Wiz
- CompositeRatioValue
- SimplyRatioValue
- isNull
- isValidPositiveValue
- ReportValueOfPeriod
##### N季
###### 内容
- SumOfNReport2
- AvgOfNReport2
- StdOfNReport2
- ACCOfNReport2
- RobustGrowthOfNReport2
- RobustACCOfNReport2
###### SumOfNReport2
用途进行数值统计计算
参数
返回处理后的结果值
范例
```tsl
setsysparam(pn_stock(), "SH600000");
Exp := @reportofall(46002, GetSysParam('DefaultRepID'));
ReportID := 20211231;
N := 8;
return SumOfNReport2(Exp, ReportID, N); // 983299000000
```
###### AvgOfNReport2
用途进行数值统计计算
参数
返回处理后的结果值
范例
```tsl
setsysparam(pn_stock(), "SH600000");
Exp := @reportofall(46002, GetSysParam('DefaultRepID'));
ReportID := 20211231;
N := 8;
return AvgOfNReport2(Exp, ReportID, N); // 122912375000
```
###### StdOfNReport2
用途N季相关函数
参数
返回处理后的结果值
范例
```tsl
setsysparam(pn_stock(), "SH600000");
Exp := @reportofall(46002, GetSysParam('DefaultRepID'));
ReportID := 20211231;
N := 8;
return StdOfNReport2(Exp, ReportID, N); // 56286669451.8528
```
###### ACCOfNReport2
范例
```tsl
setsysparam(pn_stock(), "SH600000");
Exp := @reportofall(9900002, GetSysParam('DefaultRepID'));
ReportID := 20211231;
N := 8;
return RobustACCOfNReport2(Exp, ReportID, N); // -0.2568
```
###### RobustGrowthOfNReport2
用途N季相关函数
参数
返回处理后的结果值
范例
```tsl
setsysparam(pn_stock(), "SH600000");
Exp := @reportofall(9900002, GetSysParam('DefaultRepID'));
ReportID := 20211231;
N := 8;
return RobustGrowthOfNReport2(Exp, ReportID, N); // -0.3269
```
###### RobustACCOfNReport2
用途N季相关函数
参数
返回处理后的结果值
范例
```tsl
setsysparam(pn_stock(), "SH600000");
Exp := @reportofall(9900002, GetSysParam('DefaultRepID'));
ReportID := 20211231;
N := 8;
return RobustACCOfNReport2(Exp, ReportID, N); // -0.2568
```
##### 当日
###### 内容
- PercentRankOftheReport
- PercentRankOftheDay3
- RankOftheReport
- RankOftheDay3
- ScaleOfSeries3
- ScaleOfSeriesOftheReport
- IndNeutralize4
- IndNeutralizeOftheReport
- IndNeutralize
- IndNeutralize2
- PercentRankOftheDay
- PercentRankOftheDay2
- RankOftheDay
- RankOftheDay2
- ScaleOfSeries
- ScaleOfSeries2
- 中间函数
###### PercentRankOftheReport
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
// SH6005192022年报营业收入在沪深300成分股的分位排名。
endt := 20221231T;
SetSysParam(pn_stock(), "SH600519");
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return PercentRankOftheReport(@ReportOfAll(46002, DefaultRepID()), 20221231);
// 返回0.7525
```
###### PercentRankOftheDay3
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
// 20231010TSH600519收盘价在沪深300成分股的分位排名。
endt := 20231010T;
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return PercentRankOftheDay3(@close(), "", 1);
// 返回1
```
###### RankOftheReport
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
// SH6005192022年报营业收入在沪深300成分股的排名。
endt := 20221231T;
SetSysParam(pn_stock(), "SH600519");
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return RankOftheReport(@ReportOfAll(46002, DefaultRepID()), 20221231, 0);
// 返回75
```
###### RankOftheDay3
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
// 20231010TSH600519收盘价在沪深300成分股的排名。
endt := 20231010T;
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return RankOftheDay3(@close(), 0, "", 1);
// 返回1
```
###### ScaleOfSeries3
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
// 20231010TSH600519收盘价在沪深300成分股的标准化。
endt := 20231010T;
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return ScaleOfSeries3(@close(), 1, "", 1);
// 返回0.1267
```
###### ScaleOfSeriesOftheReport
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
// SH6005192022年报在沪深300成分股的营业收入标准化。
endt := 20221231T;
SetSysParam(pn_stock(), "SH600519");
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return ScaleOfSeriesOftheReport(@ReportOfAll(46002, DefaultRepID()), 20221231, 1);
// 返回0.00298
```
###### IndNeutralize4
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
// 20231010TSH600519收盘价在沪深300成分股的中性化。
endt := 20231010T;
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return IndNeutralize4(@close(), 0, "", 1);
// 返回1723.43
```
###### IndNeutralizeOftheReport
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
// SH6005192022年报在沪深300成分股的营业收入中性化。
endt := 20221231T;
SetSysParam(pn_stock(), "SH600519");
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return IndNeutralizeOftheReport(@ReportOfAll(46002, DefaultRepID()), 20221231, 0);
// 返回:-14699034441.7286
```
###### IndNeutralize
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", 20231010T));
return IndNeutralize(@open(), 0, "");
// 结果1735.87966666667
```
###### IndNeutralize2
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", 20231010T));
return IndNeutralize2(@open(), 0, "");
// 结果1735.87966666667
```
###### PercentRankOftheDay
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
sp_s(PN_Stock(), 'SH600000');
endt := 20190701T;
sp_s(PN_Date(), endt);
sp_s(PN_Rate(), 1);
sp_s(PN_RateDay(), endt);
sp_s(pn_StockArr(), GetBKByDate('SH000300', endt));
Exp := @close();
return PercentRankOftheDay(exp);
// 结果0.4615
```
###### PercentRankOftheDay2
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
sp_s(PN_Stock(), 'SH600000');
endt := 20190701T;
sp_s(PN_Date(), endt);
sp_s(PN_Rate(), 1);
sp_s(PN_RateDay(), endt);
sp_s(pn_StockArr(), GetBKByDate('SH000300', endt));
Exp := @close();
return PercentRankOftheDay2(exp);
// 结果0.4615
```
###### RankOftheDay
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
sp_s(PN_Stock(), 'SH600000');
endt := 20190701T;
sp_s(PN_Date(), endt);
sp_s(PN_Rate(), 1);
sp_s(PN_RateDay(), endt);
sp_s(pn_StockArr(), GetBKByDate('SH000300', endt));
Exp := @close();
return RankOftheDay(exp, 0);
// 结果161
```
###### RankOftheDay2
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
sp_s(PN_Stock(), 'SH600000');
endt := 20190701T;
sp_s(PN_Date(), endt);
sp_s(PN_Rate(), 1);
sp_s(PN_RateDay(), endt);
sp_s(pn_StockArr(), GetBKByDate('SH000300', endt));
Exp := @close();
return RankOftheDay2(exp, 0);
// 结果161
```
###### ScaleOfSeries
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
// 20231010TSH600519收盘价在沪深300成分股的标准化。
endt := 20231010T;
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return ScaleOfSeries(@close(), 1, "");
// 返回0.1267
```
###### ScaleOfSeries2
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
// 20231010TSH600519收盘价在沪深300成分股的标准化。
endt := 20231010T;
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return ScaleOfSeries2(@close(), 1, "");
// 返回0.1267
```
###### 中间函数
####### 内容
- CacheStrMerge
- pn_StockArrName
- GetParm_StockArr_ByEndt
- GetParm_GroupIndustry_ByEndt
- GetHBCacheStr
- SetParm_StockArrFunc
- pn_StockArrFunc
####### CacheStrMerge
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
return CacheStrMerge('1', 2, 20231020T);
// 结果:["1"][2][45219]
```
####### pn_StockArrName
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
return pn_StockArrName();
// 结果CurrentStockArrName
```
####### GetParm_StockArr_ByEndt
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
A := function (endt);
begin
return GetBKByDate('SH000300', endt);
end;
B := function (endt);
begin
return GetBKByDate('SH000905', endt);
end;
SetParm_StockArrFunc(B, 'ZZ500');
SetParm_StockArrFunc(A, 'HS300');
sp_s(pn_StockArrName(), 'HS300');
stocks1 := GetParm_StockArr_ByEndt(sp_time(1));
sp_s(pn_StockArrName(), 'ZZ500');
stocks2 := GetParm_StockArr_ByEndt(sp_time(1));
return array(stocks1, stocks2);
```
####### GetParm_GroupIndustry_ByEndt
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
return GetParm_GroupIndustry_ByEndt(GetBKByDate('SH000300', 20231010T), 20231010T, 1);
```
####### GetHBCacheStr
- CacheStrMerge
- pn_StockArrName
- GetParm_StockArr_ByEndt
- GetParm_GroupIndustry_ByEndt
- GetHBCacheStr
- SetParm_StockArrFunc
- pn_StockArrFunc
####### SetParm_StockArrFunc
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
A := function (endt);
begin
return GetBKByDate('SH000300', endt);
end;
B := function (endt);
begin
return GetBKByDate('SH000905', endt);
end;
SetParm_StockArrFunc(B, 'ZZ500');
SetParm_StockArrFunc(A, 'HS300');
sp_s(pn_StockArrName(), 'HS300');
stocks1 := GetParm_StockArr_ByEndt(sp_time(1));
sp_s(pn_StockArrName(), 'ZZ500');
stocks2 := GetParm_StockArr_ByEndt(sp_time(1));
return array(stocks1, stocks2);
```
[/code]
####### pn_StockArrFunc
用途当日相关函数
参数
返回处理后的结果值
范例
```tsl
return pn_StockArrFunc();
// 结果CurrentStockArrFunc
```
##### StockTrailingAvgByEndT
范例
范例01
```tsl
// 获取万科A过去1年的日均成交金额
setsysparam(pn_stock(), "SZ000002");
endt := 20210714t;
RefType := 4; // 过去1年
exp := "Amount()";
return StockTrailingAvgByEndT(Endt, RefType, Exp);
// 2172484158.52
```
范例02
```tsl
// 获取厦门银行过去1年的日均成交金额剔除上市日3天
setsysparam(pn_stock(), "SH601187");
endt := 20210714t;
RefType := 4; // 过去1年
exp := "Amount()";
IsExcludeIPO := 1; // 考虑剔除上市日影响
N := 3; // 上市行情3天
return StockTrailingAvgByEndT(Endt, RefType, Exp, IsExcludeIPO, N);
// 444243617.69
```
##### StockTrailingStdByEndT
范例
```tsl
// 获取万科A过去1年的日收益率标准差
setsysparam(pn_stock(), "SZ000002");
endt := 20210714t;
RefType := 4; // 过去1年
exp := "stockzf3()";
return StockTrailingStdByEndT(Endt, RefType, Exp); // 1.69
```
#### 条件判定
##### 内容
- IsTimePeriodInfoId
##### IsTimePeriodInfoId
范例
```tsl
return IsTimePeriodInfoId(150003);
// 结果1
```