电脑端通达信如何通过公式编写实现多因子选股策略?
引言
随着量化投资理念的普及,越来越多的投资者开始尝试使用技术分析与基本面因子相结合的方式进行股票筛选。通达信作为国内主流的股票分析软件之一,不仅提供了强大的行情分析功能,还支持用户自定义公式(TDX 公式语言),使得普通投资者也能构建个性化的多因子选股模型。
本文将详细介绍如何在通达信电脑端通过编写公式来实现一个基础但有效的多因子选股策略,包括因子选择、权重分配、综合评分及最终的选股流程。
一、通达信公式的语言基础
通达信使用的公式语言称为 TDX 公式语言,是一种类 BASIC 的脚本语言,主要用于绘制指标线、设置信号提示以及执行选股任务。
1.1 常用函数介绍
CLOSE:收盘价 OPEN:开盘价 HIGH:最高价 LOW:最低价 VOL:成交量 MA(X, N):X 的 N 日移动平均 REF(X, N):X 的 N 日前值 IF(COND, TRUEVAL, FALSEVAL):条件判断函数 SUM(X, N):N 日内 X 的累计和 HHV(X, N):N 日内的最高值 LLV(X, N):N 日内的最低值此外,通达信还支持引用财务数据,如:
FINANCE(33):每股收益(EPS) FINANCE(34):净利润同比增长率 FINANCE(35):主营业务收入增长率 FINANCE(9):市盈率(PE)这些函数将在构建多因子模型中起到关键作用。
二、多因子选股的基本思路
多因子选股是指利用多个具有预测能力的因子组合,对股票进行打分排序,从而选出最具潜力的投资标的。常见的因子类型包括:
估值因子(如 PE、PB) 成长性因子(如净利润增速、营收增速) 动量因子(如短期涨幅、均线突破) 质量因子(如 ROE、毛利率) 市场情绪因子(如换手率、资金流入)我们将以以下四个因子为例,构建一个多因子选股模型:
市盈率(PE) —— 估值因子 净利润增长率(GROWTH) —— 成长因子 60日涨幅(MOMENTUM) —— 动量因子 ROE(净资产收益率) —— 质量因子三、因子标准化与加权评分方法
为了使不同维度的因子可以进行比较和加权,我们需要对每个因子进行标准化处理。常用的方法包括百分位数法、Z-score 法等。
我们采用百分位数法:对于每只股票,在全市场中计算其因子值所处的百分位,数值越高表示越强(或越低越好,视因子性质而定)。
然后为每个因子赋予一定的权重,例如:
因子名称权重 PE20% GROWTH30% MOMENTUM25% ROE25%最终得分为各因子得分乘以权重后的总和。
四、通达信公式实现步骤详解
4.1 编写单个因子函数
(1)PE(市盈率) PE := FINANCE(9);PE 越小越好,因此我们取其倒数,并做归一化处理:
PE_SCORE := IF(PE > 0, 1 / PE, 0); (2)净利润增长率(GROWTH) GROWTH := FINANCE(34); GROWTH_SCORE := GROWTH; (3)60日涨幅(MOMENTUM) MOMENTUM := (CLOSE – REF(CLOSE, 60)) / REF(CLOSE, 60) * 100; MOMENTUM_SCORE := MOMENTUM; (4)ROE(净资产收益率) ROE := FINANCE(40); // 净资产收益率 ROE_SCORE := ROE;4.2 标准化处理
由于不同因子的单位和分布范围差异较大,需要对其进行标准化。这里我们采用“全市场排名百分比”的方式:
// PE 排名 PE_RANK := RANK(PE_SCORE); // GROWTH 排名 GROWTH_RANK := RANK(GROWTH_SCORE); // MOMENTUM 排名 MOMENTUM_RANK := RANK(MOMENTUM_SCORE); // ROE 排名 ROE_RANK := RANK(ROE_SCORE); // 标准化得分(百分位数) PE_NORM := PE_RANK / COUNT(PE_RANK, 0); GROWTH_NORM := GROWTH_RANK / COUNT(GROWTH_RANK, 0); MOMENTUM_NORM := MOMENTUM_RANK / COUNT(MOMENTUM_RANK, 0); ROE_NORM := ROE_RANK / COUNT(ROE_RANK, 0);注意:RANK() 和 COUNT() 是通达信中的高级函数,用于跨品种排名。
4.3 加权合成综合得分
TOTAL_SCORE := PE_NORM * 0.2 + GROWTH_NORM * 0.3 + MOMENTUM_NORM * 0.25 + ROE_NORM * 0.25;4.4 设置选股条件
我们可以设定一个阈值,比如选择综合得分前30%的股票:
SELECT := TOTAL_SCORE > HHV(TOTAL_SCORE, 0) * 0.7;或者直接输出综合得分并进行人工筛选:
DRAWTEXT(SELECT, LOW, ‘选’), COLORGREEN;五、实际应用与优化建议
5.1 在通达信中创建选股公式
打开通达信 → 公式管理器(Ctrl + F) 新建选股公式 → 输入上述代码 应用后即可在“条件选股”中运行5.2 可进一步优化的方向
因子更新频率控制:避免频繁交易,可设置每月或每季度重新选股。 加入过滤条件:如剔除ST股、市值过小/过大股票等。 引入机器学习打分机制:可通过Python+通达信API训练模型后导入打分结果。 动态调整因子权重:根据市场周期变化调整各因子的重要性。六、总结
通过本文的介绍,我们了解了如何在通达信电脑端使用公式语言构建一个多因子选股模型。从因子选取、标准化处理到综合评分的生成,整个过程体现了量化投资的核心逻辑:系统化、规则化、可回测。
虽然文中提供的只是一个基础模型,但读者可以根据自己的投资风格和市场认知,灵活替换因子、调整权重,甚至引入更多复杂的技术面或基本面因子,打造属于自己的“智能选股系统”。
未来,随着AI和大数据的发展,多因子模型也将不断进化,成为个人投资者提升决策效率的重要工具。
附录:完整通达信选股公式示例
{ 多因子选股公式 } PE := FINANCE(9); PE_SCORE := IF(PE > 0, 1 / PE, 0); GROWTH := FINANCE(34); GROWTH_SCORE := GROWTH; MOMENTUM := (CLOSE – REF(CLOSE, 60)) / REF(CLOSE, 60) * 100; MOMENTUM_SCORE := MOMENTUM; ROE := FINANCE(40); ROE_SCORE := ROE; { 排名 } PE_RANK := RANK(PE_SCORE); GROWTH_RANK := RANK(GROWTH_SCORE); MOMENTUM_RANK := RANK(MOMENTUM_SCORE); ROE_RANK := RANK(ROE_SCORE); { 百分位标准化 } PE_NORM := PE_RANK / COUNT(PE_RANK, 0); GROWTH_NORM := GROWTH_RANK / COUNT(GROWTH_RANK, 0); MOMENTUM_NORM := MOMENTUM_RANK / COUNT(MOMENTUM_RANK, 0); ROE_NORM := ROE_RANK / COUNT(ROE_RANK, 0); { 综合得分 } TOTAL_SCORE := PE_NORM * 0.2 + GROWTH_NORM * 0.3 + MOMENTUM_NORM * 0.25 + ROE_NORM * 0.25; { 选股条件:得分前30% } SELECT := TOTAL_SCORE > HHV(TOTAL_SCORE, 0) * 0.7; SELECT;如需进一步定制因子或结合交易系统,请参考通达信官方文档或联系专业开发者协助。