猛兽派趋势交易精 华 版 · ESSENCE
精华版 / 卷八 工具与公式:把方法写成代码
24

选股公式、股池与调试

卷八 工具与公式:把方法写成代码 · 第 24 节 / 共 29 节

把指标落成可执行的选股器,才算把方法变成生产力。本节覆盖预选股池、净利润跳空、红肥绿瘦量化、调试方法、通达信编程入门与盘中自动触发等,给出的源码逐字保留,未公开的公式以思路与关键数字呈现。
一、预选股池如何设置(三种基本面条件选股器)

欧马体系的底层逻辑是成长性溢出,所以对产业锚定和业绩的持续增长十分强调,设置了严苛的营收和盈利增速条件。但另一方面,当牛市如火如荼时,很多业绩并未出色、或刚第一个季度转暖的股价就起飞,完全无视这类股票也不合理。2025 年度猛兽股轻盘点已有结论:传统趋势类型仍然和业绩高度相关,而堆量趋势类型和业绩相关度很低,所以处理传统类型时仍要约束基本面、设立预选股池,条件可放宽。

预选条件的设计有两个角度:一是从四个季度滚动累加观察营收和盈利是否有增长;二是从单个季度连续递增观察是否有增长。只要有一定增长就算在增长,并不要求像欧奈尔和马克那么严苛。

一、TTM 年度增长,并且要求当季也增长:

预选股池①:TTM年度增长+当季增长
{季度增长}
当季营收:=FINONE(230,0,0);
比季营收:=FINONE(230,1,0);

当季净利润:=FINONE(232,0,0);
比季净利润:=FINONE(232,1,0);

当季扣非:=FINONE(233,0,0);
比季扣非:=FINONE(233,1,0);

DJ1:=(当季营收-比季营收)/ABS(比季营收)*100>8;
DJ2:=(当季净利润-比季净利润)/ABS(比季净利润)*100>10;
DJ3:=(当季扣非-比季扣非)/ABS(比季扣非)*100>10;
DJ4:=当季扣非>3000000;
DJ:= DJ1 AND DJ2 AND DJ3 AND DJ4;

{年度增长}
TTM当年营收:=FINONE(283,0,0);
TTM比年营收:=FINONE(283,1,0);
TTM当年扣非:=FINONE(309,0,0);
TTM比年扣非:=FINONE(309,1,0);

TN1:=(TTM当年营收-TTM比年营收)/ABS(TTM比年营收)*100>5;
TN2:=(TTM当年扣非-TTM比年扣非)/ABS(TTM比年扣非)*100>8;
TN3:=TTM当年扣非 >1000; {TTM当年扣非净利润大于1000万}
TN:= TN1 AND TN2 AND TN3;

TJN: TN AND DJ;

二、连续两个季度有较高增速,或者当季突然出现很高增速:

预选股池②:连续两季高增 或 单季爆发
{季度营收}
当季营收:=FINONE(230,0,0);
比当营收:=FINONE(230,0,4);

上季营收:=FINONE(230,0,1);
比上营收:=FINONE(230,0,5);

{季度扣非}
当季扣非:=FINONE(233,0,0);
比当扣非:=FINONE(233,0,4);

上季扣非:=FINONE(233,0,1);
比上扣非:=FINONE(233,0,5);

{季度营收增长率}
当季营收同比:=(当季营收-比当营收)/ABS(比当营收)*100;
上季营收同比:=(上季营收-比上营收)/ABS(比上营收)*100;

{季度扣非增长率}
当季扣非同比:=(当季扣非-比当扣非)/ABS(比当扣非)*100;
上季扣非同比:=(上季扣非-比上扣非)/ABS(比上扣非)*100;

两季度累积扣非:=当季扣非+上季扣非;

YSZZ:=当季营收同比>10 AND 上季营收同比>8;
KFZZ:=当季扣非同比>12 AND 上季扣非同比>10;
DJZZ:=当季扣非同比>20 AND 当季营收同比>15;
LXZZ:=YSZZ AND KFZZ;

