### 数据仓库函数

#### 内容

- 系统参数名称函数
- 多市场支撑函数
- 时间相关函数
- 判定函数
- 盘中相关
- 盘后相关(在当日可用于盘中)
- 时间序列统计
- 成交明细数据函数
- 交易明细字段标识函数
- 查询和轮询函数
- 市场和板块函数
- 取行情数据序列函数
- 引用指定函数
- 系统参数设置和获取函数
- 复权类型函数
- 复权基准日函数
- 周期函数
- 财务函数
- 选股与取数
- 向导函数
- 条件判定

#### 系统参数名称函数

##### 内容

- 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       |

范例:

范例1：pn_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年三季报已公布，年报未公布
```

范例2：pn_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年年报未公布，预测已公布
```

范例3：pn_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年三季报已公布
```

范例4：pn_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年年报未公布，预测已公布
```

范例5：pn_ReportType()=90，发布规则提取

```tsl
EndT := 20230121T;
ov := BackupSystemParameters2();
SetSysParam(pn_ReportType(), 90); // 财报按财报发布规则
RDate := NewReportDateOfEndT2(EndT);
return RDate;
// 返回结果：20220930， 按财报公布规则20230121t,2022年年报未公布在4月底才公布，2022年三季报已在2022年10月公布了
```

范例6：pn_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操作

使用范例03：Nil的.与[]操作不报错

```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对应的是13：00，54000对应的是15：00。

注意：在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:00，1分钟线的复权开盘价，复权方式为比例复权，复权基准日是上市日。
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

用途：双序列统计相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例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

用途：双序列统计相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例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

用途：双序列统计相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例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

用途：双序列统计相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例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

用途：双序列统计相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例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

用途：双序列统计相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例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

用途：双序列统计相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例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期相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例返回平安银行截止到2015年12月31日的所有年报数量

```tsl
SetSysParam(pn_stock(), 'SZ000001');
return OccuredOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20151231, 100);
// 返回：25
```

###### ContinuedMatchOfNReport

用途：N期相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例判断2014到2015这两年平安银行年报是否全部存在

```tsl
SetSysParam(pn_stock(), 'SZ000001');
return ContinuedMatchOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20151231, 2);
// 返回：1
```

###### OccuredRepIdOfNReport

用途：N期相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(pn_stock(), 'SZ000001');
return OccuredRepIdOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20001231, 20);
```

返回结果:

###### SumOfNReport

用途：进行数值统计计算。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例计算平安银行2015年报与2014年报营业收入的和

```tsl
SetSysParam(pn_stock(), 'SZ000001');
return SumOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20151231, 2);
// 返回：169570000000
```

###### AvgOfNReport

用途：进行数值统计计算。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例返回平安银行2015年报与2014年报营业收入的平均

```tsl
SetSysParam(pn_stock(), 'SZ000001');
return AvgOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20151231, 2);
// 返回：84785000000
```

###### RefReportValue

用途：N期相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例返回平安银行2015年年报营业收入额

```tsl
SetSysParam(pn_stock(), 'SZ000001');
return RefReportValue(@reportofall(46002, GetSysParam('DefaultRepID')), 20161231, 1);
// 返回：96163000000
```

###### GrowthOfNReport

用途：N期相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例返回平安银行2014年与2015年报营业收入增长比例

```tsl
SetSysParam(pn_stock(), 'SZ000001');
return GrowthOfNReport(@reportofall(46002, GetSysParam('DefaultRepID')), 20151231, 1, 1);
// 返回：34.00
```

###### ACCOfNReport

用途：N期相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

算法

过去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期相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

算法

N期稳健加速度=N期稳健增速一阶差分 ，即本期N期稳健增速- 上期N期稳健增速

上期：由参数LastReportType确定，0表示同比报告期，1表示环比报告期范例

