金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
楼主: 106325

实现7个选股条件

[复制链接]

176

主题

386

帖子

386

积分

Rank: 4

等级: 专业版

注册:
2025-5-24
曾用名:
 楼主| 发表于 2026-8-20 16:48 | 显示全部楼层
资深技术07 发表于 2026-8-20 16:26
手误,已修改,是英文状态下的  :=

请下载10年以上的日K线数据,基础财务数据和深度财务数据

分红的相关数据是在基础财务吧。
回复

使用道具 举报

1

主题

312

帖子

312

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2026-8-20 16:50 | 显示全部楼层
是的,公式里也有用到深度财务数据。所以,基础财务数据和深度财务数据,都需要下载
回复

使用道具 举报

176

主题

386

帖子

386

积分

Rank: 4

等级: 专业版

注册:
2025-5-24
曾用名:
 楼主| 发表于 2026-8-20 17:56 | 显示全部楼层
股利支付率与股息率是不同的:股利支付率是:每股股息/每股收益*100%,反映的是公司赚的钱多少比例愿给股东分红。股息率是:每股分红/每股股价*100%,是动态的。但分红除权时有个理论固定值。公司可能每年的分红次数是不一样的,多次分红要相加,再算才行。
回复

使用道具 举报

176

主题

386

帖子

386

积分

Rank: 4

等级: 专业版

注册:
2025-5-24
曾用名:
 楼主| 发表于 2026-8-20 18:11 | 显示全部楼层
资深技术05 发表于 2026-8-18 09:55
股息率的算法有很多种,通常都是    历史年份分红累计总额/当前最新的股价

注意这里是实时最新股价。如 ...

股利支付率:每股股息/每股收益,反映公司愿分红的意愿。股息率是:每年每股分红的总和/每股股价。
回复

使用道具 举报

1

主题

312

帖子

312

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2026-8-21 10:00 | 显示全部楼层
明白您想要的是什么了,您的问题正在处理,请稍等
回复

使用道具 举报

2

主题

6566

帖子

6566

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2026-8-21 10:14 | 显示全部楼层
1.股利支付率 涉及到股息.而股息 参考这里说法:https://baike.eastmoney.com/item/%E8%82%A1%E6%81%AF  它是包含现金,送股等多种形式。

按照你这个算法,股利支付率  那就是 当年累计 分红/每股收益了  。不过我们这里只能用现金分红来算了.  因为送股和转股数据 我们除权数据里好像是不区分的。

2.其次昨天你电话里说的那个分红用当时的价格算一个固定值,但是这个有一个情况就是你提到的多次分红问题。那我们用最后一次分红时候汇总的分红和当时的价格算一个固定值?

麻烦确认下这个算法要求。
回复

使用道具 举报

176

主题

386

帖子

386

积分

Rank: 4

等级: 专业版

注册:
2025-5-24
曾用名:
 楼主| 发表于 2026-8-24 09:58 | 显示全部楼层
资深技术05 发表于 2026-8-21 10:14
1.股利支付率 涉及到股息.而股息 参考这里说法:https://baike.eastmoney.com/item/%E8%82%A1%E6%81%AF  它 ...

可以的。我的理解只能是分为二部:第一个是:算股息率就按每次股权登记日的那个分红来算,取得的也是这一次的一理论股息率。如果一个股票每看分红二次或三次,那么就分别算出每次的。第二步:算出全年的股息率。只有这样才有实际的操作意义。求出的值标示清楚就可以了。
回复

使用道具 举报

176

主题

386

帖子

386

积分

Rank: 4

等级: 专业版

注册:
2025-5-24
曾用名:
 楼主| 发表于 2026-8-24 10:10 | 显示全部楼层
资深技术05 发表于 2026-8-21 10:14
1.股利支付率 涉及到股息.而股息 参考这里说法:https://baike.eastmoney.com/item/%E8%82%A1%E6%81%AF  它 ...

关于送股与转股还有现金分红。我们可以这样:先弄简单的:1、就是只选择分现金的股票,送股与转股的股票用代码全剔除掉。2、然后再研究有单独送股的或单独转股。3、然后 再研究混合的。我觉得用这个思路先去解决会好一些。4、对我们的软件我研究的水平很低,只能通过老师来引导,慢慢学习。也相信软件会不断完善其功能及数据,如果发现有的内容,比如送股,转股数据没有,希望平台也能尽快的解决。谢谢老师。
回复

使用道具 举报

2

主题

6566

帖子

6566

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2026-8-24 15:48 | 显示全部楼层
本帖最后由 资深技术05 于 2026-8-24 15:55 编辑

这是股息率和股利率相关的代码,关键逻辑在注释中说明了下。 其中留意了下全年的算法。按照你之前除权登记日的固定股息率算法,这个全年的方式可能有待商榷。