YLZZ:=两季度累积扣非>5000000;

MAO: (LXZZ OR DJZZ) AND YLZZ;
预选股池①与②的选股结果:业绩增长股的初步收敛

以上两个选股器角度不同,但选出的股票大部分重叠,叠加之后股票总数也就 1000 只出头,几乎囊括全市场业绩很好以及还过得去的股票;再在此基础上设置欧马体系的择时公式,选股效率就高很多。

三、连续三年 ROE + 最近 TTM 年 ROE 大于 15(亲近价值派):

预选股池③:连续三年ROE+TTM ROE>15
股东权益:=IF(FINONE(271,0,0)<0,10000000,FINONE(271,0,0));
ROE0:=(FINONE(309,0,0)*10000/股东权益)*100;

ROE1:=FINONE(6,YEAR-1,1231);
ROE2:=FINONE(6,YEAR-2,1231);
ROE3:=FINONE(6,YEAR-3,1231);

ROE0>=15 AND ROE1>=15 AND ROE2>=15 AND ROE3>=15;

这个公式选股收敛程度很高,记得应该只有一百多只股票的样子。提醒:以上所有公式都基于专业财务数据,需要下载专业数据,并跟随财报季发布同步更新。

二、净利润跳空选股公式(含报告日定位问题的解决)

马克在《股票魔法师》用单独章节详尽讨论了业绩跳空缺口,但实战中依然需要非常谨慎——这个指标在特殊市场环境和个股特殊运作节点有效,也经常被短期资金利用做反向操作。低位的跳空比高位的跳空更有意义,甚至可以在 RSR 翻红之前就进入视野,尤其当公司业绩仍保持高速增长。

陶派公式最大问题就是无法准确定位公告日,用了很模糊的方式拟合。为什么准确定位公告日很重要?因为跳空效应最激烈的就是公告日:若公告日在交易,当天就有反馈;若是节假日,一般反馈在节后第一个交易日;若盘后发布,既可能当日提前反馈,也可能次日反馈。

解决思路很简单:先找到公告日之前的最后一个交易日,活用 BARSLAST 函数。JBDAYS:=BARSLAST(DATE<JBDT)-1 准确稳定地获得了 K 线上的定位,同时适用交易日当日反馈和节假日结束后第一日反馈;若要计入次日反馈,增加 BARSLAST(DATE<JBDT)-2 即可。另外,陶派用序列函数 FINVALUE 调公告日,这里改用定期函数 FINONE 更合适(只需最新公告反馈,旧序列已无意义)。在基本面数据上,陶派调用归母净利润增长,快报期又不提供增长率;而《股票魔法师》建议尽量采用扣非净利润增长,至少也得是营业利润增长,因此做了不同数据安排。

净利润跳空(断层)选股公式
JBDT:=1000000+FINONE(314,0,0); {获取最新季报公告日}
JBDAYS:=BARSLAST(DATE<JBDT)-1; {匹配交易日}
JBC:=REF(C,JBDAYS);
JBYC:=REF(C,JBDAYS+1);
JBL:=REF(L,JBDAYS);
JBYH:=REF(H,JBDAYS+1);
JBZF:=(JBC/JBYC-1)*100; {季报公告日涨跌幅}
JBDC:=JBL-JBYH; {季报公告日断层差};
JBZS:=FINVALUE(191); {季报期扣非增速}
季报净利润断层:=JBZF>7 AND JBDC>0 AND JBZS>20; 

YBDT:=1000000+FINONE(313,0,0); {获取最新预报公告日};
YBDAYS:=BARSLAST(DATE<YBDT)-1; {匹配交易日}
YBC:=REF(C,YBDAYS);
YBYC:=REF(C,YBDAYS+1);
YBL:=REF(L,YBDAYS);
YBYH:=REF(H,YBDAYS+1);
YBZF:=(YBC/YBYC-1)*100; {预报公告日涨跌幅}
YBDC:=YBL-YBYH; {预报公告日断层差};
YBZS:=(FINVALUE(342)+FINVALUE(343))/2; {预报期扣非增速中值}
预报净利润断层:=YBZF>7 AND YBDC>0 AND YBZS>20; 

