# 数据仓库 / 向导函数

## `avgOfSector(exp, mode, shares_day, list_day, s_type, sample_select, eps_criterion, except_no_trade)`

声明：function

板块平均。对指定板块按照一定标准进行选股后，对板块下每一只股票Exp表达式的指标值按mode求平均，选股标准由SampleSelect与EPSCriterion确定。其中亏损股为当前时间之前最近一期报告期每股收益(摊薄)\*12/报告期所在月份<0,停牌股为当前时间之前最近一期报告期每股收益(摊薄)\*12/报告期所在月份<EPSCriterion，与系统参数(股票，周期)相关

<!-- tags: 数据仓库 向导函数 -->

| 参数              | 类型     | 说明                                                         |
| ----------------- | -------- | ------------------------------------------------------------ |
| `exp`             | expr     | 函数表达式                                                   |
| `mode`            | int      | 用户自定义，平均模式                                         |
| `shares_day`      | datetime | 日期,收益计算日                                              |
| `list_day`        | datetime | 日期，在之前上市                                             |
| `s_type`          | int      | 用户自定义，股票类型                                         |
| `sample_select`   | int      | 用户自定义，样本股选择                                       |
| `eps_criterion`   | float    | 实数，绩差股标准。每股收益(摊薄)&lt;EPSCriterion即表示绩差股 |
| `except_no_trade` | bool     | 真假，剔除停牌股                                             |

返回：float

### 示例

范例01：返回：12.27

```tsl
return AvgOfSector(@close(), 2, 20180801T, 20180801T, 1, 0, 0, 0);
// 输出：12.27
```

## `derivative1(f, n)`

声明：function

指标技术趋势，返回N个时间点前连续三个周期的指标Expr变化趋势，与当前系统参数(股票，日期，周期，复权)相关

<!-- tags: 数据仓库 向导函数 -->

| 参数 | 类型 | 说明            |
| ---- | ---- | --------------- |
| `f`  | expr | 函数表达式,指标 |
| `n`  | int  | 整数，日期偏移  |

返回：float

### 示例

范例01：调用函数

```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801T);
return Derivative1(@close(), 0); // 指标值为收盘价
```

## `derivative2(a)`

声明：function

指标技术加速度，返回4个周期的指标Expr变化趋势，与当前系统参数(股票，日期，周期，复权)相关

<!-- tags: 数据仓库 向导函数 -->

| 参数 | 类型 | 说明       |
| ---- | ---- | ---------- |
| `a`  | expr | 函数表达式 |

返回：float

### 示例

范例01：调用函数

```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801T);
return Derivative2(@close()); // 指标值为收盘价
```

## `growthWithLowestOfPeriod(exp, beg_date, end_date, return_type)`

声明：function

返回表达式Exp在区间BegDate到EndDate中的最小值与在EndDate的值的偏离，ReturnType决定返回偏离值(增加值)还是偏离率(增速%)

<!-- tags: 数据仓库 向导函数 返回 获取 -->

| 参数          | 类型     | 说明                 |
| ------------- | -------- | -------------------- |
| `exp`         | expr     | 函数表达式           |
| `beg_date`    | datetime | 日期，开始日         |
| `end_date`    | datetime | 日期，截止日         |
| `return_type` | int      | 用户自定义，返回类型 |

返回：float

### 示例

范例01：调用函数

```tsl
SetSysParam(pn_stock(), 'SZ000001');
return GrowthWithLowestOfPeriod(@close(), 20180801T, 20180903T, 0);
```

## `positionOfSector(exp, sector)`

声明：function

从大到小排名。板块Sector中成分股按个券指标EXP大小排序，返回指定股票pn_stock()的排名，该函数与系统参数(股票，日期，复权，周期)相关

<!-- tags: 数据仓库 向导函数 排序 sort EXP -->

| 参数     | 类型   | 说明             |
| -------- | ------ | ---------------- |
| `exp`    | expr   | 函数表达式       |
| `sector` | string | 市场和板块，板块 |

返回：float

### 示例

范例01：调用函数

```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801T);
return PositionOfSector(@close(), 'A股');
```

## `positionOfSectorDesc(exp, sector)`

声明：function

从小到大排名。板块Sector中按指标EXP大小排序，返回指定股票的排名，与系统参数(股票，日期，复权，周期)相关

<!-- tags: 数据仓库 向导函数 排序 sort EXP -->

| 参数     | 类型   | 说明             |
| -------- | ------ | ---------------- |
| `exp`    | expr   | 函数表达式       |
| `sector` | string | 市场和板块，板块 |

返回：float

### 示例

范例01：调用函数

```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801T);
return PositionOfSectorDesc(@close(), 'A股');
```

## `reduceWithHighestOfPeriod(exp, beg_date, end_date, return_type)`

声明：function

返回表达式Exp在区间BegDate到EndDate中的最大值与在EndDate的值的偏离，ReturnType决定返回偏离值(增加值)还是偏离率(增速%)

<!-- tags: 数据仓库 向导函数 返回 获取 -->

| 参数          | 类型     | 说明                 |
| ------------- | -------- | -------------------- |
| `exp`         | expr     | 函数表达式           |
| `beg_date`    | datetime | 日期，开始日         |
| `end_date`    | datetime | 日期，截止日         |
| `return_type` | int      | 用户自定义，返回类型 |

返回：float

### 示例

范例01：调用函数

