feat(tsl-api-reference): expand API and module coverage

This commit is contained in:
csh
2026-08-14 17:12:55 +08:00
parent 8f1056130d
commit 3d3036ebe1
571 changed files with 47842 additions and 14458 deletions
@@ -0,0 +1,359 @@
# 基础算法 / 策略选股
## `frameStocksFilter_GetGrouphead(stockpooltable, num, fname_groupby)`
声明:function
按原始排序每组最多选前N
<!-- tags: 查询 筛选 过滤 次序 证券 个股 股票筛选 量化选股 -->
| 参数 | 类型 | 说明 |
| ---------------- | ------- | ---------------------------------------------------------- |
| `stockpooltable` | db_data | 数据表类型,选股池表, 必须含有【代码】 、fname_groupby 字段 |
| `num` | integer | 整数,每组个数 |
| `fname_groupby` | string | 字符串,分类字段名,默认为"行业" |
返回:array
### 示例
范例01:调用示例
```tsl
//申万二级行业-每组最多选择前2 条
r := TSUT_Data_SWCFDATA_DaySample();
return frameStocksFilter_GetGrouphead(r,2,'行业');
```
## `frameStocksFilter_GetGrouptail(stockpooltable, num, fname_groupby)`
声明:function
按原始排序每组最多选后N
<!-- tags: 查询 筛选 过滤 次序 证券 个股 股票筛选 量化选股 -->
| 参数 | 类型 | 说明 |
| ---------------- | ------- | ---------------------------------------------------------- |
| `stockpooltable` | db_data | 数据表类型,选样池表, 必须含有【代码】 、fname_groupby 字段 |
| `num` | integer | 整数,每组个数 |
| `fname_groupby` | string | 字符串,分类字段名,默认为"行业" |
返回:array
### 示例
范例01:调用示例
```tsl
//申万二级行业-每组最多选择后2 条
r := TSUT_Data_SWCFDATA_DaySample();
return frameStocksFilter_GetGrouptail(r,2,'行业');
```
范例02:调用示例
```tsl
//收盘价从小到大排序 、申万二级行业-每组最多选择2 条
r := TSUT_Data_SWCFDATA_DaySample();
return frameStocksFilter_GetGroupSortHead(r,'收盘价',2,'行业');
```
范例03:调用示例
```tsl
//收盘价从大到小排序 、申万二级行业-每组最多选择2 条
r := TSUT_Data_SWCFDATA_DaySample();
return frameStocksFilter_GetGroupdescSortHead(r,'收盘价',2,'行业');
```
范例04:调用示例
```tsl
//按市值从大到小排,行业内权重占比累加值>=30 停止,权重标准化
r := TSUT_Data_SWCFDATA_DaySample();
return frameStocksFilter_GetGroupQuotaSumWeight(r,'市值',30,'行业');
```
范例05:调用示例
```tsl
//总选10 个,按照市值从大到小排序,保证每个行业至少2 个,兼容优选
r := TSUT_Data_SWCFDATA_DaySample();
SortTableByField(r,'市值',0);
r[40,'是否优选'] := 1;
return frameStocksFilter_GetGroupQuotaMin(r,10,2,'行业');
```
范例06:调用示例
```tsl
//总选10 个,按照市值从大到小排序,保证每个行业最多2 个
r := TSUT_Data_SWCFDATA_DaySample();
SortTableByField(r,'市值',0);
return frameStocksFilter_GetGroupQuotaMax(r,10,2,'行业');
```
范例07:调用示例
```tsl
//总选10 个,考虑行业中性
r := TSUT_Data_SWCFDATA_DaySample();
benchmarkWeights := array("申万普钢":0.6,"申万冶钢原料":0.20,"申万特钢Ⅱ":0.20);
return frameStocksFilter_GetGroupMatchBenchmark(r,10,benchmarkWeights,'行
业','市值');
```
范例08:调用示例
```tsl
r := TSUT_Data_SWCFDATA_DaySample();
SortTableByField(r,'市值',0);
return frameStocksFilter_GetGroupMatchBenchmark_VG2(r,10,'行业');
```
## `frameStocksMark_GetGrouphead(stockpooltable, num, fname_groupby)`
声明:function
按原始排序在每个分组内最多标记前 N 条记录
<!-- tags: 查询 次序 聚合 打标 证券 个股 股票筛选 量化选股 -->
| 参数 | 类型 | 说明 |
| ---------------- | ------- | ---------------------------------------------------------- |
| `stockpooltable` | db_data | 数据表类型,选股池表, 必须含有【代码】 、fname_groupby 字段 |
| `num` | integer | 整数,每组个数 |
| `fname_groupby` | string | 字符串,分类字段名,默认为'行业' |
返回:array
### 示例
范例01:调用示例
```tsl
//申万二级行业-每组最多选择前2 条
r := TSUT_Data_SWCFDATA_DaySample();
SortTableByField(r,'市值',0);
return frameStocksMark_GetGrouphead(r,2,'行业');
```
## `frameStocksMark_GetGrouptail(stockpooltable, num, fname_groupby)`
声明:function
按原始排序在每个分组内最多标记后 N 条记录
<!-- tags: 查询 次序 聚合 打标 证券 个股 股票筛选 量化选股 -->
| 参数 | 类型 | 说明 |
| ---------------- | ------- | ---------------------------------------------------------- |
| `stockpooltable` | db_data | 数据表类型,选股池表, 必须含有【代码】 、fname_groupby 字段 |
| `num` | integer | 整数,每组个数 |
| `fname_groupby` | string | 字符串,分类字段名,默认为'行业' |
返回:array
### 示例
范例01:调用示例
```tsl
//申万二级行业-每组最多选择后2 条
r := TSUT_Data_SWCFDATA_DaySample();
SortTableByField(r,'市值',0);
return frameStocksMark_GetGrouptail(r,2,'行业');
```
范例02:调用示例
```tsl
r := TSUT_Data_SWCFDATA_DaySample();
benchmarkWeights := array(" 申万普钢 ":0.6," 申 万 冶 钢 原 料":0.2,"申 万 特 钢
Ⅱ":0.20);
return frameStocksWeightAdj_GroupNeutralEqual(r," 行业
",benchmarkWeights);
```
范例03:调用示例
```tsl
r := TSUT_Data_SWCFDATA_DaySample();
benchmarkWeights := array("申万普钢":0.6,"申万冶钢原料":0.2,"申万特钢Ⅱ":0.20);
return frameStocksWeightAdj_GroupNeutralFactorWeight(r," 行业 "," 市值
",benchmarkWeights);
```
## `stock_RiskScreenByEndT(stock_id, end_t, rule_arr, threshold)`
声明:function
规则排雷 01-个股
<!-- tags: 筛选 过滤 风险管理 风控 证券 股票筛选 量化选股 行业中性 -->
| 参数 | 类型 | 说明 |
| ----------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `stock_id` | str | 字符串,股票代码 |
| `end_t` | date | 日期,截止日 |
| `rule_arr` | array | 规则列表, 当RuleArr取0 或 空时, 表示使用天软基础排雷指标, 见BasicRiskScreen_RuleCode 若外部给定规则列表, 则为数据表类型: 字段 类型 含义 非空 说明 指标名称 String 指标名称 是 指标公式 String 指标公式 是 满足表达式 1,否则返回 0 指标比例(%) Real 综合指标计算比例 否 缺省时等权计算 算法说明 String 指标算法说明 否 指标算法说明 |
| `threshold` | real | 实数,当综合指标> Threshold,则认为属于排雷池;否则为非排雷池 |
返回:array
### 示例
范例01:调用示例
```tsl
StockID := "SZ000002";
EndT := 20260430T;
RuleArr := array(); //天软基础表
Threshold := 0.2;
return Stock_RiskScreenByEndT(StockID,EndT,RuleArr,Threshold);
```
## `stocks_RiskScreenByEndT(stocks, end_t, rule_arr, threshold)`
声明:function
规则排雷 02-股票池
<!-- tags: 筛选 过滤 风险管理 风控 样本池 证券池 证券 个股 -->
| 参数 | 类型 | 说明 |
| ----------- | ----- | -------------------------------- |
| `stocks` | array | 一维数组,股票池 其他 |
| `end_t` | date | 查询区间的结束日期或当前计算日期 |
| `rule_arr` | array | 风险筛选规则列表 |
| `threshold` | real | 风险筛选使用的数值阈值 |
返回:array
### 示例
范例01:调用示例
```tsl
Stocks := array("SZ000001","SZ000004");
EndT := 20260430T;
RuleArr := array(); //天软基础表
Threshold := 0.2;
return Stocks_RiskScreenByEndT(Stocks,EndT,RuleArr,Threshold);
```
## `index_RiskScreenByEndT(index_id, end_t, rule_arr, threshold)`
声明:function
规则排雷 03-指数
<!-- tags: 筛选 过滤 风险管理 风控 基准指数 指数产品 股票筛选 量化选股 -->
| 参数 | 类型 | 说明 |
| ----------- | ----- | -------------------------------- |
| `index_id` | str | 字符串,指数代码 其他 |
| `end_t` | date | 查询区间的结束日期或当前计算日期 |
| `rule_arr` | array | 风险筛选规则列表 |
| `threshold` | real | 风险筛选使用的数值阈值 |
返回:array
### 示例
范例01:调用示例
```tsl
Stocks := array("SZ000001","SZ000004");
EndT := 20260430T;
RuleArr := array(); //天软基础表
Threshold := 0.2;
return Stocks_RiskScreenByEndT(Stocks,EndT,RuleArr,Threshold);
```
## `stock_IfMandatoryDelist_Trade(delist_rule)`
声明:function
可能强制退市-交易类,根据交易所规则,判断股票是否可能强制退市, 与系统证券、 时间相关
<!-- tags: 检查 判定 验证 买卖 交易策略 个股 退市风险 风险警示 -->
| 参数 | 类型 | 说明 |
| ------------- | ---- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `delist_rule` | int | 整数,退市规则 取值 含义 交易所规则说明 备注 0 成交量偏低 连续 120 个交易日累计成交量低于 500 万股 (双创 200 万股、北证 100 万股) 1 股价偏低 连续 20 个交易日收盘价均低于 1 元(北证连续 60 个交易日) 2 市值偏低 连续 20 个交易日收盘总市值均低于 5 亿元(双创 3 亿元、北证连续 60 个交易日均低于 3 亿元) 3 股东人数偏少 连续 20 个交易日股东人数均少于 2000 人(双创 400 人、北证连续 60 个交易日均少于 200 人) 天软股东人数为报告期数据, 实际使用 最新报告期代替连续 N 个交易日 |
返回:bool
### 示例
范例01:调用示例
```tsl
setsysparam(pn_stock(),"SZ000001");
setsysparam(pn_date(),20260430T);
DelistRule := 0;
return Stock_IfMandatoryDelist_Trade(DelistRule); //0
```
## `stock_IfWarningDelist_Financial(delist_rule)`
声明:function
可能被*ST-财务类,根据交易所规则,判断是否有退市警示风险(*ST) ,与系统证券、时间相
<!-- tags: 检查 判定 验证 风险管理 风控 买卖 交易策略 个股 -->
| 参数 | 类型 | 说明 |
| ------------- | ---- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `delist_rule` | int | 整数,退市警示规则 取值 含义 交易所规则说明 0 利润为负且营收偏低 最近 1 个会计年度的利润总额、 净利润、 扣非净利润孰低为负值, 且扣除后的营业收入 低于 3 亿元(双创 1 亿元、北证 5000 万元) 1 净资产为负 最近 1 个会计年度的期末净资产为负值 |
返回:bool
### 示例
范例01:调用示例
```tsl
setsysparam(pn_stock(),"SZ000004");
setsysparam(pn_date(),20260430T);
DelistRule := 0;
return Stock_IfWarningDelist_Financial(DelistRule); //1
```
## `stock_IfWarningRisk_Financial(delist_rule)`
声明:function
可能被 ST-财务类,根据交易所规则,判断是否有其他风险警示(ST),与系统证券、 时间相关
<!-- tags: 检查 判定 验证 风险管理 风控 买卖 交易策略 个股 -->
| 参数 | 类型 | 说明 |
| ------------- | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `delist_rule` | int | 整数,其他风险警示规则 取值 含义 交易所规则说明 备注 0 连续3 年亏损 最近三个会计年度扣除非经常性损益前后净利润孰 低者均为负值,且最近一个会计年度审计报告显示 公司持续经营能力存在不确定性; 模型未考虑审计结果 1 净资产为负 最近一个会计年度净利润为正值,且合并报表、母 公司报表年度末未分配利润均为正值的公司,其最 近三个会计年度累计现金分红金额低于最近三个会 计年度年均净利润的 30%,且最近三个会计年度累 计现金分红金额低于5000 万元; 双创:3000 万元,最近三个会计年度 累计研发投入占累计营业收入比例在 15%以上或最近三个会计年度累计研发 投入金额在3 亿元以上的除外 注:北交所没有其他风险警示,即无ST,只有*ST |
返回:bool
### 示例
范例01:调用示例
```tsl
setsysparam(pn_stock(),"SZ000004");
setsysparam(pn_date(),20260430T);
DelistRule := 0;
return Stock_IfWarningRisk_Financial(DelistRule); //1
```