KBDT:=1000000+FINONE(315,0,0); {获取最新快报公告日};
KBDAYS:=BARSLAST(DATE<KBDT)-1; {匹配交易日}
KBC:=REF(C,KBDAYS);
KBYC:=REF(C,KBDAYS+1);
KBL:=REF(L,KBDAYS);
KBYH:=REF(H,KBDAYS+1);
KBZF:=(KBC/KBYC-1)*100; {快报公告日涨跌幅}
KBDC:=KBL-KBYH; {快报公告日断层差};
KBZS:=(FINVALUE(332)-FINVALUE(333))/ABS(FINVALUE(333)); {快报期营业利润环比增速}
快报利润断层:=KBZF>7 AND KBDC>0 AND KBZS>20; 

最新断层:=季报净利润断层 OR 预报净利润断层 OR 快报利润断层;
TTM扣非净利润:=FINVALUE(309);
断层选股: 最新断层 AND TTM扣非净利润>1000;
2025-09-22 · 新易盛一季报业绩跳空:低位跳空比高位跳空更有意义

本期能选出的股票大约是 57 只。净利润断层买入也是一种很难驾驭的方法,一般还是建议谨慎尝试。

三、枢轴点和低吸点(蓝绿钻合并)选股器

使用主图指标 M8 的同学,加了基本面指标显示后如果感觉枢轴点选股速度明显变慢,建议用单独摘出的枢轴点选股器(会编程的可自己从 M8 摘出重写)。枢轴点的定义,价格形态上主要根据缠论的有效底分型结构,再结合量价指标与猛兽动量系统,位置有的和口袋支点重合、有的提前于口袋支点出现,比口袋支点更务实且符合实战需要。低吸点的定义,着眼于极致缩量 + 价格回撤衰竭,同样结合猛兽动量体系,位置主要落在短期高动量突破之后的回调末端;尤其当低吸点之后马上出现枢轴点时,往往是不错的择时位置。

要安装到手机版通达信的,注意相关提示。涉及复制粘贴操作的,一律先框选 CTRL+C 再 CTRL+V,先粘贴到 Windows 记事本,再从记事本复制粘贴到通达信公式编辑界面,这样能确保不发生乱码、代码排列整齐。低吸公式的终极版未公开,但思考过程与源码片段已在前文给出;不要妄想单凭公式就可以傻瓜式捡钱,仍脱离不了量、价、势、锚四要素综合评估。

四、堆量骑点公式的调参与胜率迭代

堆量骑牛模型说到底无非是短期 OVS 起爆之后持续高换手推升,OBV 持续稳定爬升,然后短暂窄幅横盘、博弈第二波。经过一部分微调之后,6.23 日起始点选出股票从 43 只变为 35 只,胜率提高到 68%。

按常规回测复刻,分成七组:

  • 第一组(2012.12.06~2015.06.15 一轮完整上涨):选出 24 只,骑点成功 7 只,胜率 29%;
  • 第二组(2018.10.22~2021.12.01 一轮完整上涨):选出 99 只,骑点成功 18 只,胜率 18%;
  • 第三组(2021.12.01~2024.02.05 一轮完整下跌):选出 99 只,胜率估计不到 10%;
  • 第四组(2024.09.24~2025.06.23 本轮行情到主升之前):选出 90 只,骑点成功 25 只,胜率 28%;
  • 第五组(2015.01.15~2015.06.15 上上轮牛市最后主升段):选出 10 只,骑点成功 3 只,胜率 30%;
  • 第六组(2020.02.04~2020.07.14 上轮牛市主升段之一):选出 17 只,骑点成功 4 只,胜率 24%;
  • 第七组(2025.06.23~2025.08.23 本轮牛市主升段之一):选出 35 只,骑点成功 24 只,胜率 68%。

