{"id":13488258,"url":"https://github.com/tkfy920/qstock","last_synced_at":"2026-04-01T20:45:25.405Z","repository":{"id":61166491,"uuid":"549011756","full_name":"tkfy920/qstock","owner":"tkfy920","description":"qstock由“Python金融量化”公众号开发，试图打造成个人量化投研分析包，目前包括数据获取（data）、可视化(plot)、选股(stock)和量化回测（策略backtest）模块。 qstock将为用户提供简洁的数据接口和规整化后的金融市场数据。可视化模块为用户提供基于web的交互图形的简单接口；  选股模块提供了同花顺的选股数据和自定义选股，包括RPS、MM趋势、财务指标、资金流模型等；  回测模块为大家提供向量化（基于pandas）和基于事件驱动的基本框架和模型。 关注“Python金融量化“微信公众号，获取更多应用信息。  ","archived":false,"fork":false,"pushed_at":"2025-03-16T03:36:35.000Z","size":788,"stargazers_count":1422,"open_issues_count":48,"forks_count":319,"subscribers_count":30,"default_branch":"master","last_synced_at":"2025-07-31T21:40:32.109Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tkfy920.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-10T14:34:24.000Z","updated_at":"2025-07-31T08:29:08.000Z","dependencies_parsed_at":"2024-06-21T14:18:56.297Z","dependency_job_id":"1023b7c0-f31f-4249-aa2f-f1719d1d8e5f","html_url":"https://github.com/tkfy920/qstock","commit_stats":{"total_commits":2,"total_committers":1,"mean_commits":2.0,"dds":0.0,"last_synced_commit":"3c83c566c7c84b11ef32313f08294cd164cbb6e6"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tkfy920/qstock","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkfy920%2Fqstock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkfy920%2Fqstock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkfy920%2Fqstock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkfy920%2Fqstock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tkfy920","download_url":"https://codeload.github.com/tkfy920/qstock/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkfy920%2Fqstock/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31291794,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T18:01:12.460Z","updated_at":"2026-04-01T20:45:25.393Z","avatar_url":"https://github.com/tkfy920.png","language":"Python","funding_links":[],"categories":["Python","金融股票"],"sub_categories":["网络服务_其他"],"readme":"# 简介\n\nqstock由“Python金融量化”公众号开发，试图打造成个人量化投研分析开源库，目前包括数据获取（data）、可视化(plot)、选股(stock)和量化回测（backtest）四个模块。其中数据模块（data）数据来源于东方财富网、同花顺、新浪财经等网上公开数据。qstock致力于为用户提供更加简洁和规整化的金融市场数据接口，其中可视化模块为用户提供基于web的交互图形简单操作接口；选股模块提供了同花顺的技术选股和公众号策略选股，包括RPS、MM趋势、财务指标、资金流模型等，回测模块为大家提供向量化（基于pandas）和基于事件驱动的基本框架和模型。\n\n读者直接在cmd或anaconda prompt上输入“pip install qstock ”进行安装，或输入“pip install -upgrade qstock”进行更新。\n\nqstock是免费开源金融量化库，已在pypi官网和GitHub上发布，更新至1.3.8版本，修改了之前realtime_data接口200的限制，修正某些数据报错的接口，可以正常使用问财功能（要把pywencai升级到最新，使用pip install --upgrade pywencai)，然后需要下载安装node.js（Node.js — Download Node.js®），安装好后打开node.js，在界面输入“npm install jsdom\"。添加了问财的数据访问功能，通过qstock.wencai('选股条件')调用。使用“pip install qstock ”进行安装，通过’pip install –upgrade qstock’进行更新。目前部分策略选股和策略回测功能仅供知识星球会员使用，会员可在知识星球置顶帖子上获取 qstock 的离线安装包。\n\n\n\nPyPI：https://pypi.org/project/qstock/1.3.7/\n\n关于 qstock 更详细的使用方法，请参考微信公众号Python金融量化 qstock 专题系列文章：\n\n【qstock开源了】数据篇之行情交易数据\n【qstock数据篇】行业概念板块与资金流\n【qstock量化】数据篇之股票基本面数据\n【qstock量化】数据篇之宏观指标和财经新闻文本\n【qstock量化】动态交互数据可视化\n【qstock量化】技术形态与概念热点选股池\n【手把手教你】使用qstock实现量化策略选股\n【手把手教你】使用qstock进行量化回测\n 基于qstock的量化复盘与自动盯盘\n\n下面为大家介绍qstock各模块的具体调用方式和应用举例。\n\n\n```python\n#导入qstock模块\nimport qstock as qs\n```\n\n# 数据模块\n# 行情交易数据接口\n\n## 实时行情数据\n获取指定市场所有标的或单个或多个证券最新行情指标\nrealtime_data(market='沪深A', code=None):\n\n- market表示行情名称或列表，默认'沪深A股',\n    '沪深京A':沪深京A股市场行情; '沪深A':沪深A股市场行情;'沪A':沪市A股市场行情\n    '深A':深市A股市场行情;北A :北证A股市场行情;'可转债':沪深可转债市场行情;\n    '期货':期货市场行情;'创业板':创业板市场行情;'美股':美股市场行情;\n    '港股':港股市场行情;'中概股':中国概念股市场行情;'新股':沪深新股市场行情;\n    '科创板':科创板市场行情;'沪股通' 沪股通市场行情;'深股通':深股通市场行情;\n    '行业板块':行业板块市场行情;'概念板块':概念板块市场行情;\n    '沪深指数':沪深系列指数市场行情;'上证指数':上证系列指数市场行情\n    '深证指数':深证系列指数市场行情;'ETF' ETF基金市场行情;'LOF' LOF 基金市场行情\n- code:输入单个或多个证券的list，不输入参数，默认返回某市场实时指标\n  如code='中国平安'，或code='000001'，或code=['中国平安','晓程科技','东方财富']\n\n### 某市场所有标的最新行情\n\n\n```python\n#获取沪深A股最新行情指标\ndf=qs.realtime_data()\n#查看前几行\ndf.head()\n```\n\n```python\n#获取期货最新行情指标\ndf=qs.realtime_data('期货')\n#查看前几行\ndf.head()\n```\n\n\n\n```python\n#获取概念板块最新行情指标\ndf=qs.realtime_data('概念板块')\n#查看前几行\ndf.head()\n```\n\n\n```python\n#获取ETF最新行情指标\ndf=qs.realtime_data('ETF')\n#查看前几行\ndf.head()\n```\n\n\n\n### 个股最新行情指标\n- code:输入单个或多个证券的list，不输入参数，默认返回某市场实时指标\n  如code='中国平安'，或code='000001'，或code=['中国平安','晓程科技','东方财富']\n\n\n```python\nqs.realtime_data(code=['中国平安','300684','锂电池ETF','BK0679','上证指数'])\n```\n\n\n\n### 日内成交数据\nintraday_data(code)\n- code可以为股票或债券或期货或基金代码简称或代码，如晓程科技或300139,返回股票、期货、债券等的最新交易日成交情况\n\n\n```python\n#股票日内交易数据\ndf=qs.intraday_data('中国平安')\ndf.head()\n```\n\n\n```python\n#基金日内交易数据\ndf=qs.intraday_data('有色50ETF')\ndf.head()\n```\n\n\n\n### 获取个股实时交易快照\nstock_snapshot(code):\n- 获取沪深市场股票最新行情快照，code:股票代码\n\n\n```python\nqs.stock_snapshot('中国平安')\n```\n\n\n\n### 实时交易盘口异动数据\n获取交易日实时盘口异动数据，相当于盯盘小精灵。\nrealtime_change(flag=None):\n- flag：盘口异动类型，默认输出全部类型的异动情况。可选：['火箭发射', '快速反弹','加速下跌', '高台跳水', '大笔买入', '大笔卖出', \n '封涨停板','封跌停板', '打开跌停板','打开涨停板','有大买盘','有大卖盘', \n '竞价上涨', '竞价下跌','高开5日线','低开5日线',  '向上缺口','向下缺口', \n '60日新高','60日新低','60日大幅上涨', '60日大幅下跌']\n 上述异动类型分别可使用1-22数字代替。\n\n\n```python\ndf=qs.realtime_change('60日新高')\n#查看前几行\ndf.head()\n```\n\n\n\n```python\n#异动类型：火箭发射\ndf=qs.realtime_change(1)\n#查看前几行\ndf.head()\n```\n\n\n\n\n\n## 历史行情数据\n\n### 历史K线\n\n获取单只或多只证券（股票、基金、债券、期货)的历史K线数据。可以根据realtime_data实时行情接口获取相应金融市场交易标的的代码或简称，用于获取其历史K线数据。\n- get_data(code_list, start='19000101', end=None, freq='d', fqt=1)\n    \n获取股票、指数、债券、期货、基金等历史K线行情。参数说明：\n- code_list输入股票list列表，如code_list=['中国平安','贵州茅台','工业富联']\n，返回多只股票多期时间的面板数据\n- start和end为起始和结束日期，年月日\n- freq:时间频率，默认日，1 : 分钟；5 : 5 分钟；15 : 15 分钟；30 : 30 分钟；\n    60 : 60 分钟；101或'D'或'd'：日；102或‘w’或'W'：周; 103或'm'或'M': 月\n    注意1分钟只能获取最近5个交易日一分钟数据\n- fqt:复权类型，0：不复权，1：前复权；2：后复权，默认前复权\n\n#### 个股数据\n\n\n```python\n#默认日频率、前复权所有历史数据\n#open：开盘价，high：最高价，low：最低价，close：收盘价\n#vol：成交量，turnover：成交金额，turnover_rate:换手率\n#在notebook上输入\"qs.get_data?\"可查看数据接口的相应参数\ndf=qs.get_data('601318')\ndf.tail()\n```\n\n\n```python\n#个股code_list可以输入代码或简称或多个股票的list\n#获取中国平安2022年9月28日至今的5分钟数据，默认前复权\ndf=qs.get_data('中国平安',start='20220928',freq=5)\ndf.tail()\n```\n\n\n#### 获取美股数据\n\n\n```python\n#获取苹果公司股票数据\ndf=qs.get_data('AAPL')\ndf.tail()\n```\n\n#### 获取期货历史K线数据\n\n\n```python\ndf=qs.get_data('棕榈油2210')\ndf.tail()\n```\n\n#### 指数\n注意上证指数代码'000001'与平安银行股票代码相同，\n为避免代码相同引起的混乱，获取指数数据，要输入指数的中文简称或拼音缩写。\n如'sh'代表'上证指数'，'sz'代表'深证综指'，'cyb'代表‘创业板指'，'zxb'代表'中小100'（原来的中小板指数），'hs300'代表'沪深300'，'sz50'代表\n'上证50','zz500'代表'中证500'等等\n\n\n```python\ncode_list=['sh','sz','cyb','zxb','hs300','sz50','zz500']\ndf=qs.get_data(code_list)\ndf\n```\n\n\n```python\n#全球指数可参见：https://quote.eastmoney.com/center/qqzs.html\nglobal_indexs=['道琼斯','标普500','纳斯达克','恒生指数','英国富时','法国CAC40','德国DAX',\n              '日经225','韩国KOSPI','澳大利亚标普200','印度孟买SENSEX','俄罗斯RTS','加拿大S\u0026P',\n               '台湾加权','美元指数','路透CRB商品指数']\n```\n\n\n```python\nqs.get_data(global_indexs)\n```\n\n\n### 多只证券的历史价格数据\n获取单只或多只证券（股票、基金、债券、期货)的收盘价格dataframe\n\n- get_price(code_list, start='19000101', end='20500101', freq='d', fqt=1)\n\ncode_list输入股票list列表\n 如code_list=['中国平安','贵州茅台','工业富联']\n\n\n```python\ncode_list=['中国平安','300684','锂电池ETF','BK0679','上证指数']\ndf=qs.get_price(code_list)\ndf.tail()\n```\n\n\n\n## 股票龙虎榜数据\n- stock_billboard(start=None, end=None)\n\n起始和结束日期默认为None，表示最新，日期格式'2021-08-21'\n  \n\n\n```python\ndf=qs.stock_billboard('20220901','20221011')\ndf\n```\n\n    4it [00:01,  3.98it/s]                                                                                                 \n    \n\n# 基本面数据\n\n## 股东持股情况\n\n### 股票前十大股东信息\n- stock_holder_top10(code, n=2)\n   \n获取沪深市场指定股票前十大股东信息\n- code : 股票代码\n- n :最新 n个季度前10大流通股东公开信息\n\n\n```python\ndf=qs.stock_holder_top10('中国平安', n=2)\n#df\n```\n\n### 沪深个股股东数量\n- stock_holder_num(date=None)\n获取沪深A股市场公开的股东数目变化情况\n- date : 默认最新的报告期,\n 指定某季度如'2022-03-31','2022-06-30','2022-09-30','2022-12-31'\n\n\n```python\ndf=qs.stock_holder_num('20220930')\n#df\n```\n\n### 大股东增减持变动明细\n\n\n```python\n#大股东\ndf=qs.stock_holder_change()\ndf.head()\n```\n\n\n\n### 机构持股\n- institute_hold(quarter = \"20221\")\n\n获取新浪财经机构持股一览表\n- quarter: 如'20221表示2022年一季度，\n其中的 1 表示一季报; \"20193\", 其中的 3 表示三季报;\n\n\n```python\n#2022年2季度\ndf=qs.institute_hold('20222')\n#df\n```\n\n## 主营业务\n- main_business(code= \"000001\")\n    \n获取公司主营业务构成\n- code: 股票代码或股票简称\n\n\n```python\ndf=qs.main_business('丰元股份')\n#df.head()\n```\n\n## 财务报表\n\n- financial_statement(flag='业绩报表',date=None):\n- flag:报表类型,默认输出业绩报表;\n    '业绩报表'或'yjbb'：返回年报季报财务指标;\n    '业绩快报'或'yjkb'：返回市场最新业绩快报;\n    '业绩预告'或'yjyg'：返回市场最新业绩预告;\n    '资产负债表'或'zcfz'：返回最新资产负债指标;\n    '利润表'或'lrb'：返回最新利润表指标;\n    '现金流量表'或'xjll'：返回最新现金流量表指标.\n- date:报表日期，如‘20220630’，‘20220331’，默认当前最新季报（或半年报或年报）\n\n\n### 业绩报表\n\n\n```python\ndf=qs.financial_statement('业绩报表',date='20220930')\n#df.head()\n```\n                                                                                                                         \n\n### 业绩预告\n\n\n```python\ndf=qs.financial_statement('yjyg')\n#df.head()\n```\n\n                                                                                                                           \n\n### 业绩快报\n\n\n```python\n#注意参数设置有个小bug，目前调用会报错，将在新版本中修正！\ndf=qs.financial_statement('yjkb')\n#df.head()\n```\n\n### 资产负债表\n\n\n```python\ndf=qs.financial_statement('资产负债表')\n#查看前几行\n#df.head()\n```\n\n                                                                                                                           \n\n### 利润表\n\n\n```python\ndf=qs.financial_statement('利润表')\n#查看前几行\n#df.head()\n```\n\n                                                                                                                           \n\n### 现金流量表\n\n\n```python\ndf=qs.financial_statement('现金流量表')\n#查看前几行\n#df.head()\n```\n                                                                                                                           \n\n## 财务指标\n\n### 个股基本财务指标\n\n- stock_basics(code_list)\n\ncode_list:代码或简称，可以输入单只或多只个股的list  \n如：单只个股：code_list='中国平安'；  \n多只个股code_list=['晓程科技','中国平安','西部建设']  \n返回：代码、名称、净利润、总市值、流通市值、所处行业、市盈率、市净率、ROE、毛利率和净利率指标\n\n\n```python\ncode_list=['300139','中国平安','西部建设','贵州茅台','丰元股份','002432']\ndf=qs.stock_basics(code_list)\n#df\n```\n    \n\n### 个股详细财务指标\n- stock_indicator(code):\n   \n获取个股历史报告期所有财务分析指标\n\n    code: 股票代码或简称\n\n\n```python\ndf=qs.stock_indicator('中国平安')\n#df.head()\n```\n                                                                                                                           \n\n## 每股收益预测\n\n\n```python\ndf=qs.eps_forecast()\n#df.head()\n```\n\n# 指数成分股\n获取常见指数的成分股\n\n- index_member(code)  \n  code : 指数名称或者指数代码\n\n\n```python\n#上证50成份股\ndf=qs.index_member('sz50')\n#查看前几行数据\n#df.head()\n```\n\n\n```python\n#沪深300成分股\n#qs.index_member('hs300')\n```\n\n# 概念板块数据\n获取同花顺概念板块名称、成分股、和行情数据\n\n## 获取同花顺概念板块名称\n- ths_index_name(flag='概念')\n \n  flag='概念板块' or '行业板块'\n\n\n```python\n#行业板块名称\nname_list=qs.ths_index_name('行业')\n#查看5个\nname_list[:5]\n```\n\n\n    ['种植业与林业', '养殖业', '农产品加工', '农业服务', '煤炭开采加工']\n\n\n\n```python\n#概念板块名称\nname_list=qs.ths_index_name('概念')\n#查看5个\nname_list[:5]\n```\n                                                                                                                          \n\n\n    ['信创', '有机硅概念', '空气能热泵', '先进封装（Chiplet）', '减速器']\n\n\n\n## 概念板块成分股\n获取同花顺概念板块成分股\n注意，同花顺数据接口不太稳定，如报错过一段时间再试。\n- ths_index_member(code=None)\n\ncode:输入板块行业或概念代码或简称\n   \n\n\n```python\n#比如种植业与林业成分股\ndf=qs.ths_index_member('种植业与林业')\n#查看前几行\n#df.head()\n```\n\n                                                                                                                           \n```python\n#比如有机硅概念\ndf=qs.ths_index_member('有机硅概念')\n#查看前几行\n#df.head()\n```\n\n                                                                                                                           \n\n## 概念指数行情数据\n获取同花顺概念或行业板块指数行情数据(开盘、最高、最低、收盘和成交量）\n- ths_index_data(code=None)\n   \ncode:输入板块行业或概念代码或简称\n\n```python\ndf=qs.ths_index_data('有机硅概念')\n#df.head()\n```\n\n                                                                                                                           \n\n# 资金流数据\n\n## 日内资金流数据\n- intraday_money(code)\n \n code : 股票、债券代码\n \n 获取单只股票最新交易日的日内分钟级单子流入流出数据\n\n\n```python\n#注意要在交易日交易时段才能获取到相应数据\ndf=qs.intraday_money('中国平安')\n#df.head()\n```\n\n## 历史资金流向数据\n- hist_money(code)\n\n code : 股票、债券代码\n \n 获取股票、债券、期货等的历史单子流入流出数据\n\n\n```python\ndf=qs.hist_money('中国平安')\n#df.tail()\n```\n\n## 个股n日资金流\n- stock_money(code, ndays=[3, 5, 10, 20])\n\nstock可以为股票简称或代码，如晓程科技或300139\nndays为时间周期或list，如3日、5日、10日等\n\n\n```python\n#默认ndays=[3, 5, 10, 20]\ndf=qs.stock_money('中国平安')\n#df\n```\n\n\n```python\ndf=qs.stock_money('中国平安',[10,30,60])\n#df.tail()\n```\n\n## 同花顺资金流数据\n获取同花顺个股、行业、概念资金流数据\n- ths_money(flag=None,n=None):\n- flag:'个股','概念','行业'\n- n=1,3,5,10,20分别表示n日资金累计净额\n\n\n```python\n#个股20日资金流数据\ndf=qs.ths_money('个股',n=20)\n#df.tail()\n```\n\n    \n\n\n```python\n#行业板块10日资金流数据\ndf=qs.ths_money('行业',n=10)\n#df.tail()\n```\n\n\n    \n\n\n```python\n#概念板块5日资金流数据\ndf=qs.ths_money('概念',n=5)\n#df.tail()\n```\n\n \n    \n\n# 北向资金\n- north_money(flag=None,n=1)\n\n- flag=None，默认返回北上资金总体每日净流入数据\n- flag='行业',代表北向资金增持行业板块排行\n- flag='概念',代表北向资金增持概念板块排行\n- flag='个股',代表北向资金增持个股情况\n- n:  代表n日排名，n可选1、3、5、10、‘M’，‘Q','Y'\n即 {'1':\"今日\", '3':\"3日\",'5':\"5日\", '10':\"10日\",'M':\"月\", 'Q':\"季\", 'Y':\"年\"}\n\n## 北向资金每日净流入\n\n\n```python\n#北向资金每日净流入数据\ndf=qs.north_money()\n#df.tail()\n```\n\n## 北向资金增持行业板块\n\n\n```python\n#北向资金增持行业板块5日排名\ndf=qs.north_money('行业',5)\n#df.tail()\n```\n\n## 北向资金增持概念板块\n\n\n```python\n#北向资金增持概念板块\ndf=qs.north_money('概念',5)\n#df.tail()\n```\n\n## 北向资金增持个股情况\n\n\n```python\n#北向资金增持个股情况\n#有个小bug，列名没有对应起来，该函数调用将报错，将在新版本中修正。\ndf=qs.north_money('个股',5)\n#df.tail()\n```\n\n# 宏观经济指标\n\n获取宏观经济常见指标\n- macro_data(flag=None)\n\nflag:lpr:贷款基准利率；ms：货币供应量；cpi:消费者物价指数；\n    ppi:工业品出厂价格指数;pmi:采购经理人指数\n    默认返回gdp数据\n\n对应数据也可以使用相应接口，如qs.cpi()、qs.gdp()、qs.ms()、qs.ppi()、qs.pmi()、qs.lpr()可以分别获取CPI、GDP、货币供应量、PPI、PMI数据。\n\n## GDP数据\n\n\n```python\ndf=qs.macro_data('gdp')\n#df\n```\n\n## CPI物价指数\n\n\n```python\ndf=qs.macro_data('cpi')\n#df\n```\n\n## PPI工业品出厂价格指数\n\n\n```python\ndf=qs.macro_data('ppi')\n#df\n```\n\n## pmi采购经理人指数\n\n\n```python\ndf=qs.macro_data('pmi')\n#df\n```\n\n## 货币供应量\n\n\n```python\ndf=qs.macro_data('ms')\n#df\n```\n\n## 贷款基准利率LPR\n\n\n```python\ndf=qs.macro_data('lpr')\n#df\n```\n\n# 同业拆借利率\n\n同业拆借利率\n- ib_rate(market='sh',fc=None):\n- market:同业拆借市场简称，各个市场英文缩写为：\n{'sh':'上海银行同业拆借市场','ch':'中国银行同业拆借市场','l':'伦敦银行同业拆借市场',\n'eu':'欧洲银行同业拆借市场','hk':'香港银行同业拆借市场','s':'新加坡银行同业拆借市场'}\n- fc：外币币种，输入币种的英文简称，\"CNY\"(人民币):,\"GBP\"(英镑),\"EUR\"(欧元) ,\"USD\"(美元) ,\"HKD\"(港币) ,\"SGD\"(星元) \n香港市场，fc可选：'HKD'，'USD','CNY'；新加坡市场，fc可选：'SGD','USD';伦敦市场，fc可选：'GBP','USD','EUR','JPY'；\n\n## 上海银行同业拆借市场\n\n\n```python\n#默认输出上海银行同业拆借市场利率\n#或输入market='sh'\ndf=qs.ib_rate()\ndf\n```\n                                                                                                                         \n\n## 中国银行同业拆借市场\n\n\n```python\ndf=qs.ib_rate(market='ch')\ndf\n```                                                                                                                          \n\n## 伦敦银行同业拆借市场\n\n\n```python\n#伦敦简称l，注意是英文字母‘l’(London的首字母小写)，不是数字1！\n#币种可选GBP'英镑',USD'美元',EUR'欧元',JPY'日元'\ndf=qs.ib_rate(market='l',fc='GBP')\ndf\n```\n\n                                                                                                                          \n\n```python\n#伦敦美元\ndf=qs.ib_rate('l','USD')\ndf\n```\n\n                                                                                                                          \n\n```python\n#伦敦欧元\ndf=qs.ib_rate('l','EUR')\ndf\n```\n\n                                                                                                                           \n\n\n```python\n#伦敦日元\ndf=qs.ib_rate('l','JPY')\n#df\n```\n\n                                                                                                                           \n\n## 欧洲银行同业拆借市场\n\n\n```python\n#欧元\ndf=qs.ib_rate('eu')\ndf\n```\n\n                                                                                                                           \n\n## 香港银行同业拆借市场\n\n\n```python\n#香港市场美元\ndf=qs.ib_rate('hk','USD')\ndf\n```\n\n                                                                                                                           \n\n\n```python\n#香港市场港币\ndf=qs.ib_rate('hk','HKD')\ndf\n```\n\n                                                                                                                           \n\n\n```python\n#香港市场人民币\ndf=qs.ib_rate('hk','CNY')\ndf\n```\n                                                                                                                     \n\n## 新加坡市场\n\n\n```python\n#新加坡美元利率\ndf=qs.ib_rate('s','usd')\ndf\n```\n\n                                                                                                                           \n\n```python\n#新加坡星元利率\ndf=qs.ib_rate('s','SGD')\ndf\n```\n                                                                                                                           \n\n# 财经新闻数据\n\n新闻资讯数据\n- news_data(news_type=None,start=None,end=None,code=None):\n    \n- news_type:新闻类型：cctv'或'新闻联播'；\n    'js'或'金十数据'；'stock' 或'个股新闻'\n    不输入参数，默认输出财联社电报新闻数据。\n- start:起始日期，如'20220930',不输入默认当前最新日期\n- end:结束日期，如'20221001'，不输入默认当前最新日期\n- stock：个股代码，个股新闻时需输入该参数\n\n## 财联社电报新闻数据\n\n\n```python\n#默认参数输出财联社电报新闻数据\ndf=qs.news_data()\ndf.tail()\n```\n\n## 市场快讯数据\n\n\n```python\ndf=qs.news_data('js')\ndf.tail()\n```\n    \n\n## 新闻联播文字\n\n\n```python\n#参数start起始日期，end结束日期，使用默认参数输出最新日期新闻联播\ndf=qs.news_data('cctv',start='20221016',end='20221016')\n#df.head()\n```                                                                                                                          \n\n\n```python\n#也可以使用新闻联播数据接口获取，start和end默认为最新日期\ndf=qs.news_cctv(start='20221016',end='20221016')\ndf.head()\n```\n\n                                                                                                                           \n\n## 个股新闻\n\n\n```python\n#使用新闻统一接口\ndf=qs.news_data('个股',code='天瑞仪器')\ndf.head()\n```\n\n\n```python\n#使用个股新闻接口\ndf=qs.stock_news('天瑞仪器')\ndf.head()\n```\n\n```python\nimport qstock as qs\nfrom qstock import plot\n```\n\n# K线图\n\n## 普通K线图\n\n- kline(df, mas=5, mal=20, notebook=True,title=\"股票K线图\")\n\n参数说明：\n- df:数据，包含open,high,low,close,volume列名的dataframe\n- mas：短期均线，默认5日均线\n- mal：长期均线，默认20日均线\n- notebook：True代表在jupyter notebook上显示，False默认输出html，可以保存本地打开。默认为True\n- title:图形标题\n\n\n```python\n#如果notebook不显示pyecharts的图形，在前面加上以下代码(去掉前面注释)\nfrom pyecharts.globals import CurrentConfig, NotebookType\nCurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_NOTEBOOK\n```\n\n\n```python\n#获取中国平安2022年至今前复权的数据\ndf=qs.get_data('中国平安',start='2022-06-01',end='2022-10-20')\ndf.tail()\n```\n\n    100%|██████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00\u003c00:00, 1000.31it/s]\n    \n\n\n```python\n#使用默认参数\nplot.kline(df)\n```\n\n## 修正K线图\n\n- HA_kline(df)\n\n参数df与前面普通k线图线图。\n\n也叫平均K线图（Heikin-Ashi），具体原理可以参考公众号推文[《【手把手教你】使用Python对股价的Heikin Ashi蜡烛图进行可视化》](https://mp.weixin.qq.com/s?__biz=MzUyMDk1MDY2MQ==\u0026amp;mid=2247484569\u0026amp;idx=1\u0026amp;sn=5e08729f109f1ed4b40323d4ffc24737\u0026amp;chksm=f9e3c273ce944b65d5cb7ae41aa63738ae3ed41e3d0951621ced2a7b4c66cff943fab998bde1\u0026token=292674644\u0026lang=zh_CN#rd)。\n\n普通K线图中往往存在很多噪声，这些噪声容易掩盖市场真实趋势的随机波动，包括价格和成交量波动。比如，对市场影响持续性较短的新闻事件，以及对技术指标和市场趋势解读等，都可能造成无意义的短期价格和交易量波动，这样的噪声会对交易者分析市场产生干扰和误导。为了减少普通K线图产生的噪声，HA蜡烛图应运而生，HA中的四个价格中，HA开盘价和HA收盘价都是经过平均计算得来，平均化的处理相当于噪声消除处理，在一定程度上消除了市场的噪声，可以更加明确地反映市场价格的走势。\n\n\n```python\nplot.HA_kline(df)\n```\n\n# 树状图\n- treemap(data, label, weight, value, color=['Green', 'Red', \"#8b0000\"])\n\n参数说明：\n- data：dataframe数据格式\n- label：需要展示的列名或标签名，必须是list,如[px.Constant('股票'), '行业',  '股票名称']\n    其中，'行业',  '股票名称'必须是data里的存在的列名\n- weight:data里存在的列，用来显示权重\n- value:data里存在的列，用来显示数值\n- color：设置展示的颜色\n\n\n```python\n#获取东方财富行业板块实时涨跌幅数据\ndata=qs.realtime_data('行业板块')[['名称','涨幅']]\ndata['权重']=abs(data['涨幅'])\n#注意去掉涨幅为0的值，否则会报错\ndata=data[data['涨幅']!=0]\nparams={'data':data,'label':['名称'],'weight':'权重','value':'涨幅'}\nplot.treemap(**params)\n```\n\n\n```python\n#获取东方财富概念板块实时涨跌幅数据\ndata=qs.realtime_data('概念')[['名称','涨幅']]\ndata['权重']=abs(data['涨幅'])\ndata=data[data['涨幅']!=0]\nparams={'data':data,'label':['名称'],'weight':'权重','value':'涨幅'}\nplot.treemap(**params)\n```\n\n# ichimoku云图\n\n- plot_ichimoku(df, t=9, k=26, l=30, s=52):\n\n参数说明：\n- df为dataframe数据，包含'open','high','low','close','volume‘列，索引为时间格式\n- t:Tenkan-sen：转折线计算周期，默认9个交易日\n- k：Kijun-sen：基准线计算周期，默认26\n- l:Chikou Span：滞后跨度或延迟线计算周期，默认30天\n- s:Senkou Span B：计算前导跨度B或先行上线B，默认52个交易日\n\nIchimoku，是一名日本报纸作家提出的，用于衡量动量以及未来价格支撑和阻力区域的技术分析指标，目前被广泛用于判断外汇、期货、股票、黄金等投资品种的趋势和动量。关于ichimoku云图的基本原理详细以参考公众号推文：[《【手把手教你】Ichimoku云图指标可视化与交易策略回测》](https://mp.weixin.qq.com/s?__biz=MzUyMDk1MDY2MQ==\u0026amp;mid=2247486220\u0026amp;idx=1\u0026amp;sn=325565ed3aa01cc1cecfed9cbe1a2ae8\u0026amp;chksm=f9e3cde6ce9444f044c43811a4af95ba779c1b13f1ba619aa2182ba316d9ded04872f5cd3473\u0026token=292674644\u0026lang=zh_CN#rd)\n\n\n```python\ndf=qs.get_data('丰元股份',start='2021-03-01')\nplot.plot_ichimoku(df)\n```\n\n  \n    \n\n# 基本图形\n\n## 折线图\n- line(data=None, x=None, y=None, title=None, color=None, line_group=None, facet_col=None, legend=True):\n\n参数：data为series或dataframe的时候，可以不输入x和y。x为x坐标轴对应数据，y为y轴坐标对应数据。\n\n### 普通折线图\n\n\n```python\n#获取中国平安前复权价格数据\ncode='中国平安'\ndf=qs.get_data(code)\nplot.line(df.close,title=code+'价格走势')\n```\n\n   \n\n### 股价分位点折线图\n\n- stock_line(data=None, x=None, y=None, notebook=True, title=None)\n\n参数与前面画图函数相同\n\n\n```python\nplot.stock_line(df.close)\n```\n\n### 对比折线图\n\n\n```python\ndf['ma20']=df.close.rolling(20).mean()\ntitle='中国平安股价与20日均线'\nplot.line(df[['close','ma20']],title=title)\n```\n\n\n```python\n#个股资金流\nplot.line(qs.stock_money('中国平安'),title='中国平安资金流')\n```\n\n全球指数累计涨幅可视化\n\n\n```python\n#常见的全球指数名称\nglobal_indexs=['sh','cyb','恒生指数','道琼斯','标普500','纳斯达克','英国富时100','法国CAC40','德国DAX30','日经225','韩国KOSPI',\n               '澳大利亚标普200','印度孟买SENSEX','台湾加权','俄罗斯RTS','加拿大S\u0026P/TSX','巴西BOVESPA']\nindex_data=qs.get_price(global_indexs,start='2012-01-01').dropna()\nplot.line(index_data/index_data.iloc[0],title='全球指数累计涨幅(2012-2022)')\n```\n\n    \n\n## 柱状图\n\n- bar(data=None, x=None, y=None, title=None, color=None, legend=False,orientation=None, log_x=False, log_y=False, barmode='group')\n\n参数说明：\n'orientation='h'表示横向柱状图,log_x和log_y为True表示使用对数坐标，\n    barmode='group'表示对比条形图,默认。为'relative'，\n    如qs.bar(dd['总市值'],log_x=True,orientation='h')。\n\n\n```python\n#计算收益率\ndata=index_data.copy().dropna()\nrets=data/data.shift(1)-1\nrets=rets.to_period('Y')\nrets=(rets.groupby(rets.index).apply(lambda x: ((1+x).cumprod()-1).iloc[-1])*100).round(2)\nrets=rets.iloc[-1].sort_values(ascending=False)\n```\n\n\n```python\ntitle='全球指数2022年涨跌幅'\nplot.bar(rets,title=title)\n```\n\n基于pyecharts画柱状图\n\n- chart_bar(data=None, x=None, y=None, title=None, notebook=True, zoom=False)\n\nx,y均为list，或者x为dataframe\n\n\n```python\nplot.chart_bar(rets,title=title,zoom=True)\n```\n\n纵向柱状图\n- chart_inv_bar(data=None, x=None, y=None, title=None, notebook=True, zoom=False)\n\nx,y均为list，或者x为dataframe\n\n\n```python\nplot.chart_inv_bar(rets,title=title,zoom=True)\n```\n\n## 散点图\n\n- scatter(data=None, x=None, y=None, title=None, color=None, size=None,trend=None, legend=True, marginal_x=None, marginal_y=None)\n\n参数说明：\ncolor根据不同类型显示不同颜色；\nsize根据值大小显示散点图的大小；\ntrend='ols'添加回归拟合线；\nmarginal_x='violin',添加小提琴图；\nmarginal_y= 'box'，添加箱线图。\n\n\n```python\ndata=qs.get_data('晓程科技')\nplot.scatter(data,x='close',y='volume')\n```\n\n\n```python\ndata=qs.get_data('晓程科技')\n#计算收益率\ndata['ret']=data.close/data.close.shift(1)-1\ndata['weight']=data['ret'].abs()\n#对换手率分类\ndata.loc[data.turnover_rate\u003e20,'rr']='crazy'\ndata.loc[(10\u003cdata.turnover_rate)\u0026(data.turnover_rate\u003c20),'rr']='high'\ndata.loc[(5\u003cdata.turnover_rate)\u0026(data.turnover_rate\u003c10),'rr']='mid'\ndata.loc[data.turnover_rate\u003c5,'rr']='low'\ndata.dropna(inplace=True)\n```\n\n\n\n```python\n#plot.scatter(data,x='turnover_rate',y='close',size='weight',trend='ols',marginal_x='histogram',marginal_y='box')\n```\n\n## 饼图\n\n- pie(data=None, x=None, y=None, color=None, title=None, legend=False, hole=None)\n\ndata为dataframe数据，value；\nhole数值0-1，显示中间空心；\nlegend=True显示图例，默认不显示。\n\n实例：个股主营业务占比可视化\n\n\n```python\ncode='晓程科技'\ndf=qs.main_business(code)\nc1=df['报告期']=='2022中期'\nc2=df['分类方向']=='按产品分'\ndf=df[c1\u0026c2]\ndf\n```\n\n\n```python\n#plot.pie(df.iloc[:-1],x='分类',y='营业收入(万)',title=code+'主营业务收入')\n```\n\n基于pyecharts画饼图\n\n- chart_pie(data=None, x=None, y=None, data_pair=None, title=None, notebook=True)\n\n参数与前面相同\n\n\n```python\nplot.chart_pie(data=df.iloc[:-1],x='分类',y='营业收入(万)',title=code+'主营业务收入')\n```\n\n# 统计分布图\n\n## 直方图\n\n- hist(data=None, x=None, y=None, title=None, color=None, legend=False,orientation=None, log_x=False, log_y=False, barmode='group',\nhistnorm=None)\n\nhistnorm={1:'percent',2:'probability',3:'density',4:'probability density'}，其他参数与前面相同。\n\n\n```python\n#1:'percent',2:'probability',3:'density',4:'probability density'\ncode='晓程科技'\ndata=qs.get_data(code,fqt=2)\nplot.hist(data,x='close',histnorm=3,title=code+'股价直方图')\n```\n\n  \n    \n\n## 概率密度图\n- hist_kde(data=None, x=None, y=None, kde=True, stat='count', figsize=(15, 7)):\n\n直方图默认统计的是观测数，可以进行统计变化，设置stat参数。\nstat可选参数：count:观测数(默认)；\n frequency:频数;density：密度;probability:概率；\n kde=True表示添加核密度曲线。\n \n 其他参数与前面相同\n\n\n```python\nstat可选参数：count:观测数(默认);frequency:频数;density：密度;probability:概率\nplot.hist_kde(data.close,stat='probability')\n```\n\n## 箱线图\n- box(data=None, x=None, y=None, title=None, color=None, legend=False,orientation=None, log_x=False, log_y=False, boxmode=None)\n\n参数与前面相类似。\n\n\n```python\nindex_list=['上证指数','创业板指','沪深300','道琼斯','标普500','纳斯达克']\ndata=qs.get_price(index_list)\nplot.box(data.dropna())\n```\n\n    \n   \n\n```python\n#获取面板数据\ndd=qs.get_data(index_list)\nplot.box(dd,x='name',y='close',color='name')\n```\n    \n\n```python\nplot.box(dd,y='name',x='close',color='name',orientation='h')\n```\n\n## 小提琴图\n- violin(data=None, x=None, y=None, title=None, color=None, legend=False,orientation=None, log_x=False, log_y=False, box=False, points=None)\n\n\n```python\nplot.violin(dd,x='name',y='close',color='name',box=True)\n```\n\n小提琴是是箱线图和核密度图的集合，通过箱线思维展示数据的各个百分位点。小提琴图上的核密度图展示了数据分布的形状，分布越宽的位置表示数据越集中于该处，反之则说明该处数据分布越少。\n\n\n```python\nplot.violin(dd,y='name',x='close',color='name',box=True,orientation='h')\n```\n\n\n```python\nplot.violin(dd.query('name==\"上证指数\"'),y='name',x='close',box=True,orientation='h')\n```\n\n\n```python\nplot.violin(dd.query('name==\"道琼斯\"'),y='name',x='close',box=True,orientation='h')\n```\n\n# 热力图\n\n- chart_heatmap(x, y, v, title=None, notebook=True)\n\n\n```python\nsh0=qs.get_data('上证指数').close['2011':'2021']\nsh=(sh0/sh0.shift(1)-1).to_period('M')\nsh=sh.groupby(sh.index).apply(lambda x: ((((1+x).cumprod()-1).iloc[-1])*100).round(2))\n```\n\n    \n\n\n```python\nx=[str(i) for i in range(2011,2022)]\ny=[str(i)+'月' for i in range(1,13)]\nv= [[i,j,sh[str(2011+i)+'-'+str(1+j)]] for i in range(11) for j in range(12)]\nplot.chart_heatmap(x,y,v,title='上证指数月度收益率')\n```\n\n\n```python\nplot.chart_heatmap_color(x,y,v,title='上证综指月度收益率')\n```\n\n# 地图\n\n- chart_map(data=None, x=None, y=None, data_pair=None, title=None, notebook=True)\n\n\n```python\ndf=qs.realtime_data('地域')\ndf['名称']=df['名称'].apply(lambda s:s[:-2] if s.endswith('板块') else s)\ndf.head()\n```\n\n\n```python\n#地域板块最新价格指数\nplot.chart_map(df,x='名称',y='最新')\n```\n\n# 词云图\n\n\n```python\ntxt=qs.news_data('cctv',start='20221020',end='20221021')\n```\n\n\n```python\n#缺失值处理，转为str格式\ntxt_list=''.join(list(txt.content.apply(lambda s:str(s))))\n```\n\n\n```python\n#使用jieba处理分词并转为词云格式数据\nc_data=plot.cloud_data(txt_list)\n#画词云图\nplot.chart_wordcloud(c_data)\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftkfy920%2Fqstock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftkfy920%2Fqstock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftkfy920%2Fqstock/lists"}