股票选股公式编写教程(完整版):从零基础到实战策略

在量化交易和自动化投资日益普及的今天,掌握编写股票选股公式的能力,是每一位进阶投资者从“凭感觉交易”迈向“系统化交易”一步。无论是运用通达信、同花顺、东方财富,还是Python(Backtrader, Qlib),其核心逻辑都是相通的。
这篇文章将一份完整的股票选股公式编写教程,涵盖基础语法、常用技术指标逻辑、实战案例解析以及数据验证方法,助你构建属于自己的选股利器。
为什么需要编写选股公式?
手动筛选几千只股票效率极低且容易受情绪干扰。公式选股的优点在于:
1. 客观性:严格执行预设条件,避免追涨杀跌。
2. 高效性:几秒钟内筛选出全市场符合条件的标的。
3. 可回测:经由历史数据验证策略的有效性,优化参数。
基础语法与逻辑结构
虽然不同软件的语言略有差异,但核心逻辑元素一致。以国内最通用的通达信(TDX)语言为例,其基本结构如下:
变量定义
- 收盘价:`CLOSE`
- 开盘价:`OPEN`
- 最高价:`HIGH`
- 最低价:`LOW`
- 成交量:`VOL`
- 涨跌幅:`(CLOSE-REF(CLOSE,1))/REF(CLOSE,1)100`
常用函数
- `REF(X, N)`:引用N天前的数据。 `REF(CLOSE, 1)` 表示昨收。
- `MA(X, N)`:计算X的N日简单移动平均线。
- `COUNT(X, N)`:统计最近N天中满足条件X的天数。
- `CROSS(A, B)`:A上穿B(金叉)。
- `FILTER(X, N)`:将X信号过滤,保留连续N天内的个信号。
输出信号
选股公式需输出一个布尔值(True/False)或数值,用于标记满足条件的股票。使用 `XG: CONDITION;` 来定义选股信号。实战案例:三大经典选股策略
案例1:均线多头排列(趋势跟踪)
逻辑:短期均线在上,中期均线居中,长期均线在下,且所有均线向上发散。
公式代码(通达信格式):
```pascal
MA5 := MA(CLOSE, 5);
MA10 := MA(CLOSE, 10);
MA20 := MA(CLOSE, 20);
MA60 := MA(CLOSE, 60);
{条件:5日线>10日线>20日线>60日线,且今日收盘价站上5日线}
CONDITION := MA5 > MA10 AND MA10 > MA20 AND MA20 > MA60 AND CLOSE > MA5;
{输出选股信号}
XG: CONDITION;
```
适用场景:牛市或强势股的趋势延续阶段。
案例2:放量突破平台(爆发前兆)
逻辑:股价在某一区间横盘震荡后,今日放量突破前期高点。
公式代码:
```pascal
{定义前期高点:最近60天内最高价}
HIGH_60 := HHV(HIGH, 60);
{定义成交量放大:今日成交量大于过去5日均量的2倍}
VOL_MA5 := MA(VOL, 5);
VOL_BREAK := VOL > VOL_MA5 2;
{条件:今日收盘价突破60日高点,且放量}
XG: CLOSE > HIGH_60 AND VOL_BREAK;
```
适用场景:捕捉主力拉升启动点。

案例3:RSI超卖反弹(均值回归)
逻辑:当相对强弱指标(RSI)低于30(超卖区),随后回升至30以上,预示短期反弹。
公式代码:
```pascal
{计算RSI指标,参数14}
RSI14 := SMA(MAX(CLOSE-REF(CLOSE,1),0),14,1)/SMA(ABS(CLOSE-REF(CLOSE,1)),14,1)100;
{条件:昨日RSI<30,今日RSI>=30,形成金叉}
COND := REF(RSI14,1) < 30 AND RSI14 >= 30;
XG: COND;
```
适用场景:震荡市中的短线抄底。
数据说明与策略效果对比表
为了更直观地展示不同选股逻辑的特点,下表总结了常见策略要素与适用环境:
| 策略类型 | 核心指标 | 买入信号逻辑 | 适用市场环境 | 风险等级 | 注意事项 |
|---|---|---|---|---|---|
| 趋势跟踪 | MA, MACD | 均线多头排列,MACD金叉 | 单边上涨行情 | 中 | 震荡市中易频繁止损 |
| 突破交易 | Volume, HHV | 放量突破N日高点 | 结构性行情/个股独立行情 | 高 | 假突破较多,需结合板块效应 |
| 均值回归 | RSI, KDJ | 超卖区金叉 | 震荡市/下跌末期 | 中高 | 需设置严格止损,防止“接飞刀” |
| 资金流向 | DDE, 主力净流入 | 连续3日主力净流入 | 主力建仓期 | 中 | 数据滞后性,需结合基本面 |
注:以上表格仅为逻辑示意,实际回测结果因市场周期、参数设置而异。
如何验证选股公式的有效性?
编写公式只是步,回测(Backtesting)才是关键。下面呢是验证流程:
历史回测
- 方法:使用软件自带的“选股器”或量化平台(如JoinQuant, RiceQuant)进行历史数据测试。
- 指标:关注胜率(Win Rate)、盈亏比(Profit/Loss Ratio)、最大回撤(Max Drawdown)。
样本外测试
- 方法:用2018-2021年的数据优化参数,用2022-2023年的数据验证。
- 目的:防止“过拟合”(Overfitting),即策略只在历史数据中表现好,未来无效。
模拟盘运行
- 方法:在实盘前,用模拟账户运行1-3个月。
- 目的:检验交易执行难度、滑点影响及心理承受力。
常见错误与优化建议
常见错误
1. 未来函数:使用 `ZIG`、`PEAK` 等函数,导致信号滞后或重复,回测结果虚高。 2. 参数过度优化:将参数调至完美匹配历史数据,导致策略脆弱。 3. 忽略交易成本:未计算印花税、佣金,导致高频策略实际亏损。优化建议
- 多因子融合:不要依赖单一指标。,“均线多头” + “RSI<70” + “行业热度前10”。
- 动态参数:根据市场波动率调整均线周期或RSI阈值。
- 加入过滤条件:剔除ST股、次新股、停牌股,提高选股质量。
编写股票选股公式是一项“技术+艺术”的结合。技术在于逻辑的严密性和代码的正确性,艺术在于对市场规律的深刻理解和参数的灵活调整。
记住:
没有永远有效的公式,只有不断进化的系统。
建议初学者从简单的均线策略入手,逐步加入成交量、基本面数据(如PE、ROE),并经由严格回测不断优化。,公式只是辅助工具,真正竞争力在于你对市场的认知和风险管理的纪律。
附录:快速检查清单- [ ] 是否使用了未来函数?
- [ ] 是否考虑了交易成本和滑点?
- [ ] 是否实施了至少3年的历史回测?
- [ ] 是否设置了止损和止盈逻辑?
- [ ] 是否避免了过拟合?
祝你选股顺利,投资成功!
