Files
playbook/skills/tsl-api-reference/references/codegen/module/strategy-selection-tools.md
T

16 KiB
Raw Blame History

基础算法 / 策略选股

frameStocksFilter_GetGrouphead(stockpooltable, num, fname_groupby)

声明:function

按原始排序每组最多选前N

参数 类型 说明
stockpooltable db_data 数据表类型,选股池表, 必须含有【代码】 、fname_groupby 字段
num integer 整数,每组个数
fname_groupby string 字符串,分类字段名,默认为"行业"

返回:array

示例

范例01:调用示例

//申万二级行业-每组最多选择前2 条
   r := TSUT_Data_SWCFDATA_DaySample();
   return frameStocksFilter_GetGrouphead(r,2,'行业');

frameStocksFilter_GetGrouptail(stockpooltable, num, fname_groupby)

声明:function

按原始排序每组最多选后N

参数 类型 说明
stockpooltable db_data 数据表类型,选样池表, 必须含有【代码】 、fname_groupby 字段
num integer 整数,每组个数
fname_groupby string 字符串,分类字段名,默认为"行业"

返回:array

示例

范例01:调用示例

//申万二级行业-每组最多选择后2 条
   r := TSUT_Data_SWCFDATA_DaySample();
   return frameStocksFilter_GetGrouptail(r,2,'行业');

范例02:调用示例

//收盘价从小到大排序 、申万二级行业-每组最多选择2 条





    r := TSUT_Data_SWCFDATA_DaySample();
   return frameStocksFilter_GetGroupSortHead(r,'收盘价',2,'行业');

范例03:调用示例

//收盘价从大到小排序 、申万二级行业-每组最多选择2 条
   r := TSUT_Data_SWCFDATA_DaySample();
   return frameStocksFilter_GetGroupdescSortHead(r,'收盘价',2,'行业');

范例04:调用示例

//按市值从大到小排,行业内权重占比累加值>=30 停止,权重标准化
r := TSUT_Data_SWCFDATA_DaySample();
   return frameStocksFilter_GetGroupQuotaSumWeight(r,'市值',30,'行业');

范例05:调用示例

//总选10 个,按照市值从大到小排序,保证每个行业至少2 个,兼容优选
   r := TSUT_Data_SWCFDATA_DaySample();
   SortTableByField(r,'市值',0);
   r[40,'是否优选'] := 1;





   return frameStocksFilter_GetGroupQuotaMin(r,10,2,'行业');

范例06:调用示例

//总选10 个,按照市值从大到小排序,保证每个行业最多2 个
   r := TSUT_Data_SWCFDATA_DaySample();
   SortTableByField(r,'市值',0);
   return frameStocksFilter_GetGroupQuotaMax(r,10,2,'行业');

范例07:调用示例

