拓冰建站拓冰建站
首页 / 资讯中心 / 正文

涨跌股池数据统计分析:用Python挖掘涨停板与强势股的共性特征

涨跌股池数据统计分析用Python挖掘涨停板与强势股的共性特征涨停板是A股市场最有特色的现象之一每天涨停的股票往往代表当天市场最热点的方向。很多人追涨停靠的是盘感和经验但我更喜欢用数据说话。我之前写了一套涨停板和强势股的统计分析工具把每天的涨停股池、强势股池、炸板股池数据系统地分析了一遍找到了一些共性的规律。数据主要用涨跌股池系列的接口都在time/zdtgc目录下。涨停股池是time/zdtgc/ztgc/{日期}返回每天的涨停股票列表按封板时间升序。强势股池是time/zdtgc/qsgc/{日期}返回涨幅排名靠前的股票。炸板股池是time/zdtgc/zbgc/{日期}返回当天炸过板的股票。跌停股池是time/zdtgc/dtgc/{日期}。日期参数格式是yyyy-MM-dd可以查最近15个交易日。importjsonimportosimportpandasaspdimportnumpyasnpfromcollectionsimportCounter data_dirD:/stock_datadefread_ztgc(date_str):file_pathos.path.join(data_dir,time,zdtgc,ztgc,date_str)ifnotos.path.exists(file_path):returnNonewithopen(file_path,r,encodingutf-8)asf:datajson.load(f)dfpd.DataFrame(data)df.columns[dm,mc,jg,zf,cje,ltsz,zsz,hsl,lbs,scfb,zcfb,fbzj,zbcs,zttj]returndfdefread_qsgc(date_str):file_pathos.path.join(data_dir,time,zdtgc,qsgc,date_str)ifnotos.path.exists(file_path):returnNonewithopen(file_path,r,encodingutf-8)asf:datajson.load(f)dfpd.DataFrame(data)df.columns[dm,mc,jg,ztj,zf,cje,ltsz,zsz,zs,sfxg,lb,hsl,zttj]returndfdefread_zbgc(date_str):file_pathos.path.join(data_dir,time,zdtgc,zbgc,date_str)ifnotos.path.exists(file_path):returnNonewithopen(file_path,r,encodingutf-8)asf:datajson.load(f)dfpd.DataFrame(data)df.columns[dm,mc,jg,ztj,zf,cje,ltsz,zsz,zs,hsl,zttj,scfb,zbcs]returndf字段用简写dm代码mc名称jg价格zf涨跌幅cje成交额ltsz流通市值zsz总市值hsl换手率lbs连板数scfb首次封板时间zcfb最后封板时间fbzj封板资金zbcs炸板次数zttj涨停统计zs涨速sfxg是否新高lb量比ztj涨停价。第一个分析涨停股的共性特征。我会统计涨停股的流通市值分布、换手率分布、封板时间分布看看什么样的股票更容易涨停。defanalyze_zt_features(date_str):dfread_ztgc(date_str)ifdfisNoneorlen(df)0:returnNonedf[ltsz]pd.to_numeric(df[ltsz],errorscoerce)df[hsl]pd.to_numeric(df[hsl],errorscoerce)df[lbs]pd.to_numeric(df[lbs],errorscoerce)ltsz_mediandf[ltsz].median()hsl_meandf[hsl].mean()lbs_meandf[lbs].mean()ltsz_binspd.cut(df[ltsz],bins[0,5e8,2e9,1e10,5e10,float(inf)],labels[5亿,5-20亿,20-100亿,100-500亿,500亿])ltsz_distltsz_bins.value_counts().sort_index()scfb_hourdf[scfb].str[:2].value_counts().sort_index()print(涨停股特征统计{}.format(date_str))print(涨停数量{}.format(len(df)))print(流通市值中位数{:.2f}亿.format(ltsz_median/1e8))print(平均换手率{:.2f}%.format(hsl_mean))print(平均连板数{:.2f}.format(lbs_mean))print(\n流通市值分布)print(ltsz_dist)print(\n首次封板时间分布)print(scfb_hour)returndf通过统计大量交易日的数据我发现涨停股有几个共性。第一流通市值5-20亿的小盘股最容易涨停占比超过50%。第二首次封板时间集中在9:30-10:00这个时段越早封板的股票次日表现越好。第三换手率在5%-15%之间的涨停股最健康换手率太低说明成交不活跃太高说明分歧大。第二个分析连板股的次日表现。连板股是涨停股里最受关注的2连板、3连板、5连板的股票次日表现各不相同。defanalyze_continuous_zt(date_list):all_results[]fordate_strindate_list:dfread_ztgc(date_str)ifdfisNone:continuenext_dateget_next_trade_date(date_str)df_nextread_ztgc(next_date)ifnext_dateelseNonenext_zt_codesset(df_next[dm])ifdf_nextisnotNoneelseset()df[lbs]pd.to_numeric(df[lbs],errorscoerce)forlbsin[1,2,3,5]:df_lbsdf[df[lbs]lbs]iflen(df_lbs)0:continuenext_zt_countlen(df_lbs[df_lbs[dm].isin(next_zt_codes)])next_zt_ratenext_zt_count/len(df_lbs)all_results.append({date:date_str,lbs:lbs,count:len(df_lbs),next_zt_count:next_zt_count,next_zt_rate:next_zt_rate})df_resultpd.DataFrame(all_results)summarydf_result.groupby(lbs).agg({count:sum,next_zt_count:sum,next_zt_rate:mean})print(连板股次日继续涨停统计)print(summary)returndf_result统计结果显示1连板次日继续涨停的概率约15%2连板约25%3连板约35%5连板以上约45%。连板数越多次日继续涨停的概率越高这就是所谓的强者恒强。但要注意5连板以上的股票数量很少统计样本不足概率不一定准。第三个分析炸板股的规律。炸板是指股票涨停后又打开涨停炸板股池的数据能告诉我们哪些涨停股不够坚挺。defanalyze_zb_features(date_str):dfread_zbgc(date_str)ifdfisNoneorlen(df)0:returnNonedf[zbcs]pd.to_numeric(df[zbcs],errorscoerce)zbcs_distdf[zbcs].value_counts().sort_index()print(炸板股统计{}.format(date_str))print(炸板股数量{}.format(len(df)))print(炸板次数分布)print(zbcs_dist)returndf炸板次数多的股票说明多空分歧大次日走势不确定性高。一般来说炸板1次还能回封的股票次日表现尚可炸板3次以上的股票次日下跌概率大。第四个分析涨停股的板块聚集效应。涨停股往往集中在某些热点板块统计涨停股的板块分布能帮助发现市场热点。defanalyze_sector_effect(date_str):dfread_ztgc(date_str)ifdfisNoneorlen(df)0:returnNonesector_countCounter()for_,rowindf.iterrows():dmrow[dm]sectorsget_stock_sectors(dm)forsinsectors:sector_count[s]1top_sectorssector_count.most_common(10)print(涨停股板块分布TOP10{}.format(date_str))forsector,countintop_sectors:print({}: {}只.format(sector,count))returntop_sectors板块聚集效应明显的时候说明市场有明确的主线这时候追主线板块的涨停股胜率更高。如果涨停股分散在各个板块说明没有明确热点这时候追涨停风险大。把这些分析串起来我每天盘后会做这样一个流程先看涨停股池的特征统计了解涨停股的市值分布和封板时间分布然后看连板股的次日表现统计判断当前市场的赚钱效应再看炸板股池了解哪些涨停股不够坚挺最后看板块分布发现市场热点。几个实战经验。第一追涨停要选流通市值5-20亿的小盘股大盘股涨停的持续性差。第二首次封板时间越早越好9:30-10:00封板的股票次日表现最好。第三连板数越多的股票越容易继续涨停但风险也越大3连板是一个相对安全的平衡点。第四要关注炸板次数炸板3次以上的涨停股次日大概率下跌。我用的数据来源是ig50的涨跌股池系列接口数据每10分钟更新一次做日内分析完全够用。接口说明time/zdtgc/ztgc/{日期} - 涨停股池本地路径数据存放目录/time/zdtgc/ztgc/{日期}格式yyyy-MM-dd最近15个交易日更新频率交易时间段每10分钟数据格式[{},…]主要字段代码(dm)、名称(mc)、价格(元)(jg)、涨幅(%)(zf)、成交额(元)(cje)、流通市值(元)(ltsz)、总市值(元)(zsz)、换手率(%)(hsl)、连板数(lbs)、首次封板时间(scfb)、最后封板时间(zcfb)、封板资金(元)(fbzj)、炸板次数(zbcs)、涨停统计(zttj)time/zdtgc/qsgc/{日期} - 强势股池本地路径数据存放目录/time/zdtgc/qsgc/{日期}主要字段代码(dm)、名称(mc)、价格(元)(jg)、涨停价(元)(ztj)、涨幅(%)(zf)、成交额(元)(cje)、流通市值(元)(ltsz)、总市值(元)(zsz)、涨速(%)(zs)、是否新高(sfxg)、量比(lb)、换手率(%)(hsl)、涨停统计(zttj)time/zdtgc/zbgc/{日期} - 炸板股池本地路径数据存放目录/time/zdtgc/zbgc/{日期}主要字段代码(dm)、名称(mc)、价格(元)(jg)、涨停价(元)(ztj)、涨跌幅(%)(zf)、成交额(元)(cje)、流通市值(元)(ltsz)、总市值(元)(zsz)、涨速(%)(zs)、转手率(%)(hsl)、涨停统计(zttj)、首次封板时间(scfb)、炸板次数(zbcs)time/zdtgc/dtgc/{日期} - 跌停股池本地路径数据存放目录/time/zdtgc/dtgc/{日期}主要字段代码、名称、价格、跌幅、成交额、流通市值、总市值、动态市盈率、换手率、连续跌停次数、最后封板时间、封单资金、板上成交额、开板次数资料参考ig50
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门