现有几大净利润断层公式简析比较和修改更新

发布时间:2023-01-13 08:52:35


  1、现有公式综述

  我收集了齐大总管(2022-06-30)、一鱼策略(2022-06-07、2022-05-16)、狮子孤行(2022-02-07)、看见股道(2020-02-24)等诸位同学的净利润断层选股公式/指标公式,发现只有一鱼策略和齐大总管的公式可以成功导入通达信使用。对两者的内容进行了比较,得出的结论是基本相同。有意思的是,两者的错误都是一样的:把本该是下限的FINONE(285,X,X)当成了上限。

  其他同学,得心应手园(2021-03-23)需要收费50元,这个无可厚非,正如TA本人指出的:每一个很小的修订、都需要付出很长的时间去测试。望樱补充一点:自己想出一个点子,有时真的很耗脑力。所以完全值这个价,不过我暂未购买。

  欧奈尔口袋支点量化(2022-09-12)的条件是要加入TA的星球。TA提到,由于通达信专业财务数据函数里的285、286、288号等数据有可能被后面报告期覆盖,导致网上的净利润断层公式都会有信号缺失的问题。举例来说,就是当一只股票发布预告的时候出现净利润断层信号,当这只股票再次公布快报或年报的时候,预告时的净利润断层信号就会消失不见了。而在一年多以前,TA就修复了净利润断层信号消失的问题,当时还做了个《净利润断层信号测算》,趁着中秋假期又重新优化了下程序。

  狮子孤行(2022-02-07)指出了他的公式的局限性:选股的结果,仅为最近一次预告、快报、财报。

  还有一些同学的公式使用了自定义数据管理器和函数SIGNALS_USER,我们在使用这种公式时,需要每个交易日下载、导入他人制作的数据,主动权便掌握在了别人手中,因此这类公式使用不便。但是,如果我们自己掌握了自定义数据的制作方法,那就另当别论了。关于这种公式,下文会简要介绍初步的研究成果。

  还有的公式仅仅是“向上跳空高开、多日内缺口不补”的技术形态,不涉及财务数据,故不是真正意义上的净利润断层公式。