```tsl
setsysparam(pn_stock(), "SH600519");
return RobustACCOfNReport(@Last12MData(DefaultRepID(), 9900604), 20201231, 8, 0); // -0.0878801178157446
```

###### HighestOfNReport

用途：N期相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 对SH600585在22年年报前5个年度报告期最高的总营业收入。
SetSysParam(pn_stock(), "SH600585");
return HighestOfNReport(@ReportOfAll(46080, DefaultRepID()), 20221231, 5, 0);
// 返回：176294715308
```

###### lowestOfNReport

用途：N期相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 对SH600585在22年年报前5个年度报告期最低的总营业收入。
SetSysParam(pn_stock(), "SH600585");
return lowestOfNReport(@ReportOfAll(46080, DefaultRepID()), 20221231, 5, 0);
// 返回：128402625696
```

###### StandGrowthOfNReport

用途：N期相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

算法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期相关函数。
参数：arg1，arg2，arg3，arg4，arg5（按示例顺序传入）。
返回：处理后的结果值。

算法

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期相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

算法

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期相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：整数。

范例

```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期相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```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期相关函数。
参数：arg1，arg2，arg3，arg4，arg5（按示例顺序传入）。
返回：处理后的结果值。

范例

```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日相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return HighestOfNDay(@close(), 5);
// 返回：9.42
```

###### RefValue

用途：N日相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例返回上证指数在2018年7月18号的收盘价

```tsl
SetSysParam(pn_stock(), 'SH000001');
SetSysParam(pn_date(), 20180801t);
return RefValue(@close(), 10);
// 返回：2787.257
```

###### OccuredOfNDay

用途：N日相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return OccuredOfNDay(@close(), 10);
// 返回：10
```

###### GrowthOfNDay

用途：N日相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return GrowthOfNDay(@close(), 5, 0);
// 返回：-0.23
```

###### SwingOfNDay

用途：N日相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

算法

振幅=指标N日最大值-指标N日最小值

振幅(百分比)=abs(指标N日最大值-指标N日最小值)/(指标N日最小值)范例

```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return SwingOfNDay(@close(), 5, 0);
// 返回：0.27
```

###### ContinuedMatchOfNDay

用途：N日相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(pn_stock(), 'SH000001');
SetSysParam(pn_date(), 20180801t);
return ContinuedMatchOfNDay(@close(), 3);
// 返回：1
```

###### StdOfNDay

用途：N日相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return StdOfNDay(@close(), 5);
// 返回：0.11
```

###### SumOfNDay

用途：进行数值统计计算。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例计算平安银行截止2018年8月1日最近10个交易日的成交量和

```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return SumOfNDay(@vol(), 10);
// 结果： 962645765
```

###### LowestOfNDay

用途：N日相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return LowestOfNDay(@close(), 5);
// 返回：9.15
```

###### OccuredTimeOfNDay

用途：日期时间处理函数。
参数：arg1，arg2（按示例顺序传入）。
返回：日期或时间值。

范例

```tsl
SetSysParam(pn_stock(), 'SZ000063');
SetSysParam(pn_date(), 20180615t);
return OccuredTimeOfNDay(@vol(), 10);
```

返回:

###### AvgOfNDay

用途：进行数值统计计算。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801t);
return AvgOfNDay(@close(), 5);
// 返回：9.292
```

###### GrowthWithHighestOfNDay

用途：N日相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 对SH600585在20231010T的100日价格N日最大与当前的偏离值。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return GrowthWithHighestOfNDay(@close(), 100, 0);
// 返回：-2.21
```

###### GrowthWithLowestOfNDay

用途：N日相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 对SH600585在20231010T的100日价格N日最小与当前的偏离值。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return GrowthWithLowestOfNDay(@close(), 100, 0);
// 返回：1.82
```

###### TimeOfHighestOfNDay

用途：日期时间处理函数。
参数：arg1，arg2（按示例顺序传入）。
返回：日期或时间值。

范例