第一个问题:三轮牛市选出数量逐轮递增约 3 倍多,但股票基数并非 3 倍递增,说明还有别的因素。从计算模型看,关键筛选条件是堆量的起爆 OVS,前两轮行情中各种大牛股的起爆 OVS 普遍偏低,是入选数量少的主因——OVS 采用成交金额和涨幅相乘,涨幅无差异时影响偏低的主要是成交金额,推导这十年交易方式发生了较大变化,容易联想到量化交易发展。第二个问题:最近两个月胜率突然超过 60%,可能是特定情形下的偶然,也可能是交易方式变化后的现象级涌现,或短期资金密度太高、交易宽度不足引起的拥挤。

到目前为止仍无法确定这个模型能否持续有效。参考历史回测数据基本无法使用,且因为是在爆量位置追高、风险极大。鉴于此,骑点公式暂时不作分享,仅停留在理论探讨——这确实是个引人注目的现象。骑点出现并不代表马上就会上涨,公式只是工具,思维才是能力。

五、红肥绿瘦如何量化

红肥绿瘦在欧奈尔和马克的书里反复提到,平时一般扫一眼量柱图大木光景差不多就行,真要精确量化颇费思量。量化它放进选股器,就又是一个缩小选股范围的好条件。

思路:先定义红量柱、再定义绿量柱;当前若是绿量柱,就拿它和前面某周期内最近的红量柱比,比它矮就是绿瘦,前面那根最大红量柱就是红肥;再依时序连续统计,若后面绿量柱一直瘦,红肥绿瘦图谱就一直延续,直到规律被打破。

红肥绿瘦量化(RLGS)
RED:=C>REF(C,1) AND L>REF(L,1);
GREEN:=C<REF(C,1) AND H<REF(H,1);
N0:=BARSLAST(RED);
N1:=8;{参数表}
REDV:=REF(V,N0);
RGV:=IF(GREEN,V>REDV,0);
RLGS:COUNT(RGV,N1);

以上最后的输出 RLGS,如果数值一直是 0,就一直延续红肥绿瘦的图谱;如果大于 0,图谱就结束。最重要的是理解原理、灵活运用、推陈出新应对市场变化,更不要像某博士那边把几个过度形态拟合的粗糙公式奉若神明。

六、井底超量首破年高公式

当下正从第一阶段向第二阶段重大转折,这个公式应该用得着。它有点类似某博士的月线反转信号(以年为单位的底部转折),但某博士的公式太粗糙不堪用,于是自己搞一个。公式基本原型脱胎于《笑傲牛熊》第 5 章「非凡大牛股的三重标准」及本人实战总结,主旨是长期低位中的强势起步突破。

板块中有一些股票先后出现一年以上大底的突破,要引起高度重视——马克的书里反复强调过行业领涨股突破的先后顺序。这个公式每天选出数量很少,过了这个阶段可能一个都选不出来,很正常。建议每天选出的股票不要用清除昨日的方式放进股池,而是采用保留累加的方式,因为底部突破之后大部分股票都会调整,保留一段时间方便观察。选股器较多时建议设置自动选股,不仅方便且有 3 倍加速。

公式之间会相互调用,不会调试的同学慎重选择下载,作者没有时间回答太基础的问题、帮助调试。强烈建议学会读懂源码,至少要学会编程入门(见本节第九节),理解原理后灵活叠加运用。

七、大赢家(领先股池)档案

在《股票魔法师》中,大赢家档案是观察、分析、判断、操盘、复盘的核心工具;马克七年磨砺,转折点正是领悟到聚焦大赢家这一关键步骤。猛兽体系提供的领先股池是一个动态股池,叠加预选股池以后,整个思路就符合了股魔的 SEPA 流程。