1

  目前综合比较下来,关于净利润断层公式,我认为齐大总管的工作是最有价值的。TA开发了多个版本,免费发布给他人使用,使用过程中碰到的问题,在文章的留言区进行讨论,不断对公式进行修正优化。所以本文的公式主要基于齐大总管的最新版即4.0版。不过与其它通达信公式相比,净利润断层公式本身比较复杂,这是其一;其二,通达信目前提供的函数在应用于净利润断层公式时存在局限性,有待更新优化。所以4.0版很可能不是最终版,需要继续修正优化。后续我发现齐大总管(2021-04-19)提出了一种4.0版公式选不出来的特殊情况。

  净利润断层公式的主体部分,是由最近日期断层、指定日期1断层、指定日期2断层、指定日期3断层、指定日期4断层等五部分由OR关系构成。

  完整的净利润断层公式,包含了以下内容。1)公式的核心内容,是“确定业绩预告/快报/报告公告(发布,公布)的日期”,也是难点所在,是必须包含的;2)公式还应包含描述“断层(高开缺口)”的代码,也是必须包含的;3)公式规定了净利润、净利润增长率应当为正值。

  净利润断层公式两个最重要的函数。FINVALUE(ID), ID为数据编号;FINONE(ID, Y, MMDD), ID为数据编号, Y和MMDD表示年和月日。

  2、公式使用的注意事项

  我们在使用他人开发的净利润断层公式时,应当注意:

  1)不是找到最新版就可以了。在历次版本中,开发者将公式公布出后,使用者发现问题、反馈问题,一起交流如何解决。了解历次版本的交流过程,对于理解公式大有裨益

  2)要有意识的用典型实例对公式进行测试,当发现公式存在局限性时,应当自己尝试解决,没有办法解决时可向开发者寻求帮助

  3)公式是提高效率的工具,理解公式背后的思想之后再去使用公式、而不是直接拿过来用,工具才能发挥出威力。

  3、业绩公告日期选股公式

  如前所述,完整的净利润断层公式包含了3部分内容。在使用的时候,按模块化思维,将功能拆解开来,会带来使用上的灵活性。本文基于齐大总管(2022-06-30)开发的4.0版净利润断层选股公式,提取了1)核心内容,以实现“确定业绩预告/快报/报告公告(发布,公布)的日期”这一功能。

  除了1)核心内容,我将2)描述“断层”的代码 归入了下文“净断配套选”选股公式。对于3)净利润、净利润增长率应当为正值,我没有了解清楚齐大总管为什么要这么规定,为了公式精简起见,我暂时将这部分内容剔除了,将来随着理解加深,如果发现确实有必要,再考虑加回来。有一种说法,不是要业绩为正才是超预期,很多时候减亏、扭亏也可以是。

  经拆解提取处理后的选股公式,命名为“齐业公日选W”,意思是:基于齐大总管开发的,提取核心内容以实现“确定业绩预告/快报/报告公告的日期”功能的选股公式,W是望樱的拼音首字母,表示经过了望樱的处理。

  2023-01-08(星期日)上午对“齐业公日选W”进行了测试,通达信版本:V7.51,公式管理器版本:V6.02,选股范围:中证500,时间段内满足条件:不勾选,选股结果:天华超净、云天化。将选股范围改为:沪深A股,再次进行测试,得到12只个股;“同花顺财经->数据中心->业绩预告”显示,2023-01-06有12只个股公告业绩,与测试结果比较,有11只是相同的;同花顺财经2023-01-07有多只个股公告业绩,在通达信中尚未出现。由此可见“齐业公日选W”一个优势是,方便与其它信源作比较。

  对齐大总管的4.0版指标公式同样进行了拆解提取处理,经测试发现,多出了很多(笑脸)信号,这是正常的,因为条件减少了。

  开始的时候,我以为齐大总管没有所谓的模块化思维,后来才发现是我看TA的文章不全面。齐大总管的净利润断层相关公式,2.0版有3个,分别是净利润断层主图指标V2.0、净利润断层选股公式V2.0、业绩公告选股公式V2.0,其中第三个公式与我的公式“齐业公日选W”设想实现的功能是一样的。不过,齐大总管的净利润断层公式继续向前更新,业绩公告选股公式却停留在了2.0版,不知道是什么原因。

  在阅读齐大总管的文章过程中,我始终有一个疑问,净利润断层选股公式的日期,有必要由最近日期、指定日期1、指定日期2、指定日期3、指定日期4等五部分构成吗,需要这么复杂吗?后来在齐大总管(2020-05-30)找到了答案:这里发一个完整版的,一个简化版的,大家如果只是想选出当天出现断层的,可以使用后面简化版的,可能会比完整版的快一点点。这里所谓的简化版,就是只保留了“最近日期”。

  本文基于齐大总管(2022-06-30)开发的4.0版净利润断层选股公式,拆解提取的 “确定业绩预告/快报/报告公告(发布,公布)的日期” 的选股公式如下,公式名称“齐业公日选W”,公式中的文字“断层”偷懒起见作了保留,实际上与断层不再有关。能否像齐大总管(2020-05-30)的简版那样,在日期上作简化呢?有待后续研究。

  {齐净断选W->齐业公日选W}

  当前日期 := DATE-1000000;

  SV := -1;

  EV := IF(WEEKDAY=1,3,2);

  {DIFF := 70;}

  DIFF := IF(MONTH=3 AND DAY=1, 72, IF(MONTH=3 AND DAY=2, 73, 70));

  DIUP := 70;

  DIDOWN := 75;

  {业绩预告}

  预告日期 := FINVALUE(313);

  预告日期差 := (当前日期-预告日期>SV) AND IF(RANGE((当前日期-预告日期),DIUP,DIDOWN),(当前日期-预告日期)-DIFF,(当前日期-预告日期))

  预告断层 :=预告日期差;

  {业绩快报}

  快报日期 := FINVALUE(315);

  快报日期差 := (当前日期-快报日期>SV) AND IF(RANGE((当前日期-快报日期),DIUP,DIDOWN),(当前日期-快报日期)-DIFF,(当前日期-快报日期))

  快报断层 := 快报日期差;

  {财报}

  财报日期 := FINVALUE(314);

  财报日期差 := (当前日期-财报日期>SV) AND IF(RANGE((当前日期-财报日期),DIUP,DIDOWN),(当前日期-财报日期)-DIFF,(当前日期-财报日期))

  财报断层 := 财报日期差;

  {最近日期断层}

  最近日期断层 := 预告断层 OR 快报断层 OR 财报断层;

  {指定日期1}

  指定日期1 := 1;

  {指定日期1业绩预告}

  指预告日期1 := FINONE(313,0,指定日期1);

  指预告日期差1 := (当前日期-指预告日期1>SV) AND IF(RANGE((当前日期-指预告日期1),DIUP,DIDOWN),(当前日期-指预告日期1)-DIFF,(当前日期-指预告日期1))

  指预告断层1 := 指预告日期差1;

  {指定日期1业绩快报}

  指快报日期1 := FINONE(315,0,指定日期1);

  指快报日期差1 := (当前日期-指快报日期1>SV) AND IF(RANGE((当前日期-指快报日期1),DIUP,DIDOWN),(当前日期-指快报日期1)-DIFF,(当前日期-指快报日期1))

  指快报断层1 :=指快报日期差1;

  {指定日期1财报}

  指财报日期1 := FINONE(314,0,指定日期1);

  指财报日期差1 := (当前日期-指财报日期1>SV) AND IF(RANGE((当前日期-指财报日期1),DIUP,DIDOWN),(当前日期-指财报日期1)-DIFF,(当前日期-指财报日期1))

  指财报断层1 := 指财报日期差1;

  {指定日期1断层}

  指定日期1断层 := 指预告断层1 OR 指快报断层1 OR 指财报断层1;

  {指定日期2}

  指定日期2 := 2;

  {指定日期2业绩预告}

  指预告日期2 := FINONE(313,0,指定日期2);

  指预告日期差2 := (当前日期-指预告日期2>SV) AND IF(RANGE((当前日期-指预告日期2),DIUP,DIDOWN),(当前日期-指预告日期2)-DIFF,(当前日期-指预告日期2))

  指预告断层2 := 指预告日期差2;

  {指定日期2业绩快报}

  指快报日期2 := FINONE(315,0,指定日期2);

  指快报日期差2 := (当前日期-指快报日期2>SV) AND IF(RANGE((当前日期-指快报日期2),DIUP,DIDOWN),(当前日期-指快报日期2)-DIFF,(当前日期-指快报日期2))

  指快报断层2 := 指快报日期差2;

  {指定日期2财报}

  指财报日期2 := FINONE(314,0,指定日期2);

  指财报日期差2 := (当前日期-指财报日期2>SV) AND IF(RANGE((当前日期-指财报日期2),DIUP,DIDOWN),(当前日期-指财报日期2)-DIFF,(当前日期-指财报日期2))

  指财报断层2 := 指财报日期差2;

  {指定日期2断层}

  指定日期2断层 := 指预告断层2 OR 指快报断层2 OR 指财报断层2;

  {指定日期3}

  指定日期3 := 3;

  {指定日期3业绩预告}

  指预告日期3 := FINONE(313,0,指定日期3);

  指预告日期差3 := (当前日期-指预告日期3>SV) AND IF(RANGE((当前日期-指预告日期3),DIUP,DIDOWN),(当前日期-指预告日期3)-DIFF,(当前日期-指预告日期3))

  指预告断层3 := 指预告日期差3;

  {指定日期3业绩快报}

  指快报日期3 := FINONE(315,0,指定日期3);

  指快报日期差3 := (当前日期-指快报日期3>SV) AND IF(RANGE((当前日期-指快报日期3),DIUP,DIDOWN),(当前日期-指快报日期3)-DIFF,(当前日期-指快报日期3))

  指快报断层3 :=指快报日期差3;

  {指定日期3财报}

  指财报日期3 := FINONE(314,0,指定日期3);

  指财报日期差3 := (当前日期-指财报日期3>SV) AND IF(RANGE((当前日期-指财报日期3),DIUP,DIDOWN),(当前日期-指财报日期3)-DIFF,(当前日期-指财报日期3))

  指财报断层3 := 指财报日期差3;

  {指定日期3断层}

  指定日期3断层 := 指预告断层3 OR 指快报断层3 OR 指财报断层3;

  {指定日期4}

  指定日期4 := 4;

  {指定日期4业绩预告}

  指预告日期4 := FINONE(313,0,指定日期4);

  指预告日期差4 := (当前日期-指预告日期4>SV) AND IF(RANGE((当前日期-指预告日期4),DIUP,DIDOWN),(当前日期-指预告日期4)-DIFF,(当前日期-指预告日期4))

  指预告断层4 := 指预告日期差4;

  {指定日期4业绩快报}

  指快报日期4 := FINONE(315,0,指定日期4);

  指快报日期差4 := (当前日期-指快报日期4>SV) AND IF(RANGE((当前日期-指快报日期4),DIUP,DIDOWN),(当前日期-指快报日期4)-DIFF,(当前日期-指快报日期4))

  指快报断层4 := 指快报日期差4;

  {指定日期4财报}

  指财报日期4 := FINONE(314,0,指定日期4);

  指财报日期差4 := (当前日期-指财报日期4>SV) AND IF(RANGE((当前日期-指财报日期4),DIUP,DIDOWN),(当前日期-指财报日期4)-DIFF,(当前日期-指财报日期4))

  指财报断层4 := 指财报日期差4;

  {指定日期4断层}

  指定日期4断层 := 指预告断层4 OR 指快报断层4 OR 指财报断层4;

  {}{}{}{}{}{}

  净利润断层 := 最近日期断层 OR 指定日期1断层 OR 指定日期2断层 OR 指定日期3断层 OR 指定日期4断层;

  BARSSINCEN(净利润断层, 3)=0;{本行代码是否需要修改}

  {净利润断层公式结束};

  4、净断配套选股公式

  公式名称:净断配套选

  公式当中的A11或A12描述了“断层”,是必须条件,无此便不构成完整的“净利润断层”。其它是可选条件,视各人的理解与需求采用,包括基金持股、北向持股、上市时间、市值大小、站稳X日均线等条件,以缩小净利润断层选股的范围、提高成功的概率。

  关于机构持股,有人说:没有机构认可的标的通常不是好标的,很有道理。

  关于为什么要站稳50日均线,《股票魔法师》指出,在第二阶段中出现的净利润惊喜才是正向反馈,才是有效的净利润惊喜。而第二阶段包含了站稳50日均线的内容,站稳50日均线相当于满足放宽条件的第二阶段。

  公式当中的A11或A12,涨幅的取值各人有不同的看法,3%、4%、5%、6%、7%、8%都有,那么怎么取值呢,我的看法与一鱼策略(2023-01-09)一致,应当通过回测。另外,涨幅不规定具体的数值,而是通过与大盘指数比较来构建,是否可行呢。对于缺口,这里能否按 开盘价相对于上一个交易日的收盘价出现了向上缺口 来考虑呢。公式如下。

  A11:=L > REF(H, 1) OR C / REF(C, 1) > 1.08;{高开缺口或涨幅较大}

  A12:=DYNAINFO(6) > REF(H, 1) OR DYNAINFO(7) / REF(C, 1) > 1.08;{高开缺口或涨幅较大;是否需要采用即时行情函数}

  A21:= FINVALUE(255)/FINVALUE(239)>=3/100;{基金持股量占流通股的比例超过3%}

  A22:= GPJYVALUE(6,1,1)*CLOSE>3*1000*10000;{陆股通即北向持股超过3千万}

  A3:=BARSCOUNT(C)>=2*250; {上市2年以上}

  A4:= FINANCE(1) * C > 100 * 10000 * 10000; {总市值大于100亿}

  A51:= C > MA(C, 50); {站上50日均线}

  A52:= C > MA(C, 250); {站上年线;站上年线是茶话股经常用的}

  A6:= H>= HHV(H,250)*0.9; {当日最高价 大于 最近1年最高价的最大值的0.9倍}

  净断配套: A11 AND (A21 OR A22) AND A3 AND A4 AND (A51 OR A52) AND A6;

  西湖区的孩纸(2021-04-05)通过案例分析总结出了3个条件。站稳50日均线;RPS大于80或者85;个股处于接近一年新高。这几个条件满足其中一、两个即可,当然如果全部满足的话,那么净利润惊喜成功的可能性会更大。

  5、未回补缺口选股公式

  源自齐大总管(2021-01-09),这段代码附在“净利润断层选股公式”后面,实现的功能是“30天内出现净利润断层且至今未回补缺口”。要将这段代码拆解提取出来,独立使用似乎不现实。

  {30天内出现净利润断层且至今未回补缺口}

  PF := BARSLAST(净利润断层) <= 30;

  P1 := BARSLAST(净利润断层) + 1;

  LLV(L, P1) > REF(H, P1) AND PF;

  强势股投资之路(2022-05-02)提出,利用净利润选股公式,将不回补断层缺口的时间参数设置为20日,自4月1日以来的选股结果是57只。当然这其中后来出现的断层个股,时间太短,20天内不回补缺口这个筛选标准不起作用。那么就通过这个标准不断的筛选,随后一些回补断层缺口的个股,自然就被逐步淘汰掉,所关注的标的也就不断缩小。

  6、通过自定义数据

  如前所述,应当掌握这种方法。有同学作过回测(雪球,前进168,20221029,留言区),发现可以明显提升净利润断层的选股速度。查找文章发现,大数据金牛座(2019-02-13)、扫地僧2008 (2019-02-26)、欧奈尔口袋支点量化 (2022-09-12)、钱途无量2021 (2022-10-25)等人的净利润断层公式都使用了自定义数据,但都没有涉及自定义净利润数据的制作方法,可以认为是不够完整的文章。

  网上能找到很多净利润断层公式,但是自定义净利润数据的制作方法,我没发现有人公开的,可见大家都很珍视。上面这位同学,就是看了别人不够完整的文章,理解了大体的思路,自己研究出来的,他认为自己制作数据“说难也不难,就是比较麻烦”。所以我想我自己也可以自己研究,不过几个简单的问题,或者可以请教一下他人。1)是否需要从WIND/东方财富等收费数据库导出数据;2)是否需要用到通达信函数:FINVALUE和FINONE;3)数据导出后,是否需要经过EXCEL、WORD、文本文档TXT的处理。我先找几个自定义数据和函数SIGNALS_USER相关的实例学习一下。

  7、净利润断层选股的方法

  以下两个方案是我的设想,尚未经过验证。

  1)方案一

  首次操作时,需要新建3个板块,名称分别为:业公股池、净断股池、新增净断股池。

  交易日的上午7:00左右,下载专业财务数据。采用“齐业公日选W”进行条件选股,选股入板块“业公股池”。

  上午收盘后,继续选股。采用“净断配套选”条件选股公式,将选股范围设置为“业公股池”,选股入板块“净断股池”;原样操作一次,区别在于选股入板块“新增净断股池”,清空品种。

  该方案的优势,一是可以盘前预先对新公布了业绩的个股进行简单的研究,二是开盘后可以全面观察所有新公布业绩个股的走势。

  2)方案二

  首次操作时,需要新建3个板块,名称分别为:净断配套股池、净断股池、新增净断股池。

  交易日上午收盘前,下载专业财务数据。上午收盘后,采用“净断配套选”进行条件选股,选股入板块“净断配套股池”。

  再采用“齐业公日选W”进行条件选股,将选股范围设置为“净断配套股池”,选股入板块“净断股池”。原样操作一次,区别在于选股入板块“新增净断股池”,清空品种。

  本方案的优势是可以节省选股时间。方案一的“齐业公日选W”公式要在全部A股近5000只个股里面选,方案二经过“净断配套选”公式先筛选一遍后,“齐业公日选W”公式的选股范围大大缩小,选股速度就比之前加快了。我另有一个加快选股速度的想法需要验证,把“净断配套选”和“齐业公日选W”放在同一个公式里,两者采用IF函数建立关系。

  一鱼策略(2022-08-15)通过自动选股设置,实现了一键选股,可以借鉴。

  本方案是在上午盘后选股,也可以在下午盘后选股。



下一篇:普林格周期六阶段配置思路

上一篇:逆势交易操作更需要及时止损