new_y:=YEAR<>REF(YEAR,1);
LEN:=BARSLAST(new_y);

当年累计分红额:SUM(SPLITDATA(4),len+1),,NODRAW;

//只考虑分红情况!按:100*分红/10/除权登记日的收盘价. 除权数据是每十股,所以这里额外除了10
//返回最近一次,不一定是今年的.如果需要本年的,需要额外处理.
最近一次分红的股息率:100*VALUEWHEN(SPLITDATA(4),SPLITDATA(4)/10/REF(CLOSE,1)),NODRAW;


//只考虑分红情况!按:100*当年累计分红/10/最近一个除权登记日的收盘价. 除权数据是每十股,所以这里额外除了10
//这里分红是累计计算的,但是算除息率 时用的除权登记日价格是最近一次的.这个算法是有待商榷的!
//当年没有分红,返回0
当年累计分红的股息率:100*当年累计分红额/10/VALUEWHEN(SPLITDATA(4),REF(CLOSE,1)),NODRAW;

//100*当年累计分红额/10/每股收益
//当年没有分红,返回0
股利支付率:100*当年累计分红额/10/FINANCE(33),NODRAW;


回复

使用道具 举报

2

主题

6566

帖子

6566

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2026-8-26 15:29 | 显示全部楼层
[PEL] 复制代码
INPUT:N(2,1,30,1);//参数表示 N年内没有送股
VARIABLE:分红连续增长:=0,股息率连续满足:=0;

new_y:=YEAR<>REF(YEAR,1);
LEN:=BARSLAST(new_y);

//条件0:连续十年不间断分红,包含当年

con0:STKINDI('','a.r',0,9,0);


//条件1:N年内没有送股,包含当年 
LENX:=SUMBARS(new_y,N);
送股数量:=SPLITDATA(1)+SPLITDATA(2);

con1:=sum(送股数量,LENX)=0;


//条件2:近三年股息率大于3% ,只计算过去的年度股息率,不包含当前当前未结束的年份
//条件3:上市公司的分红额连续三年增长  这里只统计过去三年,不包含当前未结束的年份

//如果当年没有分红,返回0
累计分红额:=SUM(SPLITDATA(4),len+1),NODRAW;
上一年累计分红额:=VALUEWHEN(new_y,ref(累计分红额,1));

//只考虑分红情况!按:100*分红/10/除权登记日的收盘价. 除权数据是每十股,所以这里额外除了10
//返回最近一次,不一定是今年的.如果需要本年的,需要额外处理.
最近一次分红的股息率:100*VALUEWHEN(SPLITDATA(4),SPLITDATA(4)/10/REF(CLOSE,1)),NODRAW;
//只考虑分红情况!按:100*当年累计分红/10/最近一个除权登记日的收盘价. 除权数据是每十股,所以这里额外除了10
//这里分红是累计计算的,并且使用实时价格计算股息率
//当年没有分红,返回0
动态股息率:100*累计分红额/10/C,NODRAW;

tmp1:=ref(上一年累计分红额,1);
tmp2:=ref(动态股息率,1);
if  new_y then 
begin

if 上一年累计分红额>tmp1 then  分红连续增长:=分红连续增长+1;
if 上一年累计分红额<=tmp1 then 分红连续增长:=0;

if tmp2>3 then 股息率连续满足:=股息率连续满足+1;else 股息率连续满足:=0;

end 


con2:=分红连续增长>=3;
con3:=股息率连续满足>=3;


//条件4:扣非利润连续三年均为正
KF0:=FININDICATOR('','niAttrPCut',0,0);//本期,本期可能来源于非第四季报.取决于财报更新时间
KF1:=FININDICATOR('','niAttrPCut',4,-1);//去年
KF2:=FININDICATOR('','niAttrPCut',4,-2);//前年
con4:=KF0>0 AND KF1>0 AND KF2>0;//扣非利润连续三年均为正


//条件5:资产负债率<80%
con5:=FINANCE(16)/FINANCE(10)*100<80;//资产负债率<80%,日K线

//条件6:现金流大于0,日K线

con6:=FINANCE(40)>0;


//条件7:股利率大于30%,这里是当前实时的. 没有采用上一年末的静态的

//100*当年累计分红额/10/每股收益
//当年没有分红,返回0
股利支付率:100*累计分红额/10/FINANCE(33),NODRAW;

con7:=股利支付率>30;


选股条件:con0 and con1 and con2 and con3 and con4 and con5 and con6 and con7;


另外这里涉及到一个指标调用,把二楼的代码复制下来 新建指标a 放进去即可。

其次 这里都涉及到深度和普通财务数据的调用 ,以及较多的历史日线数据。你需要补充下这些数据,否则部分指标是无效的。
选股时候 选择 “选股条件”这个变量即可。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2026-9-18 04:58 , Processed in 0.128827 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表