当情绪热烈时,选出数量可以有 150+;当情绪冷却时,减少到 50-,可从侧面观察领涨集团的情绪波动,作为逆向操作的参考。但马克讲的是手工收集、把品相好的票加到自选,这个动作仍必要,所以作者有两个档案:一个用公式自动筛选每日更新,另一个从几个选股器挑出自认为上品的票加自选,自选股池总量保持在 100 只以内、尽量克制不超标。

对马克的补充主要是:动量角度的顶背离技巧;量价角度的威科夫技巧(首次供应、放量滞涨、天量杀跌);情绪张力角度的持股线技巧(击穿深度以及次数)。若做了行业 RSR 三级分类匹配并设置了润度指标,可迭代领先股选股公式,使其更准确且灵敏。

八、如何调试公式(以枢轴点为例定位故障)

其实定位故障、调试公式很简单。以枢轴点为例:所有条件用「与」(AND)的逻辑表达,当这些条件都成立时枢轴点就有了。把所有条件语句改成输出语句(去掉等号),就能在副图指标数值栏看到每个条件的输出值;最后一个是枢轴点的总输出,前面条件输出值全部为 1 时,PIVOPOINT 才会变成 1。

  1. 建立一个单独的枢轴点副图公式,找到关键输出语句。
  2. 把条件语句全部改成输出语句(去掉等号),在副图指标上即可看到每个条件的输出值。
  3. 把十字光标定位到「应出现枢轴点」的 K 线上,看副图条件输出中哪个为 0,即为需调试的。
  4. 改那个输出语句,直到它的输出值变为 1;所有条件为 1 时枢轴点就有了。
  5. 把副图指标的枢轴点输出调用到主图公式和选股公式,即可显示并保持一致。
将枢轴点映射到主图
{显示枢轴点}
PIVOPOINT:=PIVOT.PIVOPOINT;
DRAWICON(PIVOPOINT,O*0.98,14);
调试枢轴点:把各条件横列在副图数值栏,逐一排查为0的项
九、通达信编程入门路径与两个小知识

通达信编程语句有两种关键句式:一种是赋值(有 = 号),一种是输出(没有 = 号);没 = 号的语句就是能在主图或副图中显示曲线或符号图标的关键表达式。所有函数都在公式管理器里,只要初中数学和英语还能考个 30 分就问题不大。把赋值语句的 = 号去掉变成输出语句,再在右上角画线方式中设成主图叠加,就能显示。会写语句只是掌握语言,要写出高质量程序,最重要的是头脑中的思维和思想。

两个小知识:公式里 (CLOSE,5) 的数字 5 是写死的参数,也可以写成 (CLOSE,M1)(M1 是任意字母或字母+数字),这就是可调节参数;阈值一般出现在条件语句,比如 S1 := RSR>80,当 RSR>80 时 S1 赋值为 1(阈值满足),否则为 0。改写成固定阈值可以这样:

阈值与参数小知识(固定阈值示例)
SAFE:=BIAS3<53;

改了以后,有些风险偏高的枢轴点就能显示(比如金安国纪最近两个枢轴点)。

十、自定义板块与指数、盘中自动触发与声音提示

自定义创新药板块:创新药概念板块一共 271 只股票,很多根本没有研发管线的公司也在里面。把真正有研发管线的公司梳理出来做成新板块指数,更有利于跟踪分析。步骤:把目标股票加入自定义板块;功能菜单找「组合品种管理」创建板块指数;导入自定义板块成份股;把自定义指数代码加入计算行业 RSR 的文件夹、刷新扩展数据,RSR 强度曲线就出来了;再做成自定义数据,方便个股关联和调用。

