选股公式、股池与调试
卷八 工具与公式:把方法写成代码 · 第 24 节 / 共 29 节
欧马体系出发点是成长性溢出,故强调产业锚定与业绩持续增长,设严苛营收盈利增速。但牛市如火如荼时,许多业绩不出色或刚首季转暖的股价就起飞,无视不合理。2025 猛兽股轻盘点结论:传统趋势仍与业绩高度相关,堆量趋势相关度低,故传统类型仍约束基本面、设预选股池,条件可放宽。
预选条件两角度:四季度滚动累加看营收盈利是否增长;单季连续递增看是否增长。有一定增长即可,不要求像欧奈尔和马克那么严苛。
一、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(亲近价值派):
股东权益:=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;
本期约选 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%,可能特定情形偶然,也可能交易方式变化后的现象级涌现,或短期资金密度高、宽度不足致拥挤。
到目前为止仍无法确定这个模型能否持续有效。参考历史回测数据基本无法使用,且因在爆量位置追高、风险极大。鉴于此,骑点公式暂时不作分享,仅停留在理论探讨,这确实是个引人注目的现象。骑点出现并不代表马上就会上涨,公式只是工具,思维才是能力。
红肥绿瘦在欧奈尔和马克书里反复提到,平时扫一眼量柱图大木光景差不多就行,真要精确量化颇费思量。量化进选股器,又是缩小范围的好条件。
思路:先定义红量柱、再定义绿量柱;当前绿量柱,拿它与前面周期内最近红量柱比,比它矮即绿瘦,前面最大红量柱即红肥;依时序连续统计,后面绿量柱一直瘦,图谱就延续,直到规律打破。
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。
- 建立一个单独的枢轴点副图公式,找到关键输出语句。
- 把条件语句全部改成输出语句(去掉等号),在副图指标上即可看到每个条件的输出值。
- 把十字光标定位到「应出现枢轴点」的 K 线上,看副图条件输出中哪个为 0,即为需调试的。
- 改那个输出语句,直到它的输出值变为 1;所有条件为 1 时枢轴点就有了。
- 把副图指标的枢轴点输出调用到主图公式和选股公式,即可显示并保持一致。
{显示枢轴点}
PIVOPOINT:=PIVOT.PIVOPOINT;
DRAWICON(PIVOPOINT,O*0.98,14);
通达信编程两种关键句式:赋值(有 = 号),输出(没 = 号);没 = 号的语句是能在主图或副图显示曲线或图标的关键表达式。函数都在公式管理器里,初中数学英语考 30 分就够。把赋值 = 号去掉变输出,右上角画线方式设主图叠加,就能显示。会写语句只掌握语言,写好程序最重要的是头脑中的思维。
两个小知识:公式里 (CLOSE,5) 的 5 是写死参数,也可写 (CLOSE,M1)(M1 任意字母或字母+数字),即可调节参数;阈值一般出现在条件语句,如 S1 := RSR>80,RSR>80 时 S1 赋 1,否则 0。改写成固定阈值:
SAFE:=BIAS3<53;改后,有些风险偏高的枢轴点就能显示(如金安国纪最近两个)。
自定义创新药板块:创新药概念板块共 271 只,许多无研发管线的公司也在内。把真有研发管线的梳理出来做成新板块指数,更利跟踪。步骤:目标股加自定义板块;功能菜单「组合品种管理」创建板块指数;导入成份股;把自定义指数代码加进计算行业 RSR 的文件夹、刷新扩展数据,RSR 曲线即出;再做成自定义数据,方便关联调用。
盘中自动触发枢轴点并声音提示:有了不错的枢轴点定义,希望实盘自动推选并提示。盘中有信号弹出利当天买入(盘后选股须等次日);但盘中信号易触发冲动,毕竟信号只是信号。一般刚开盘无提示(除非猛烈放量),多数下午弹出,也合早盘卖、尾盘买习惯。每天把选出股加进指定文件夹,一周攒一些,可观枢轴点后走势反应。
- 建立一个条件选股公式(如基于 M8 主图公式)。
- 双击启动通达信右下角的条件预警图标。
- 点击设置 → 添加公式,进行关键的 3 个设置(需提前创建自定义板块)。
- 在其他设置中确认声音提示和弹出提示,点击确定。
阶段性回顾用选股器对全市场筛选,可提取涨幅最大一群股进池再研究特征。以下两段分别用于「翻倍筛选」与「特征排序」:
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 是系数项,都可改。
公式只是工具,思维才是能力。把所有选股器、股池、指标串起来,仍需回到量、价、势、锚四要素综合评估,以及对盘面的系统观察和思考。宁可错过、不做,但求减少失误,决不被动交易。