# 数据仓库 / 判定函数

## `baseExists(info_id, _order)`

返回是否存在某项和报告期无关的数据，例如公司简称、注册地址等

| 参数      | 类型 | 说明                                                                    |
| --------- | ---- | ----------------------------------------------------------------------- |
| `info_id` | int  | 信息类别代码，infoID参见附录。                                          |
| `_order`  | int  | 省略此参数取最后一次更新，否则为第几条数据。0表示第一条，-1表示最后一条 |

返回：bool

### 示例

```tsl
setsysparam(pn_stock(),'SZ000002');
if BaseExists(10002) then
return base(10002);
```

## `basicIdExists(id)`

返回某信息ID是否存在

| 参数 | 类型 | 说明                 |
| ---- | ---- | -------------------- |
| `id` | int  | 整数，某信息的ID号。 |

返回：bool

## `continuedMatchOfRepPeriod(expr, beg_report, end_year)`

判断在区间BegReport到EndYear中是否存在运行表达式Exp的值，若存在返回1，否则返回0。

| 参数         | 类型 | 说明               |
| ------------ | ---- | ------------------ |
| `expr`       | any  | 布尔公式表达式     |
| `beg_report` | any  | 开始期，开始报告期 |
| `end_year`   | any  | 年份，截止年份     |

返回：any

## `getExpCaceStr(exp, cache_str)`

判断是否缓存以及返回缓存串。

| 参数        | 类型   | 说明     |
| ----------- | ------ | -------- |
| `exp`       | string | 字符串。 |
| `cache_str` | string | 字符串。 |

返回：string

## `isBalanceInfoId(infold)`

是否是资产负债表指标。是则返回1，否则返回0。

| 参数     | 类型 | 说明             |
| -------- | ---- | ---------------- |
| `infold` | int  | 基本面，基本面ID |

返回：bool

## `isCashFlowInfoId(infold)`

判断是否是现金流量表指标，如果是则返回1，否则返回0。

| 参数     | 类型 | 说明             |
| -------- | ---- | ---------------- |
| `infold` | int  | 基本面，基本面ID |

返回：bool

## `isFinancialInfoId(info_id)`

是否是主要财务指标（仅Wind适用），兼容Wind的主要财务指标也计算最近12个月的数据。

| 参数      | 类型 | 说明           |
| --------- | ---- | -------------- |
| `info_id` | int  | 整数。基本面Id |

返回：int

## `isFundBalanceSheetInfoId(infold)`

是否是基金资产负债表字段。是则返回1，否则返回0。

| 参数     | 类型 | 说明 |
| -------- | ---- | ---- |
| `infold` | int  | 整数 |

返回：bool

## `isFundInterestInfoId(infold)`

是否是基金利润分配表表字段。是则返回1，否则返回0。

| 参数     | 类型 | 说明 |
| -------- | ---- | ---- |
| `infold` | int  | 整数 |

返回：bool

## `isInterestInfoId(infold)`

是否是利润分配表指标。是则返回1，否则返回0。

| 参数     | 类型 | 说明             |
| -------- | ---- | ---------------- |
| `infold` | int  | 基本面，基本面ID |

返回：bool

## `isMainReportId(infold)`

判断是否是主要报告指标，如果是返回1，否则返回0。指标包括资产负债表，利润分配表，现金流量表，基金资产负债表，基金利润分配表，股票财务指标。

| 参数     | 类型 | 说明             |
| -------- | ---- | ---------------- |
| `infold` | int  | 基本面，基本面ID |

返回：bool

## `isStock(stock_id)`

判定函数相关函数。

| 参数       | 类型   | 说明 |
| ---------- | ------ | ---- |
| `stock_id` | string |      |

返回：bool

## `isStockFinancialItem(infold)`

是否是股票财务指标。是则返回1，否则返回0。

| 参数     | 类型 | 说明 |
| -------- | ---- | ---- |
| `infold` | int  | 整数 |

返回：bool

## `isTimePeriodInfoId(info_id)`

是否是时段指标。

| 参数      | 类型 | 说明             |
| --------- | ---- | ---------------- |
| `info_id` | int  | 整数。基本面Id。 |

返回：bool

## `isTradeDay(date)`

如果当前股票在Date指定日交易则返回1，否则返回0。 该函数的判断是依据指定日是否有日线行情数据，不管当日是否有成交量。 比如期货不活跃时，当日可能没有成交量，但是也有行情数据，则判断当日也是交易日。 一般用于判断当前股票在指定日是否停牌。 支持周期：日线及更低频，比如周线、月线等。若是周线，则判断这一周内是否有日线数据，若有则为真，若一条都没有则为假。即，不支持高频的判定。

| 参数   | 类型     | 说明             |
| ------ | -------- | ---------------- |
| `date` | datetime | 日期类型，日期； |

返回：bool

### 示例

```tsl
setsysparam(pn_stock(),'SZ000002');
return IsTradeDay(inttodate(20110828));//返回0
```

## `isValidCode(id, full_id)`

判断是否为合法的代码。判断是否合法代码的规则与isstock类似。如果ID是合法的代码，FullID返回的值为标准化后的天软代码，否则为0。

| 参数      | 类型   | 说明                                 |
| --------- | ------ | ------------------------------------ |
| `id`      | string | 字符串，证券代码；                   |
| `full_id` | string | 字符串，标准化后的证券代码，可省略； |

返回：bool

## `isValidPositiveValue(v)`

判断是否为大于0的实数，如果是返回1，否则返回0。

| 参数 | 类型 | 说明 |
| ---- | ---- | ---- |
| `v`  | int  | 实数 |

返回：bool

## `isValidValue(v)`

判断V是否是一个数字类型(整数或者实数)，如果是非空实数，则返回1，否则返回0。

| 参数 | 类型 | 说明 |
| ---- | ---- | ---- |
| `v`  | int  | 整数 |

返回：bool

## `reportExists(info_id, report_id)`

返回是否存在某个报告期的某项财务指标

| 参数        | 类型 | 说明                                                                                                                                                                               |
| ----------- | ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `info_id`   | int  | 信息类别代码，包括财务指标和其他信息，每项信息有一个InfoID编号，infoID参见附录。                                                                                                   |
| `report_id` | int  | 报告期代码，一般为YEAR + Code指定，Code为0630表示中报，1231表示年报。0331第一季度，0930第三季度。0001为自然周第一周周报，0002为第二周，以此类推如果ReportID，使用0表示最新报告期。 |

返回：bool

### 示例

```tsl
setsysparam(pn_stock(),'SH601888');
return ReportExists(18007,20101231); //返回1,是
```

## `reportHistExists(infoid)`

返回某项数据是否存在有报告

| 参数     | 类型 | 说明                           |
| -------- | ---- | ------------------------------ |
| `infoid` | int  | 信息类别代码，infoID参见附录。 |

返回：bool

### 示例

```tsl
setsysparam(pn_stock(),'SZ300002');
return ReportHistExists(18007);
```

## `testStock(stock_id)`

判定函数相关函数。

| 参数       | 类型   | 说明 |
| ---------- | ------ | ---- |
| `stock_id` | string |      |

返回：bool

## `validFullCode(stock_id)`

判定函数相关函数。

| 参数       | 类型   | 说明 |
| ---------- | ------ | ---- |
| `stock_id` | string |      |

返回：string
