# 金融 / 金融工程 / 指数研究 / 中间函数

## `deleteDataOutOfScopes(t_1, t_2)`

声明：function

删除多余日期

<!-- tags: 金融 金融工程 指数研究 中间函数 查找 搜索 lookup 删除 移除 -->

| 参数  | 类型        | 说明                       |
| ----- | ----------- | -------------------------- |
| `t_1` | table_array | 数据表，必须含有’time’字段 |
| `t_2` | table_array | 数据表，必须含有’time’字段 |

返回：table_array

### 示例

范例01：调用函数

```tsl
t1 := array(('s':0, 'time':41201), ('s':6, 'time':41202), ('s':2, 'time':41203), ('s':8, 'time':41204), ('s':2, 'time':41207), ('s':3, 'time':41208));
t2 := array(('s':2, 'time':41101), ('s':7, 'time':41202), ('s':9, 'time':41205), ('s':3, 'time':41206), ('s':5, 'time':41207), ('s':1, 'time':41209));
deleteDataOutOfScopes(t1, t2);
return array(t1, t2);
```

## `fileterValue(v, w)`

声明：function

返回找出需要过滤处理的日期

<!-- tags: 金融 金融工程 指数研究 中间函数 过滤 筛选 filter 查找 搜索 lookup 返回 获取 -->

| 参数 | 类型        | 说明                       |
| ---- | ----------- | -------------------------- |
| `v`  | table_array | 数据表，必须含有’time’字段 |
| `w`  | array       | 一维日期型时间数组         |

返回：table_array

### 示例

范例01：调用 FileterValue

```tsl
v := array(('s':0, 'time':41201), ('s':6, 'time':41202), ('s':2, 'time':41203), ('s':8, 'time':41204), ('s':2, 'time':41207), ('s':3, 'time':41208));
w := array(41101, 41202, 41205, 41206, 41207, 41209);
FileterValue(v, w);
```

## `filterValueByCycle(t, beg_t, end_t, cycle_name)`

声明：function

按照周期取数据

<!-- tags: 金融 金融工程 指数研究 中间函数 过滤 筛选 filter 查找 搜索 lookup -->

| 参数         | 类型        | 说明                       |
| ------------ | ----------- | -------------------------- |
| `t`          | table_array | 数据表，必须含有’time’字段 |
| `beg_t`      | t_date_time | 日期型时间，选取开始时间   |
| `end_t`      | t_date_time | 日期型时间，选取截止时间   |
| `cycle_name` | string      | 字符串，周期函数           |

返回：table_array

### 示例

范例01：调用函数

```tsl
setSysParam(PN_Stock(), 'SZ000002');
setSysParam(PN_DATE(), intToDate(20121029));
t := nDay(20, 'time', dateToInt(sp_time()), 'c', close());
filterValueByCycle(t, intToDate(20120918), intToDate(20121029), cy_week());
return t;
```

## `getMaxListedDate(stock_arr)`

声明：function

获取股票列表StockArr中最晚的上市日值

<!-- tags: 金融 金融工程 指数研究 中间函数 查找 搜索 lookup 获取 查询 -->

| 参数        | 类型  | 说明           |
| ----------- | ----- | -------------- |
| `stock_arr` | array | 一维字符串数组 |

返回：t_date_time

### 示例

范例01：调用函数

```tsl
return getMaxListedDate(array("SZ000920", "SH600718", "SH600900"));
```

## `indexDataToShowable(index_table, base_value)`

声明：function

把计算存贮好的指数数据转换

<!-- tags: 金融 金融工程 指数研究 中间函数 查找 搜索 lookup 计算 求解 -->

| 参数          | 类型        | 说明                                            |
| ------------- | ----------- | ----------------------------------------------- |
| `index_table` | table_array | 数据表，指数结果表，必须含有’Date’，’Close’字段 |
| `base_value`  | real        | 实数，基准值                                    |

返回：table_array

### 示例

范例01：调用 IndexDataToShowable

```tsl
SetSysParam(PN_Stock(), 'SZ000002');
SetSysParam(PN_DATE(), IntToDate(20121026));
t := Nday(20, 'Date', sp_time(), 'Close', close());
Return array('转换前':t, '转换后':IndexDataToShowable(t, 1000));
```

## `indexLineMerge(bk_name, bk_value, index_name, index_value, show_type)`

声明：function

返回两个指数迭加

<!-- tags: 金融 金融工程 指数研究 中间函数 查找 搜索 lookup 返回 获取 -->

| 参数          | 类型        | 说明                                                   |
| ------------- | ----------- | ------------------------------------------------------ |
| `bk_name`     | string      | 字符串，板块名称                                       |
| `bk_value`    | table_array | 数据表，计算出来的板块指数,必须含有’time’，’close’字段 |
| `index_name`  | string      | 字符串，指数代码                                       |
| `index_value` | table_array | 数据表，指数数值,必须含有’time’，’close’字段           |
| `show_type`   | integer     | 用户自定义，返回类型，含义如下表:                      |

返回：table_array

### 示例

范例01：调用函数

