# 金融 / 金融工程 / 策略验证 / 比例类中间函数

## `portfolioBackTesting_percent_change(pf_info_data, end_t, tp_ccmx, t_percent)`

声明：function

返回策略验证-比例组合-调仓记录,根据调仓前、调仓后数据，确定比例变动

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

| 参数           | 类型     | 说明                       |
| -------------- | -------- | -------------------------- |
| `pf_info_data` | array    | 数据表类型，组合基本信息   |
| `end_t`        | datetime | 日期型时间，截止日         |
| `tp_ccmx`      | array    | 数据表类型，调仓前持仓     |
| `t_percent`    | array    | 数据表类型，调仓后配置比例 |

返回：array

### 示例

范例01：调用 PortfolioBackTesting_Percent_Change

```tsl
a := array(2, 3, 4, 5, 8);
SetSysParam('TZZHRiMatrix', a);
w := array(1, 4, 6, 3, 7);
Return GetTrueRp(w);
// 输出：5.19048
```

## `portfolioBackTesting_percent_dataCheck(pf_info_data, t_percent, t_ta)`

声明：function

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

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

| 参数           | 类型        | 说明                       |
| -------------- | ----------- | -------------------------- |
| `pf_info_data` | table_array | 数据表类型，组合基本信息   |
| `t_percent`    | table_array | 数据表类型，所有交易明细   |
| `t_ta`         | table_array | 数据表类型，所有申购、赎回 |

返回：table_array

### 示例

范例01：调用 PortfolioBackTesting_Percent_DataCheck

```tsl
tPercent := array(('日期':41215, '截止日':nil, '方向':1, '乘数':nil, '保证金比例(%)':nil), ('日期':41213, '截止日':nil, '方向':nil, '乘数':nil, '保证金比例(%)':nil));
tTA := array();
PortfolioBackTesting_Percent_DataCheck(PFInfoData, tPercent, tTA);
return array('检查后的组合信息':PFInfoData, '检查后的申购，赎回':tPercent);
```

## `portfolioBackTesting_percent_setPercentforNOtUserDefined(t_percent, end_t, rate_type)`

声明：function

返回策略验证-比例组合-t期继续持有的or新增的，按不同的加权方法确定比例，根据T日目标持有证券以及资金配比方式得到在EndT的证券配置比例(%)

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

| 参数        | 类型        | 说明                                            |
| ----------- | ----------- | ----------------------------------------------- |
| `t_percent` | table_array | 数据表类型，EndT日的目标持有证券列表            |
| `end_t`     | datetime    | 日期型时间，截止日                              |
| `rate_type` | integer     | 整数，用户自定义，组合比例确定方法，含义如下表: |

返回：table_array

### 示例

范例01：调用 PortfolioBackTesting_Percent_SetPercentforNOTUserDefined

```tsl
tPercent := array(
    ("截止日":43550.0, "代码":"SZ000001"),
    ("截止日":43550.0, "代码":"SZ000002"),
    ("截止日":43550.0, "代码":"SH600000")
);
EndT := inttodate(20190326);
RateType := 0;
Return PortfolioBackTesting_Percent_SetPercentforNOTUserDefined(tPercent, EndT, RateType);
```

## `portfolioBackTesting_percent_toQuantity(pf_info_data, tp_zcpz, t_percent, r_o)`

声明：function

策略验证-比例组合-比例->交易明细,，根据调仓前比例(%)、调仓后比例(%)、调仓前数量、成交价、开仓费率(%)、平仓费率(%)确定配置类组合的交易明细

<!-- tags: 金融 金融工程 策略验证 比例类中间函数 -->

| 参数           | 类型        | 说明                                |
| -------------- | ----------- | ----------------------------------- |
| `pf_info_data` | table_array | 数据表类型，组合基本信息            |
| `tp_zcpz`      | table_array | 数据表类型，调仓前资产配置          |
| `t_percent`    | table_array | 数据表类型，调仓记录                |
| `r_o`          | table_array | 数据表类型，用于内部调试用数据(var) |

返回：table_array

### 示例

范例01：调用 PortfolioBackTesting_Percent_ToQuantity

```tsl
pf_info_data := array(('组合名称': '我的组合', '成交量取整模式': 0));
tp_zcpz := array(('现金市值': 1000000, '资产净值': 1000000));
t_percent := array();
r_o := array();
ret := portfolioBackTesting_percent_toQuantity(pf_info_data, tp_zcpz, t_percent, r_o);
return length(ret);
// 输出：0
```