//总选10 个,考虑行业中性
   r := TSUT_Data_SWCFDATA_DaySample();
   benchmarkWeights := array("申万普钢":0.6,"申万冶钢原料":0.20,"申万特钢Ⅱ":0.20);
   return frameStocksFilter_GetGroupMatchBenchmark(r,10,benchmarkWeights,'行
业','市值');

范例08:调用示例

r := TSUT_Data_SWCFDATA_DaySample();
   SortTableByField(r,'市值',0);
   return frameStocksFilter_GetGroupMatchBenchmark_VG2(r,10,'行业');

frameStocksMark_GetGrouphead(stockpooltable, num, fname_groupby)

声明:function

按原始排序在每个分组内最多标记前 N 条记录

参数 类型 说明
stockpooltable db_data 数据表类型,选股池表, 必须含有【代码】 、fname_groupby 字段
num integer 整数,每组个数
fname_groupby string 字符串,分类字段名,默认为'行业'

返回:array

示例

范例01:调用示例

//申万二级行业-每组最多选择前2 条
   r := TSUT_Data_SWCFDATA_DaySample();
   SortTableByField(r,'市值',0);
   return frameStocksMark_GetGrouphead(r,2,'行业');

frameStocksMark_GetGrouptail(stockpooltable, num, fname_groupby)

声明:function

按原始排序在每个分组内最多标记后 N 条记录

参数 类型 说明
stockpooltable db_data 数据表类型,选股池表, 必须含有【代码】 、fname_groupby 字段
num integer 整数,每组个数
fname_groupby string 字符串,分类字段名,默认为'行业'

返回:array

示例

范例01:调用示例

//申万二级行业-每组最多选择后2 条
   r := TSUT_Data_SWCFDATA_DaySample();
   SortTableByField(r,'市值',0);
   return frameStocksMark_GetGrouptail(r,2,'行业');

范例02:调用示例

r := TSUT_Data_SWCFDATA_DaySample();
   benchmarkWeights := array(" 申万普钢 ":0.6," 申 万 冶 钢 原 料":0.2,"申 万 特 钢
Ⅱ":0.20);
   return frameStocksWeightAdj_GroupNeutralEqual(r," 行业
",benchmarkWeights);

范例03:调用示例

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-个股

参数 类型 说明
stock_id str 字符串,股票代码
end_t date 日期,截止日
rule_arr array 规则列表, 当RuleArr取0 或 空时, 表示使用天软基础排雷指标, 见BasicRiskScreen_RuleCode 若外部给定规则列表, 则为数据表类型: 字段 类型 含义 非空 说明 指标名称 String 指标名称 是 指标公式 String 指标公式 是 满足表达式 1,否则返回 0 指标比例(%) Real 综合指标计算比例 否 缺省时等权计算 算法说明 String 指标算法说明 否 指标算法说明
threshold real 实数,当综合指标> Threshold,则认为属于排雷池;否则为非排雷池

返回:array

示例

范例01:调用示例

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-股票池

参数 类型 说明
stocks array 一维数组,股票池 其他
end_t date 查询区间的结束日期或当前计算日期
rule_arr array 风险筛选规则列表
threshold real 风险筛选使用的数值阈值

返回:array

示例

范例01:调用示例

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-指数

参数 类型 说明
index_id str 字符串,指数代码 其他
end_t date 查询区间的结束日期或当前计算日期
rule_arr array 风险筛选规则列表
threshold real 风险筛选使用的数值阈值

返回:array

示例

范例01:调用示例

Stocks := array("SZ000001","SZ000004");
  EndT := 20260430T;
  RuleArr := array(); //天软基础表
  Threshold := 0.2;
  return Stocks_RiskScreenByEndT(Stocks,EndT,RuleArr,Threshold);

stock_IfMandatoryDelist_Trade(delist_rule)

声明:function

可能强制退市-交易类,根据交易所规则,判断股票是否可能强制退市, 与系统证券、 时间相关

参数 类型 说明
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:调用示例

setsysparam(pn_stock(),"SZ000001");
setsysparam(pn_date(),20260430T);
DelistRule := 0;
return Stock_IfMandatoryDelist_Trade(DelistRule);  //0

stock_IfWarningDelist_Financial(delist_rule)

声明:function

可能被*ST-财务类,根据交易所规则,判断是否有退市警示风险(*ST) ,与系统证券、时间相

参数 类型 说明
delist_rule int 整数,退市警示规则 取值 含义 交易所规则说明 0 利润为负且营收偏低 最近 1 个会计年度的利润总额、 净利润、 扣非净利润孰低为负值, 且扣除后的营业收入 低于 3 亿元(双创 1 亿元、北证 5000 万元) 1 净资产为负 最近 1 个会计年度的期末净资产为负值

返回:bool

示例

范例01:调用示例

setsysparam(pn_stock(),"SZ000004");
setsysparam(pn_date(),20260430T);
DelistRule := 0;
return Stock_IfWarningDelist_Financial(DelistRule);  //1

stock_IfWarningRisk_Financial(delist_rule)

声明:function

可能被 ST-财务类,根据交易所规则,判断是否有其他风险警示(ST),与系统证券、 时间相关

参数 类型 说明
delist_rule int 整数,其他风险警示规则 取值 含义 交易所规则说明 备注 0 连续3 年亏损 最近三个会计年度扣除非经常性损益前后净利润孰 低者均为负值,且最近一个会计年度审计报告显示 公司持续经营能力存在不确定性; 模型未考虑审计结果 1 净资产为负 最近一个会计年度净利润为正值,且合并报表、母 公司报表年度末未分配利润均为正值的公司,其最 近三个会计年度累计现金分红金额低于最近三个会 计年度年均净利润的 30%,且最近三个会计年度累 计现金分红金额低于5000 万元; 双创:3000 万元,最近三个会计年度 累计研发投入占累计营业收入比例在 15%以上或最近三个会计年度累计研发 投入金额在3 亿元以上的除外 注:北交所没有其他风险警示,即无ST,只有*ST

返回:bool

示例

范例01:调用示例

setsysparam(pn_stock(),"SZ000004");
setsysparam(pn_date(),20260430T);
DelistRule := 0;
return Stock_IfWarningRisk_Financial(DelistRule);  //1