尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

北向资金数据深度分析:用Python追踪沪股通深股通资金动向与十大成交股 IG50免费开源股票数据API接口

北向资金数据深度分析:用Python追踪沪股通深股通资金动向与十大成交股 IG50免费开源股票数据API接口 北向资金数据深度分析用Python追踪沪股通深股通资金动向与十大成交股北向资金一直被市场称为聪明钱很多量化策略都会把北向资金作为一个重要的参考信号。但大部分人对北向资金的分析还停留在今天流入多少亿的层面没有深入挖掘。我之前写了一套北向资金分析工具把沪股通和深股通的历史数据、十大成交股数据、成分股行情数据系统地分析了一遍这篇文章就来聊聊具体的实现方法。先说数据来源。北向资金数据主要分三块第一块是沪股通和深股通的历史数据也就是每天北向资金的净买额、买入额、卖出额第二块是十大成交股每天北向资金买卖最多的十只股票第三块是成分股行情所有沪股通和深股通标的的行情数据。数据都在all/nxbx目录下。沪股通历史数据是all/nxbx/hgtlssj深股通历史数据是all/nxbx/sgtlssj。沪股通十大成交股是all/nxbx/hgtsdcj/{交易日}深股通十大成交股是all/nxbx/sgtsdcj/{交易日}交易日格式是yyyy-MM-dd可以查近30个交易日的数据。沪股通成分股行情是all/nxbx/hgthq深股通成分股行情是all/nxbx/sgthq。importjsonimportosimportpandasaspdimportnumpyasnpimportdatetime data_dirD:/stock_datadefread_hgt_history():file_pathos.path.join(data_dir,all,nxbx,hgtlssj)ifnotos.path.exists(file_path):returnNonewithopen(file_path,r,encodingutf-8)asf:datajson.load(f)dfpd.DataFrame(data)df.columns[日期,净买额,买入额,卖出额,累计净买额]df[日期]pd.to_datetime(df[日期])returndf.sort_values(日期)defread_sgt_history():file_pathos.path.join(data_dir,all,nxbx,sgtlssj)ifnotos.path.exists(file_path):returnNonewithopen(file_path,r,encodingutf-8)asf:datajson.load(f)dfpd.DataFrame(data)df.columns[日期,净买额,买入额,卖出额,累计净买额]df[日期]pd.to_datetime(df[日期])returndf.sort_values(日期)defread_hgt_top10(date_str):file_pathos.path.join(data_dir,all,nxbx,hgtsdcj,date_str)ifnotos.path.exists(file_path):returnNonewithopen(file_path,r,encodingutf-8)asf:datajson.load(f)dfpd.DataFrame(data)df.columns[排名,dm,mc,spj,zf,jme,mre,mce,cje,rq]returndf字段名我用了简写dm是股票代码mc是名称spj是收盘价zf是涨跌幅jme是净买额mre是买入额mce是卖出额cje是成交额rq是日期。这些简写跟接口文章里的风格一致。数据读进来之后第一步是做整体趋势分析。北向资金的历史数据是按日期倒序的我把它转成正序然后计算每天的净买额。净买额等于买入额减去卖出额正值表示北向资金净流入负值表示净流出。defanalyze_trend(df_hgt,df_sgt):df_hgtdf_hgt.copy()df_sgtdf_sgt.copy()df_hgt[渠道]沪股通df_sgt[渠道]深股通df_allpd.concat([df_hgt,df_sgt])df_dailydf_all.groupby(日期).agg({净买额:sum,买入额:sum,卖出额:sum}).reset_index()df_daily[ma5]df_daily[净买额].rolling(5).mean()df_daily[ma20]df_daily[净买额].rolling(20).mean()df_recentdf_daily.tail(60)total_inflowdf_recent[净买额].sum()inflow_dayslen(df_recent[df_recent[净买额]0])outflow_dayslen(df_recent[df_recent[净买额]0])print(近60个交易日北向资金统计)print(总净流入{:.2f}百万.format(total_inflow))print(净流入天数{}净流出天数{}.format(inflow_days,outflow_days))print(日均净流入{:.2f}百万.format(df_recent[净买额].mean()))returndf_daily趋势分析能帮我们快速了解北向资金的整体动向。但光看总量还不够北向资金的个股动向更有参考价值。十大成交股数据能告诉我们北向资金每天在买卖哪些股票。defanalyze_top10(date_str,channelhgt):prefixhgtsdcjifchannelhgtelsesgtsdcjfile_pathos.path.join(data_dir,all,nxbx,prefix,date_str)ifnotos.path.exists(file_path):returnNonewithopen(file_path,r,encodingutf-8)asf:datajson.load(f)dfpd.DataFrame(data)df.columns[排名,dm,mc,spj,zf,jme,mre,mce,cje,rq]df[jme]pd.to_numeric(df[jme],errorscoerce)top_buydf.nlargest(5,jme)[[dm,mc,jme,mre,mce]]top_selldf.nsmallest(5,jme)[[dm,mc,jme,mre,mce]]print({}北向资金十大成交股{}.format(沪股通ifchannelhgtelse深股通,date_str))print(\n净买入TOP5)print(top_buy.to_string(indexFalse))print(\n净卖出TOP5)print(top_sell.to_string(indexFalse))returndf单日的十大成交股意义有限更有价值的是连续多日的统计。如果北向资金连续多天买入同一只股票说明外资对这只股票持续看好信号比单日买入强得多。defanalyze_continuous_buy(date_list,channelhgt):prefixhgtsdcjifchannelhgtelsesgtsdcjall_data[]fordate_strindate_list:file_pathos.path.join(data_dir,all,nxbx,prefix,date_str)ifnotos.path.exists(file_path):continuewithopen(file_path,r,encodingutf-8)asf:datajson.load(f)foritemindata:all_data.append(item)ifnotall_data:returnNonedfpd.DataFrame(all_data)df.columns[排名,dm,mc,spj,zf,jme,mre,mce,cje,rq]df[jme]pd.to_numeric(df[jme],errorscoerce)buy_countdf[df[jme]0].groupby(dm).agg({mc:first,jme:[count,sum]}).reset_index()buy_count.columns[dm,mc,买入天数,累计净买额]continuousbuy_count[buy_count[买入天数]3].sort_values(买入天数,ascendingFalse)print(近{}个交易日北向资金连续买入TOP20.format(len(date_list)))print(continuous.head(20).to_string(indexFalse))returncontinuous除了个股追踪北向资金的行业偏好也是一个重要维度。我会把十大成交股数据按行业分类看看北向资金在流入哪些行业、流出哪些行业。行业分类用的是股票的所属板块数据。实际使用中我会把北向资金的分析结果和我的选股策略结合起来。比如如果选股策略选出了某只股票同时北向资金也在连续买入这只股票那信号的可信度就更高了。这种多维度信号的交叉验证比单靠一个维度做决策要靠谱得多。还有一点经验分享。北向资金的分析要避免两个误区。第一是不要过度解读单日数据北向资金单日大幅流入或流出可能是调仓行为不代表趋势。第二是北向资金不是万能的它也有判断错的时候2021年北向资金大幅流入消费股结果消费股后面跌了两年。所以北向资金只能作为参考信号不能作为唯一的决策依据。我用的数据来源是ig50的本地数据接口北向资金相关的几个接口路径清晰数据更新及时做二次开发很方便。接口说明all/nxbx/hgtlssj - 沪股通历史数据本地路径数据存放目录/all/nxbx/hgtlssj主要字段日期、当日成交净买额百万、买入成交额百万、卖出成交额百万、历史累计净买额百万all/nxbx/sgtlssj - 深股通历史数据本地路径数据存放目录/all/nxbx/sgtlssj主要字段日期、当日成交净买额百万、买入成交额百万、卖出成交额百万、历史累计净买额百万all/nxbx/hgtsdcj/{交易日} - 沪股通十大成交股本地路径数据存放目录/all/nxbx/hgtsdcj/{交易日}格式yyyy-MM-dd近30个交易日主要字段排名、股票代码(dm)、股票名称(mc)、收盘价(元)(spj)、涨跌幅(%)(zf)、沪股通净买额(元)(jme)、沪股通买入额(元)(mre)、沪股通卖出额(元)(mce)、沪股通成交额(元)(cje)、日期(rq)all/nxbx/sgtsdcj/{交易日} - 深股通十大成交股本地路径数据存放目录/all/nxbx/sgtsdcj/{交易日}格式yyyy-MM-dd近30个交易日主要字段排名、股票代码(dm)、股票名称(mc)、收盘价(元)(spj)、涨跌幅(%)(zf)、深股通净买额(元)(jme)、深股通买入额(元)(mre)、深股通卖出额(元)(mce)、深股通成交额(元)(cje)、日期(rq)all/nxbx/hgthq - 沪股通成分股行情本地路径数据存放目录/all/nxbx/hgthq主要字段代码、名称、涨跌幅等行情字段gitee开源地址github开源地址
返回列表