```tsl
SetSysParam(pn_stock(), 'SZ000001');
return ReduceWithHighestOfPeriod(@close(), 20180801T, 20180803T, 0);
```

## `relativeStrengthOfSector(exp, sector)`

声明：function

系统当前证券在板块中的相对强弱(%)。系统当前证券pn_stock()在指定板块Sector中的指标Exp值的从大到小的排位百分比。该函数与系统参数(股票，日期，复权，周期)相关

<!-- tags: 数据仓库 向导函数 -->

| 参数     | 类型   | 说明             |
| -------- | ------ | ---------------- |
| `exp`    | expr   | 函数表达式       |
| `sector` | string | 市场和板块，板块 |

返回：float

### 示例

范例01：调用函数

```tsl
SetSysParam(pn_stock(), 'SH000300');
SetSysParam(pn_date(), 20180801T);
return RelativeStrengthOfSector(@stockzf3(), 'A股');
```

## `relativeStrengthOfSectorDesc(exp, sector)`

声明：function

系统当前证券在板块中的相对强弱(%)。系统当前证券pn_stock()在指定板块Sector中的指标Exp值的从小到大的排位百分比。该函数与系统参数(股票，日期，复权，周期)相关

<!-- tags: 数据仓库 向导函数 -->

| 参数     | 类型   | 说明             |
| -------- | ------ | ---------------- |
| `exp`    | expr   | 函数表达式       |
| `sector` | string | 市场和板块，板块 |

返回：float

### 示例

范例01：调用函数

```tsl
SetSysParam(pn_stock(), 'SZ000001');
SetSysParam(pn_date(), 20180801T);
return RelativeStrengthOfSectorDesc(@close(), 'A股');
```

## `stockTrailingAvgByEndT(endt, ref_type, exp, is_exclude_ipo, n)`

声明：function

获取基于指定日推移阶段的日均指标

<!-- tags: 数据仓库 向导函数 获取 查询 -->

| 参数             | 类型        | 说明                                          |
| ---------------- | ----------- | --------------------------------------------- |
| `endt`           | datetime    | 日期,截止日                                   |
| `ref_type`       | user_define | 用户自定义，选择所推移类型，取值如下:         |
| `exp`            | string      | 字符串, 指标表达式，如"close()","stockzdf3()" |
| `is_exclude_ipo` | bool        | 真假, 是否剔除上市日区间行情                  |
| `n`              | int         | 整数, 剔除天数                                |

返回：float

### 示例

范例01：调用函数

```tsl
获取万科A过去1年的日均成交金额
setsysparam(pn_stock(), "SZ000002");
endt := 20210714t;
RefType := 4; // 过去1年
exp := "Amount()";
return StockTrailingAvgByEndT(Endt, RefType, Exp);
```

## `stockTrailingStdByEndT(endt, ref_type, exp, is_exclude_ipo, n)`

声明：function

获取基于指定日推移阶段的指标标准差

<!-- tags: 数据仓库 向导函数 获取 查询 -->

| 参数             | 类型        | 说明                                          |
| ---------------- | ----------- | --------------------------------------------- |
| `endt`           | datetime    | 日期,截止日                                   |
| `ref_type`       | user_define | 用户自定义，选择所推移类型，取值如下:         |
| `exp`            | string      | 字符串, 指标表达式，如"close()","stockzdf3()" |
| `is_exclude_ipo` | bool        | 真假, 是否剔除上市日区间行情                  |
| `n`              | int         | 整数, 剔除天数                                |

返回：float

### 示例

范例01：调用函数

```tsl
获取万科A过去1年的日收益率标准差
setsysparam(pn_stock(), "SZ000002");
endt := 20210714t;
RefType := 4; // 过去1年
exp := "stockzf3()";
return StockTrailingStdByEndT(Endt, RefType, Exp); // 1.69
```

## `sumOfSector(exp, shares_day, list_day, s_type, sample_select, eps_criterion, except_no_trade)`

声明：function

对指定板块按照一定标准进行选股后，对板块下每一只股票Exp表达式的指标值求和. 选股标准由SType、SampleSelect与EPSCriterion确定。 其中亏损股为当前时间之前最近一期报告期每股收益(摊薄)\*12/报告期所在月份<0; 停牌股为当前时间之前最近一期报告期每股收益(摊薄)\*12/报告期所在月份<EPSCriterion，与系统参数(板块，周期，时间)相关

<!-- tags: 数据仓库 向导函数 -->

| 参数              | 类型     | 说明                                                         |
| ----------------- | -------- | ------------------------------------------------------------ |
| `exp`             | expr     | 函数表达式                                                   |
| `shares_day`      | datetime | 日期,收益计算日                                              |
| `list_day`        | datetime | 日期，在之前上市                                             |
| `s_type`          | int      | 用户自定义，股票类型                                         |
| `sample_select`   | int      | 用户自定义，样本股选择                                       |
| `eps_criterion`   | float    | 实数，绩差股标准。每股收益(摊薄)&lt;EPSCriterion即表示绩差股 |
| `except_no_trade` | bool     | 真假，剔除停牌股                                             |

返回：float

### 示例

范例01：调用函数

```tsl
setsysparam(pn_bk(), "上证A股");
setsysparam(Pn_date(), 20180801T);
return SumOfSector(@close(), 20180801T, 20180801T, 1, 0, 0, 0);
```