盘中自动触发枢轴点并声音提示:当有了不错的枢轴点定义,就希望能在实盘中自动推选并提示操盘者。盘中有信号弹出明显有利于当天买入决策(盘后选股者须等第二天);但盘中信号容易触发冲动交易,毕竟信号只是信号。一般刚开盘不会有提示(除非猛烈放量),大多数信号在下午弹出,也符合早盘卖、尾盘买的一般习惯。每天它会把选出的股票添加到指定自定义板块文件夹,一周下来攒到一些股票,可观察自枢轴点以后的走势反应。

  1. 建立一个条件选股公式(如基于 M8 主图公式)。
  2. 双击启动通达信右下角的条件预警图标。
  3. 点击设置 → 添加公式,进行关键的 3 个设置(需提前创建自定义板块)。
  4. 在其他设置中确认声音提示和弹出提示,点击确定。
十一、两个实用的特征排序与估算公式

阶段性回顾用选股器对全市场筛选,可提取涨幅最大的一群股票放进股池再研究其特征。以下两段分别用于「翻倍筛选」与「特征排序」:

翻倍筛选(最近N日最低到最高涨幅>100%)
S:HHV(C,N)/LLV(C,N)-1>1 AND LLVBARS(C,N)>HHVBARS(C,N);
特征排序(最大涨幅/前置回撤/平均换手率)
涨幅MAX:(HHV(C,N)/LLV(C,N)-1)*100;
前置回撤:(REF(C,45)/REF(C,60)-1)*100;
平均换手率:SUM(HSL,N)/N;

通达信自带的虚拟成交量(金额)估算误差非常大(采用简单线性推算,而日内分时成交量变化是长尾形态、接近指数曲线)。只需要在原计算公式基础上增加一个指数修正项即可,实测几天效果应该不会比开盘啦 APP 差。把完整代码复制后覆盖本 ID 以前分享的 VOL_金 指标第一部分:

全天成交额估算(指数修正版)
TOTAL:=IF(PERIOD=1,5,IF(PERIOD=2,15,IF(PERIOD=3,30,IF(PERIOD=4,60,IF(PERIOD=5,TOTALFZNUM,1)))));
MTIME:=MOD(FROMOPEN,TOTAL);
CTIME:=IF(MTIME<0.5,TOTAL,MTIME);
EXP_RATE:=0.02;
GRADIENT:=10+100*(1-EXP(-CTIME*EXP_RATE)); 
VVOL:IF((CURRBARSCOUNT=1 AND DYNAINFO(8)>1),AMO*(TOTAL+GRADIENT)/(CTIME+GRADIENT),DRAWNULL),NODRAW;
STICKLINE((CURRBARSCOUNT=1 AND DYNAINFO(8)>1),VVOL,0,-1,-1),COLOR00C0C0;

其中 3 个参数:第一个 0.02 是指数项,第二个 10 是常数项,第三个 100 是系数项,都是可修改调节的。

公式只是工具,思维才是能力。把所有选股器、股池、指标串起来,仍需回到量、价、势、锚四要素综合评估,以及对盘面的系统观察和思考。宁可错过、不做,但求减少失误,决不被动交易。

源 自P0470《预选股池如何设置(免费源码)》(2026-01-10)、P0377《猛派净利润跳空选股公式(几乎免费源码)》(2025-09-22)、P0381《枢轴点和低吸点(蓝绿钻合并)选股器(手机可以兼容)》(2025-09-27)、P0363《堆量骑点公式调妥,但担心的事还是发生了》(2025-08-26)、P0323《红肥绿瘦如何量化》(2025-07-03)、P0324《冒头,井底超量首破年高公式》(2025-07-08)、P0624《大赢家(领先股池)档案》(2026-07-03)、P0560《如何调试公式》(2026-04-18)、P0223《如何快速学会通达信编程》(2025-02-04)、P0143《盘中自动触发枢轴点,并且声音提示功能》(2024-06-25)、P0549《自定义创新药板块和指数》(2026-04-07)、P0596《两个小知识》(2026-05-29)、P0308《4.8日以来这波涨幅翻倍以上的股票》(2025-06-14)、P0443《解决一下全天成交额估算的问题》(2025-12-13)
卷八 工具与公式:把方法写成代码 · 本卷其它小节