```tsl
setSysParam(PN_Stock(), 'SZ000002');
setSysParam(PN_DATE(), intToDate(20121026));
bk_value := nDay(20, 'time', sp_time(), 'close', close());
setSysParam(pn_stock(), 'SH000001');
index_value := nDay(20, 'time', sp_time(), 'close', close());
return indexLineMerge('SZ000002', bk_value, 'SH000001', index_value, 1);
```

## `kLineDataForIndex(stock_id, beg_t, end_t)`

声明：function

返回K线数据（指数专用）

<!-- tags: 金融 金融工程 指数研究 中间函数 查找 搜索 lookup 返回 获取 -->

| 参数       | 类型        | 说明                 |
| ---------- | ----------- | -------------------- |
| `stock_id` | string      | 字符串，股票代码     |
| `beg_t`    | t_date_time | 日期型时间，开始日期 |
| `end_t`    | t_date_time | 日期型时间，截止日期 |

返回：table_array

### 示例

范例01：调用 KLineDataForIndex

```tsl
Return KLineDataForIndex("SH600206", inttodate(20120618), inttodate(20120926));
```

## `kLineMerge(bk_name, bk_value, index_name, begt, endt, show_type)`

声明：function

返回板块指数与大盘指数迭加

<!-- tags: 金融 金融工程 指数研究 中间函数 查找 搜索 lookup 返回 获取 -->

| 参数         | 类型        | 说明                                                    |
| ------------ | ----------- | ------------------------------------------------------- |
| `bk_name`    | string      | 字符串，板块名称                                        |
| `bk_value`   | table_array | 数据表，计算出来的板块指数，必须含有’time’，’close’字段 |
| `index_name` | string      | 字符串，指数代码                                        |
| `begt`       | t_date_time | 日期型时间，开始日期                                    |
| `endt`       | tdate_time  | 日期型时间，截止日期                                    |
| `show_type`  | integer     | 用户自定义，返回类型，0表示图形，1表示数据              |

返回：table_array

### 示例

范例01：调用 KLineMerge

```tsl
SetSysParam(PN_Stock(), 'SH000001');
SetSysParam(PN_DATE(), IntToDate(20121026));
BkValue := nday(20, 'time', sp_time(), 'close', close());
return KLineMerge("SH000001", BkValue, "SH600718", inttodate(20120618),
    inttodate(20121026), 1);
```

## `manyBkLineMerge(r, show_type)`

声明：function

返回指数叠加结果处理，用于计算复合指数的中间过程

<!-- tags: 金融 金融工程 指数研究 中间函数 查找 搜索 lookup 返回 获取 -->

| 参数        | 类型        | 说明                         |
| ----------- | ----------- | ---------------------------- |
| `r`         | table_array | 数据表，必须含有’value’字段  |
| `show_type` | integer     | 用户自定义，0为图形，1为数据 |

返回：table_array

### 示例

范例01：调用函数

```tsl
t := array(
    ("time":20061229, "close":2675.47),
    ("time":20070104, "close":2715.72),
    ("time":20070105, "close":2641.33),
    ("time":20070108, "close":2707.2),
    ("time":20070109, "close":2807.8),
    ("time":20070110, "close":2825.58),
    ("time":20070111, "close":2770.11),
    ("time":20070112, "close":2668.11),
    ("time":20070115, "close":2794.7),
    ("time":20070116, "close":2821.02),
    ("time":20070117, "close":2778.9),
    ("time":20070118, "close":2756.98));
t1 := array(
    ("time":20061229, "close":1000),
    ("time":20070104, "close":1017.56),
    ("time":20070105, "close":961.42),
    ("time":20070108, "close":978.96),
    ("time":20070109, "close":1022.61),
    ("time":20070110, "close":1017.87),
    ("time":20070111, "close":986.16),
    ("time":20070112, "close":947.22),
    ("time":20070115, "close":991.12),
    ("time":20070116, "close":988.37),
    ("time":20070117, "close":971.06),
    ("time":20070118, "close":948.98),
    ("time":20070119, "close":970.16));
r := array(("Name":"SH000001", "Value":t), ("Name":"复合指数", "Value"
    :t1));
return manyBkLineMerge(r, 1);
```

## `setToFirstValue(t_1, t_2)`

声明：function

返回归一处理，用于在计算复合指数时，在基准数据t2的基础上对t1归一化

<!-- tags: 金融 金融工程 指数研究 中间函数 查找 搜索 lookup 返回 获取 -->

| 参数  | 类型        | 说明                        |
| ----- | ----------- | --------------------------- |
| `t_1` | table_array | 数据表，必须含有’close’字段 |
| `t_2` | table_array | 数据表，必须含有’close’字段 |

返回：table_array

## `volDataForIndex(stock_id, beg_t, end_t)`

声明：function

返回K线数据（指数专用）

<!-- tags: 金融 金融工程 指数研究 中间函数 查找 搜索 lookup 返回 获取 -->

| 参数       | 类型        | 说明                 |
| ---------- | ----------- | -------------------- |
| `stock_id` | string      | 字符串，股票代码     |
| `beg_t`    | t_date_time | 日期型时间，开始日期 |
| `end_t`    | t_date_time | 日期型时间，截止日期 |

返回：table_array

### 示例

范例01：调用函数

```tsl
return volDataForIndex("SH600206", intToDate(20120618), inttodate
    (20120926));
```
