# 金融 / 金融工程 / 策略验证 / 指数基金中间函数

## `portfolioBackTesting_indexFund_dataCheck(pf_info_data, index_id)`

声明：function

返回策略验证-指数基金-数据检查, 对组合信息和所有交易明细信息的缺省数据检查，若缺省，则添加默认值

<!-- tags: 金融 金融工程 策略验证 指数基金中间函数 返回 获取 -->

| 参数           | 类型        | 说明                         |
| -------------- | ----------- | ---------------------------- |
| `pf_info_data` | table_array | 数据表类型，组合基本信息(in) |
| `index_id`     | string      | 字符串类型，指数代码         |

返回：table_array

### 示例

范例01：调用 PortfolioBackTesting_IndexFund_DataCheck

```tsl
PfInfoData := array();

return PortfolioBackTesting_IndexFund_DataCheck(PFInfoData, 'SH000300');
```

## `portfolioBackTesting_indexFund_getIndexSamples(pf_info_data, index_id, end_t, r)`

声明：function

返回策略验证-指数基金-得到t-1日指数成分，根据PfInfoData中的字段'指数成分数据来源'来获取指数成分，获取成功，返回1，否则0

<!-- tags: 金融 金融工程 策略验证 指数基金中间函数 返回 获取 -->

| 参数           | 类型        | 说明                                                                                                                                                                                                                         |
| -------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `pf_info_data` | table_array | 数据表类型，组合基本信息(in),必须含有’指数成分数据来源’字段，其中:；0表示使用天软提供的指数成分和权重:即使用流通市值计算权重；1表示使用用户自定义的指数成分和权重(文件格式)；2表示使用用户自定义的指数成分和权重(数据库格式) |
| `index_id`     | string      | 字符串类型，指数代码                                                                                                                                                                                                         |
| `end_t`        | datetime    | 日期型时间                                                                                                                                                                                                                   |
| `r`            | table_array | 数据表类型，返回参数，指数成分数据(out)                                                                                                                                                                                      |

返回：bool

### 示例

范例01：调用 PortfolioBackTesting_IndexFund_GetIndexSamples

```tsl
PfInfoData := array(

    ("初始资金":2000000000.00, "指数成分数据来源":0.00, "初始建仓策略":0.00, "首日建仓比例(%)":20.00, "每日建仓比例变化(%)":0.00, "目标建仓比例(%)":0.00, "涨停不交易":1.00, "跌停不交易":1.00, "停牌不交易":1.00, "成交价类别":1.00, "成交量取整模式":1.00, "分红再投资":0.00, "最大成交金额占可交易金额比例(%)":5.00, "最小调仓比例(%)":0.01, "开仓费率(%)":0.1, "平仓费率(%)":0.1, "指数成分源数据目录":"C:\\Test\\指数成分-输入\\", "指数成分输出目录":"C:\\Test\\指数成分-输出\\", "指数每日交易输出目录":"C:\\Test\\指数交易-输出\\")); PortfolioBackTesting_IndexFund_GetIndexSamples(PfInfoData, 'SH000300', 39086, r);

return r;
```

## `portfolioBackTesting_indexFund_getIndexSamplesByMarketValue(index_id, prev_end_t, end_t)`

声明：function

返回策略验证-指数基金-得到指数IndexId成份股的t-1日流通市值和比例

<!-- tags: 金融 金融工程 策略验证 指数基金中间函数 返回 获取 -->

| 参数         | 类型     | 说明                 |
| ------------ | -------- | -------------------- |
| `index_id`   | string   | 字符串类型，指数代码 |
| `prev_end_t` | datetime | 日期型时间，t-1日    |
| `end_t`      | datetime | 日期型时间，t日      |

返回：table_array

### 示例

范例01：调用 PortfolioBackTesting_IndexFund_GetIndexSamplesByMarketValue

```tsl
return PortfolioBackTesting_IndexFund_GetIndexSamplesByMarketValue(

    'SH000300',

    inttodate(20121029),

    inttodate(20121030));
```

## `portfolioBackTesting_indexFund_getIndexSamplesPercent(pf_info_data, index_id, beg_t, end_t, tp_is)`

声明：function

返回策略验证-指数基金-得到组合配置比例

<!-- tags: 金融 金融工程 策略验证 指数基金中间函数 返回 获取 -->

| 参数           | 类型        | 说明                                                                                                                                                                                                                     |
| -------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `pf_info_data` | table_array | 数据表类型，组合基本信息(in),必须含有’初始建仓策略’,‘首日建仓比例(%)’’每日建仓比例变化(%)’’目标建仓比例(%)’,字段，其中’初始建仓策略’字段取值有下面两种情况:；0表示等比例建仓策略；1表示每日递增建仓策略&每日递减建仓策略 |
| `index_id`     | string      | 字符串类型，指数代码                                                                                                                                                                                                     |
| `beg_t`        | datetime    | 日期型时间，减仓起始日                                                                                                                                                                                                   |
| `end_t`        | datetime    | 日期型时间                                                                                                                                                                                                               |
| `tp_is`        | table_array | 数据表类型，配置比例表                                                                                                                                                                                                   |

返回：table_array

### 示例

范例01：调用 PortfolioBackTesting_IndexFund_GetIndexSamplesPercent

```tsl
PfInfoData := array(

    ("初始资金":2000000000.00, "指数成分数据来源":0.00, "初始建仓策略":0.00, "首日建仓比例(%)":20.00, "每日建仓比例变化(%)":0.00, "目标建仓比例(%)":95.00));

tpIS := array(array('比例(%)':30));

PortfolioBackTesting_IndexFund_GetIndexSamplesPercent(PfInfoData, 'SH000300', INTTODATE(20121029), INTTODATE(20121031), TPIS);

return tpIS;
```