```tsl
// 对SH600585在20231010T的100日价格最高时间。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return TimeOfHighestOfNDay(@close(), 100);
// 返回：2023-05-15
```

###### TimeOfLowestOfNDay

用途：日期时间处理函数。
参数：arg1，arg2（按示例顺序传入）。
返回：日期或时间值。

范例

```tsl
// 对SH600585在20231010T的100日价格最低时间。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return TimeOfLowestOfNDay(@close(), 100);
// 返回：2023-07-12
```

###### MedianOfNDay

用途：N日相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 对SH600585在20231010T的100日价格中位数。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return MedianOfNDay(@close(), 100);
// 返回：26.705
```

###### KurtosisOfNDay

用途：N日相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 对SH600585在20231010T的100日价格峰度。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return KurtosisOfNDay(@close(), 100);
// 返回：-0.73
```

###### SkewnessOfNDay

用途：N日相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 对SH600585在20231010T的100日价格偏度。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return SkewnessOfNDay(@close(), 100);
// 返回：-0.65
```

###### CovOfNDay

用途：N日相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 20231010T，SH600585前10日收盘与SH000001收盘的协方差。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return CovOfNDay(@close(), 10, "SH000001");
// 返回：5.7123
```

###### RSQOfNDay

用途：N日相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 20231010T，SH600585前10日收盘与SH000001收盘的相关系数平方。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return RSQOfNDay(@close(), 10, "SH000001");
// 返回：0.437
```

###### SteyxOfNDay

用途：N日相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 20231010T，SH600585前10日收盘与SH000001收盘的相对标准偏差。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return SteyxOfNDay(@close(), 10, "SH000001");
// 返回：13.72035
```

###### SlopeOfNDay2

用途：N日相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 20231010T，SH600585前10日收盘与SH000001收盘的回归斜率。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return SlopeOfNDay2(@close(), 10, "SH000001");
// 返回：20.4608
```

###### CorrelOfNDay2

用途：N日相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 20231010T，SH600585前10日收盘与SH000001收盘的相关系数。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return CorrelOfNDay2(@close(), 10, "SH000001");
// 返回：0.661
```

###### InterceptOfNDay2

用途：N日相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
// 20231010T，SH600585前10日收盘与SH000001收盘的回归截距。
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return InterceptOfNDay2(@close(), 10, "SH000001");
// 返回：2569.49
```

###### CorrelOfNDay

用途：N日相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return CorrelOfNDay(@stockpjcj3(), @RefValue(@close(), 5), 10, "");
// 结果：-0.61
```

###### DecayAvgOfNDay

用途：进行数值统计计算。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return DecayAvgOfNDay(@close(), 5);
// 结果：25.61
```

###### DeltaOfNDay

用途：N日相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return DeltaOfNDay(@close(), 5);
// 结果：-1.39
```

###### HHVBarsOfNDay

用途：N日相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231010T);
return HHVBarsOfNDay(@close(), 10, "");
// 结果：8
```

###### interceptofNday

用途：N日相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```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日相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231030T);
return PercentRankOfNDay(@close(), 10, "");
// 结果：0.56
```

###### SignedPower

用途：N日相关函数。
参数：arg1，arg2（按示例顺序传入）。
返回：处理后的结果值。

算法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日相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231030T);
return SlopeofNday(@close(), @open(), 30, "");
// 结果：0.97
```

###### CovarOfNDay

用途：N日相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

算法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日相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231030T);
return ProductOfNDay(@close(), 3, "");
// 结果：14359.59
```

###### WmaofNday

用途：N日相关函数。
参数：arg1，arg2，arg3（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231030T);
return WmaofNday(@open(), 30, "");
// 结果：25.04
```

###### SumifofNday

用途：进行数值统计计算。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```tsl
SetSysParam(pn_stock(), "SH600585");
SetSysParam(pn_date(), 20231030T);
return SumifofNday(@open(), 30, "@open()>@close()", "");
// 结果：763.47
```

