在股票分析软件中,指标公式用于在图表上显示各种技术分析信号,而选股公式则用于从全市场筛选满足特定条件的股票。许多投资者希望将已有的指标公式改造成选股公式,自动发现潜在交易机会。实际上,这两类公式的底层语言和逻辑结构是相通的,只需掌握关键转换方法,即可将任意指标公式变为选股利器。
一、理解指标公式与选股公式的差异指标公式的输出通常是绘制在K线图上的连续线条、柱状图或图标,例如MACD、KDJ、RSI等。它们可以被赋予不同颜色和粗细,用于视觉观察。而选公式的核心要求是:在满足某一条(或一组)条件时,返回一个“真值”或“1”,在其他情况下返回“假值”或“”。选股公式只关心条件是否成立,不关心具体数值大小。
因此,转换的本质是:将指标公式中的绘图语句(如DRAWLINE、STICKLINE、PLOYLINE等)替换为条件判断语句,或者直接利用指标公式中计算出来的变量作为选股条件。
- 明确选股目标:你想选出什么状态的股票?是MACD金叉、RSI超卖、均线多头排列,还是突破布林带?目标越具体,转换越简单。
- 安装可用的股票软件:本文以通达信、同花顺等主流软件为例。大多数软件都内置了公式编辑器,支持编写指标公式和选股公式3. 找到原始指标公式源码:如果你使用的是系统自带指标,一般无法直接查看和修改内部代码,但可以在网络上搜索到同款公式源码;如果你自己编写过指标,则直接使用源码。
在通达信菜单栏点击“功能” -> “公式系统” “公式管理器”,或者在键盘上输入快捷键Ctrl+F。在弹出的窗口中,先点击“条件选股公式”标签页,然后点击“新建”按钮。
此时你会看到一个编辑器窗口,需要填写以下内容:
- 公式名称:例如“MACD金叉选股”。
- 描述:可留空或简单说明。
- 公式代码:这是核心区域,用于粘贴和修改代码。
假设你有一个MACD指标公式源码如下:
DIF:EMA(CLOSE,12)-EMA(OSE,26);
DEA:EMA(DIF,9);
MACD:(DIF-DEA)*2,COLORSTICK;
这个公式绘制了三条线:DIF、DE和MACD柱状体。现在要改为选股条件“DIF上穿DE(金叉)”,则改写为:
DIF:=EMA(CLOSE,12)-EMA(CLOSE,26);
DEAEMA(DIF,9);
CROSS(DIF,DEA);
注意几点:
- 原公式中
DIF:和DEA:后的冒号代表输出变量,在选股公式中我们不需要输出,因此改为:=(“冒号等号”是中间赋值,不输出)。 - 原公式中
MACD行用于画柱状图,在选股公式中完全不需要,直接删除。 - 最后一行
CROSS(DIF,DEA)就是选股条件。当DIF上穿DEA时该表达式返回1,否则返回。 - 不需要写
DRAWICON、STICKLINE等绘图函数,因为选股公式不负责画图。
如果指标公式中包含多个绘图语句,需要逐步识别哪些变量代表了选股条件。例如一个指标的源码有底背离提示,里面可能用了DRAWTEXT函数画文字,这时需将画文字的条件表达式提取出来作为选股条件。常见绘图语句替换规则:
DRAWKLINE(...):绘制K线,删除。STICKLINE(COND,PRICE1,PRICE2,WIDTH,EMPTY)绘制柱状线,删除或提取COND条件。DRAEXT(COND,PRICE,TEXT):绘制文字,提取其中的COND作为选股条件。DRAWICON(COND,PRICE,TYPE):绘制,提取COND。PLOYLINE(COND,PRICE):绘制折线,一般不用作选股。
FILTER函数来过滤信号,建议保留该过滤逻辑,以避免连续出现重复信号。
第五步:测试并运行选股。
公式编写完成后,点击“确定”保存。然后回到行情界面,点击“功能” -> “选器” -> “条件选股”(或直接按Ctrl+T),在“条件选股公式”下拉菜单中选择刚才创建的公式,设置选股周期(日线、周线等),添加选股范围(例如沪深A股),最后点击“执行选股”。软件会自动筛选出当前所有满足条件的股票,并显示在列表中。
- 避免未来函数:未来函数是指引用了未来数据(如
PEAK、TROUGH、BACKSET等)的函数,它们会在当前K线上引入后续K线才确定的值,导致选股结果在历史回测中看似精准,实则在实盘无法使用。需要确保中使用的所有函数都是基于当前或过去数据的,即不存在未来函数。在通达信中可通过“公式检测”功能检查未来函数。 - 考虑交易状态:选股公式默认在完成当天K线后进行计算。若想在盘中实时选股,需注意选股周期与数据刷新的设置,部分信号(如当日收盘价附近的信号)可能在盘中尚未稳定。
- 组合多个条件:一个指标公式往往包含多个信号,你可以用
AND、OR、NOT逻辑运算符组合多个条件,例如“MACD金叉 AND RSI超卖”。注意优先级,必要时用括号分隔。 - 参数化处理:如果指标公式含有参数(如
N:=5;),在选股公式中同样可以保留参数,并设置参数默认值和范围。这样可以让选股公式适应不同周期和不同灵敏度需求。 - 和纵向对比:某些指标公式中涉及个股与所属板块指数的比较,或使用
INDEXC、BLOCKSETNUM等函数。这类公式在选股时要求软件能够正确识别当前股票所属市场及板块,否则可能出错。
- 问题1:公式能通过编译,但选股结果为空。 原因可能是条件过于苛刻,或者公式中使用了非法的时间周期。例如,日线选股公式中的
TIME函数在周线周期下会报错。解决建议:简化条件,检查周期设置。 - 问题2:选股结果包含大量ST股或次新股,不符合预期。 :在选股器中添加“过滤ST”、“过滤停牌”等选项,或者在公式中加入条件
NOT(NAMELIKE('ST'))(通达信语法)来排除ST。 - 问题3:指标公式中使用了报表函数(如
FINANCE、CAPITAL等),但选股范围内包含不同市场,可能导致数据不一致。 建议在公式中明确限制市场类别,或改为使用统一的财务数据接口。
有些指标会依赖于周线或月线级别数据。在通达信选股公式中,可直接使用#运算符跨周期引用数据。例如在日线选股中引用MACD周线金叉:
周DIF:="MACD.DIF#WEEK";
周DEA:MACD.DEA#WEEK";
周金叉:=CROSS周DIF,周A);
日金叉:=CROSS(MACD.DIF,MACD.DEA);
选股:周金叉 AND 日金叉;
需要注意的是,跨周期引用数据在盘中选股时可能延迟更新,务必确认数据联动设置。
七、最后的建议指标公式转选股公式并不是简单的文字替换,而是一种逻辑重构。建议在转换前彻底理解指标所表达的市场含义。比如一个指标包含多条线,每条线的交叉、位置高低、斜率都可能代表不同的交易信号。当你明确要用哪一条线、哪一个交叉点来作为买入条件时,转换过程就会变得非常明确。
如果你不具备编程序的基础,也可以利用软件内置的“条件选股”向导,手动选择指标和条件,软件会自动生成选股公式。不过这种方式仅适用于常用简单条件,复杂逻辑依然需要亲手编写代码。
坚持“先小资金测试,再逐步优化”的原则,将选股公式放入历史行情中进行回测,观察其胜率、盈亏比等统计结果。一旦发现逻辑漏洞或信号失真,及时修改公式。只有经过千锤百炼的选股公式,才能稳定盈利的强大工具。