###### SmaofNDay

用途：N日相关函数。
参数：arg1，arg2，arg3，arg4（按示例顺序传入）。
返回：处理后的结果值。

范例

```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至20231010T，SH600585收盘与SH000001收盘的相关系数。
SetSysParam(pn_stock(), "SH600585");
return CorrelOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
// 返回：0.45
```

###### RSQOfPeriod

用途：区间相关函数。
参数：

返回：处理后的结果值。

范例

```tsl
// 20230901T至20231010T，SH600585收盘与SH000001收盘的相关系数平方。
SetSysParam(pn_stock(), "SH600585");
return RSQOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
// 返回：0.21
```

###### SlopeOfPeriod

用途：区间相关函数。
参数：

返回：处理后的结果值。

范例

```tsl
// 20230901T至20231010T，SH600585收盘与SH000001收盘的回归斜率。
SetSysParam(pn_stock(), "SH600585");
return SlopeOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
// 返回：21.84
```

###### InterceptOfPeriod

用途：区间相关函数。
参数：

返回：处理后的结果值。

范例

```tsl
// 20230901T至20231010T，SH600585收盘与SH000001收盘的回归截距。
SetSysParam(pn_stock(), "SH600585");
return InterceptOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
// 返回：2550.63
```

###### CovOfPeriod

用途：区间相关函数。
参数：

返回：处理后的结果值。

范例

```tsl
// 20230901T至20231010T，SH600585收盘与SH000001收盘的协方差。
SetSysParam(pn_stock(), "SH600585");
return CovOfPeriod(@close(), 20230901T, 20231010T, "SH000001");
// 返回：4.93
```

###### SteyxOfPeriod

用途：区间相关函数。
参数：

返回：处理后的结果值。

范例

```tsl
// 20230901T至20231010T，SH600585收盘与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/-1，power为幂为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/-1，power为幂为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
// SH600519，2022年报营业收入在沪深300成分股的分位排名。
endt := 20221231T;
SetSysParam(pn_stock(), "SH600519");
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return PercentRankOftheReport(@ReportOfAll(46002, DefaultRepID()), 20221231);
// 返回：0.7525
```

###### PercentRankOftheDay3

用途：当日相关函数。
参数：

返回：处理后的结果值。

范例

```tsl
// 20231010T，SH600519收盘价在沪深300成分股的分位排名。
endt := 20231010T;
SetSysParam(pn_stock(), "SH600519");
SetSysParam(Pn_date(), 20231010T);
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return PercentRankOftheDay3(@close(), "", 1);
// 返回：1
```

###### RankOftheReport

用途：当日相关函数。
参数：

返回：处理后的结果值。

范例

```tsl
// SH600519，2022年报营业收入在沪深300成分股的排名。
endt := 20221231T;
SetSysParam(pn_stock(), "SH600519");
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return RankOftheReport(@ReportOfAll(46002, DefaultRepID()), 20221231, 0);
// 返回：75
```

###### RankOftheDay3

用途：当日相关函数。
参数：

返回：处理后的结果值。

范例

```tsl
// 20231010T，SH600519收盘价在沪深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
// 20231010T，SH600519收盘价在沪深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
// SH600519，2022年报在沪深300成分股的营业收入标准化。
endt := 20221231T;
SetSysParam(pn_stock(), "SH600519");
setsysparam(pn_StockArr(), getbkbydate("SH000300", endt));
return ScaleOfSeriesOftheReport(@ReportOfAll(46002, DefaultRepID()), 20221231, 1);
// 返回：0.00298
```

###### IndNeutralize4

用途：当日相关函数。
参数：

返回：处理后的结果值。

范例

```tsl
// 20231010T，SH600519收盘价在沪深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
// SH600519，2022年报在沪深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
// 20231010T，SH600519收盘价在沪深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
// 20231010T，SH600519收盘价在沪深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
```
