Code Monkey home page Code Monkey logo

1nchaos / adata Goto Github PK

View Code? Open in Web Editor NEW
779.0 20.0 109.0 1.37 MB

免费开源A股量化数据库; 专注A股,专注量化,向阳而生; 开放、纯净、持续、为Ai(爱)发电。为个人量化交易而生,保卫3000(2500)点,珍惜底部机会......【股票数据,股票行情数据,股票量化数据,股票交易数据,k线行情数据,股票概念数据,股票数据接口,行情数据接口】【多数据源融合,动态设置代理,保障数据高可用性】

Home Page: https://adata.30006124.xyz

License: Apache License 2.0

Python 98.03% Jupyter Notebook 1.97%
stock a 3000 financial china quant datasource stock-data stock-market-data kline

adata's Introduction

logo

GitHub language countGitHub top languagePyPI - Python VersionLicenceDownloadsGitHub Repo starsGitHub issuesGitHub contributorsGitHub (Pre-)Release DateDownloadsPyPI - Version

0、介绍

专注A股,专注量化,向阳而生;开放、纯净、持续、为Ai(爱)发电。

专注股票行情数据,为了保证数据的高可用性,采用多数据源融合切换。

目标:支持个人量化行情的需要;众人拾柴火焰高,欢迎加入。

市场寒冷,发热不易,坚持更难;如有帮助到你,右上角点 ⭐Star 一键三连,谢谢支持和收藏^_^

(1)安装sdk

# 首次安装
pip install adata
# 指定镜像源
pip install adata -i http://mirrors.aliyun.com/pypi/simple/

# 升级版本
pip install -U adata
# 指定镜像源
pip install -U adata -i http://mirrors.aliyun.com/pypi/simple/

注:国内镜像可能存在同步延迟,可使用官方镜像源,以下是镜像源

阿里云【推荐】:http://mirrors.aliyun.com/pypi/simple/

清华大学:https://pypi.tuna.tsinghua.edu.cn/simple

官方镜像源:https://pypi.org/simple

(2)使用示例

1. 获取股票代码

获取所有的股票代码

import adata

res_df = adata.stock.info.all_code()
print(res_df)

示例结果:

  stock_code short_name exchange
0        001324       N长青科       SZ
1        301361       众智科技       SZ
2        300514        友讯达       SZ
...         ...        ...      ...
5490     300367        网力退       SZ
5491     300372        欣泰退       SZ
5492     300431        暴风退       SZ

[5493 rows x 3 columns]

2. 获取股票的行情

获取到股票代码后,传入对应的stock_code参数,查询对应股票的行情信息。

import adata

# k_type: k线类型:1.日;2.周;3.月 默认:1 日k
res_df = adata.stock.market.get_market(stock_code='000001', k_type=1, start_date='2021-01-01')
print(res_df)

示例结果:

            trade_time   open  close  ... pre_close stock_code  trade_date
0    2021-01-04 00:00:00  18.69  18.19  ...     18.93     000001  2021-01-04
1    2021-01-05 00:00:00  17.99  17.76  ...     18.19     000001  2021-01-05
2    2021-01-06 00:00:00  17.67  19.15  ...     17.76     000001  2021-01-06
..                   ...    ...    ...  ...       ...        ...         ...
573  2023-05-18 00:00:00  12.57  12.49  ...     12.49     000001  2023-05-18
574  2023-05-19 00:00:00  12.43  12.34  ...     12.49     000001  2023-05-19
575  2023-05-22 00:00:00  12.31  12.38  ...     12.34     000001  2023-05-22

[576 rows :x 13 columns]

3. 其它数据使用

请参考下面数据列表和相关字典文档,找到对应的函数并查看对应的函数注释,进行正确使用。

4. 代理设置

项目是基于公开接口,可能存在限制等,因此增加代理设置功能

import adata

# 设置代理,代理是全局设置,代理失效后可重新设置。参数:ip,proxy_url
adata.proxy(is_proxy=True, ip='60.167.21.27:1133')
res_df = adata.stock.info.all_code()
print(res_df)

注:

  • proxy_url: 获取代理Ip的链接;ip和proxy_url方式选择其一;
  • 每次请求获取一次,为节省ip资源建议使用自建的代理池。

整理了最新版本的数据列表和相关使用Api,详细内容和相关使用参数,请参考数据字典文档。

(1)股票-Stock

1. 基本信息

数据 API 说明 备注
A股代码 stock.info.all_code() 所有A股代码信息
股本信息 stock.info.get_stock_shares() 获取单只股票的股本信息 来源:东方财富
申万一二级行业 stock.info.get_industry_sw() 获取单只股票的申万一二级行业 来源:百度
概念
来源:同花顺
概念代码 stock.info.all_concept_code_ths() 所有A股概念代码信息(同花顺) 来源:同花顺公开数据
概念成分列表 stock.info.concept_constituent_ths() 获取同花顺概念指数的成分股(同花顺) 注意:返回结果只有股票代码和股票简称,可根据概念名称查询
股票所属概念 stock.info.get_concept_ths() 获取单只股票所属的概念板块 F10
来源:东方财富
概念代码 stock.info.all_concept_code_east() 所有A股概念代码信息(东方财富) 来源:东方财富
概念成分列表 stock.info.concept_constituent_east() 获取同花顺概念指数的成分股(东方财富) 注意:返回结果只有股票代码和股票简称,可根据概念名称查询
股票所属概念 stock.info.get_concept_east() 获取单只股票所属的概念板块 核心题材
指数
指数代码 stock.info.all_index_code() 获取所有A股市场的指数代码 来源同花顺,可能存在同花顺对代码重新编码的情况
指数对应的成分股 stock.info.index_constituent() 获取对应指数的成分股列表
其它
股票交易日历 stock.info.trade_calendar() 获取股票交易日信息 来源:深交所

2. 行情信息

数据 API 说明 备注
分红信息 stock.market.get_dividend() 获取单只股票的分红信息
股票行情 stock.market.get_market() 获取单只股票的行情信息-日、周、月 k线
stock.market.get_market_min() 获取单个股票的今日分时行情 只能获取当天
实时行情 stock.market.list_market_current() 获取多个股票最新行情信息 实时行情
数据源:2个,新浪和腾讯
stock.market.get_market_five() 获取单个股票的5档行情信息 实时行情
数据源:2个,腾讯和百度
stock.market.get_market_bar() 获取单个股票的分笔成交行情 实时行情
股市通
概念行情-同花顺 stock.market.get_market_concept_ths() 获取单个概念的行情信息-日、周、月 k线 获取同花顺概念行情时,
请注意传入参数是指数代码还是概念代码,
指数代码8开头,index_code
stock.market.get_market_concept_min_ths() 获取同花顺概念行情-当日分时 只能获取当天
stock.market.get_market_concept_current_ths() 获取同花顺当前的概念行情 实时行情
概念行情-东方财富 stock.market.get_market_concept_east() 获取单个概念的行情信息-日、周、月 k线 获取东方财富概念行情时,
指数代码BK开头,index_code
stock.market.get_market_concept_min_east() 获取同花顺概念行情-当日分时 只能获取当天
stock.market.get_market_concept_current_east() 获取同花顺当前的概念行情 实时行情
指数行情 stock.market.get_market_index() 获取指数的行情信息-日、周、月 k线
stock.market.get_market_index_min() 获取指数的行情-当日分时
stock.market.get_market_index_current() 获取当前的指数行情 实时行情
个股资金流 stock.market.get_capital_flow_min() 获取单个股票的今日分时资金流向 最新实时数据
stock.market.get_capital_flow() 获取单个股票的资金流向 历史日度数据

注:概念和指数从本质来看是一样的,所以相关的接口和返回结果是一致的,概念是各个厂商自定义的指数,指数是官方或者权威机构定义的,都是一揽子股票的组合。

(2)基金-ETF

1. 基本信息

数据 API 说明 备注
ETF(场内) fund.info.all_etf_exchange_traded_info() 获取所有A股市场的ETF信息 来源:1. 东方财富

2. 行情信息

数据 API 说明 备注
ETF行情 fund.market.get_market_etf() 获取ETF的行情信息-日、周、月 k线 来源:同花顺
fund.market.get_market_etf_min() 获取ETF的行情-当日分时
fund.market.get_market_etf_current() 获取当前的ETF行情 实时行情

(3)债券-Bond

数据 API 说明 备注
可转债代码 bond.info.all_convert_code() 获取所有A股市场的可转换债券代码信息 来源:1. 同花顺
可转债行情 bond.market.list_market_current() 获取A股市场的可转换债券最新行情 来源:新浪

(4)舆情

数据 API 说明 备注
最近一个月的股票解禁列表 sentiment.stock_lifting_last_month() 查询最近一个月的股票解禁列表 来源:1. 同花顺
全市场融资融券余额列表 sentiment.securities_margin() 查询全市场融资融券余额列表 来源:1. 东方财富
北向资金-行情
sentiment.north.north_flow_current() 获取北向资金(沪深港通)当前流入资金的行情 来源:1.东方财富
sentiment.north.north_flow_min() 获取北向资金分时行情
sentiment.north.north_flow() 获取北向资金历史流入行情
热度榜单 sentiment.hot.pop_rank_100_east 东方财富人气100榜单 来源:东方财富
sentiment.hot.hot_rank_100_ths() 同花顺热度100排行榜 来源:同花顺
sentiment.hot.hot_concept_20_ths() 同花顺热门概念板块20排行榜 来源:同花顺
sentiment.hot.list_a_list_daily() 龙虎榜单列表 来源:东方财富
sentiment.get_a_list_info() 单只股票龙虎榜信息详情 来源:东方财富
其它数据排期中 TODO 若您有相关资源可以一起参与贡献

三、数据源

数据源 板块 描述
同花顺 数据中心行情中心问财 让投资变的更简单
百度股市通 股市通 科技让投资更简单
东方财富 数据中心行情中心 财经门户
腾讯理财 行情中心
新浪财经 新浪财经 门户网站

--------------------------------------------感谢各位大厂提供的数据----------------------------------------------

四、 其它参考

主要记录查阅过的项目和相关平台,并对此项目产生了深远印象,特此鸣谢。

akshare 聚宽量化 baostock MyData

五、发布计划

版本号 内容 发布日期 备注
0.x.x 股票 2023-04-05 ~ 预览版本
✅ ️ 1.x.x 股票 2023-10-01 **Ai股
☑️ 2.x.x 基金、债券 开发中 场内可交易基金:ETF、可转债
☑️ 3.x.x xxx 排期中

六、理念

  1. 关于AData,我们只关注交易产生的数据。在A股只有交易数据是真实的,对于量化和AI训练,也只需要关心交易相关的行情数据,做到真正的专注。当然,你可能会说财务数据等也非常有用,但财务数据相对滞后,而且可能ZJ,甚至有XL可能,最终对于普通交易者可能就成了接盘侠。财务数据在我们这里,只做股票池筛选作用,不做实时交易指标推荐。

  2. 根据多年的数据治理经验,函数和字典在设计上面,符合标准的数据存储,可根据数据字典建表落地到数据库。

  3. 距离15年已过8年,时光匆匆,抓住底部机会

注:

  • 永久免费开源A股数据库,只有交易相关的数据,专注量化交易。
  • 送给A股的各位朋友一首歌:谢天笑-向阳花,愿你我向阳而生。

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码(注意代码风格和本项目一致即可)
  4. 新建 Pull Request

特别鸣谢

对于项目有支持,包括但不仅限:内容贡献,bug提交,**交流等等,对项目有影响的个人和机构

Simon bigbigbigfish LuneZ99 匿名用户 thue Triones009 adaaaaaa LeslieWuboy yinzhengxin
yxm0513 hanxuanliang akihara-sam Andy baei2048

Star History

Star History Chart

欢迎进行交流

logo logo

  • 添加wx好友,备注:Adata量化进交流群;
  • 扫码关注向阳花策略,不定期分享量化的知识,一起实盘量化切磋;
  • 创始交流群和公众号都是近期建立,意在提供一个交流的平台,欢迎讨论交流;
  • 一起保卫3000点直到突破6124点。

adata's People

Contributors

1nchaos avatar komomoo avatar lunez99 avatar secondfish90 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

adata's Issues

requirements.txt 版本限制

requirements.txt 中限制的版本全部为限制小版本的形式,实际上该项目应该没有依赖特定版本的基础库,所以这些限制可以更宽松一些,或是使用更新的版本,避免和工作流中的其他版本产生冲突。例如 requests 已经更新至 2.31.0,则 requests~=2.26.0 可以更改为 requests>=2.26.0

tqdm~=4.65.0
requests~=2.26.0
pandas~=1.5.3
beautifulsoup4~=4.11.2
py_mini_racer>=0.6.0

对部分股票调日线数据时报错

对002824、002838-002860等股票调日线数据时出现ValueError

报错代码:
import adata s_rixian = adata.stock.market.get_market(stock_code='002860', k_type=1, start_date='2017-01-01') s_rixian

报错详情如下:
1e7cc9d3f43bd6a51e642afe23f6d6c

疑似是在计算change_pct时的数据格式问题

股票指数info接口数据缺失以及指数的分时、日度数据存在Nan问题

Describe the bug
1、股票指数info接口,目前只能取前250个指数,数量不齐全(默认只能取前五页,第六页开始跳转页面了,图1)
2、指数的分时、K线数据存在Nan问题(主要是第一天的涨跌幅可能存在Nan值未处理,图2)

Expected behavior
如图3所示,进行数值相关的列进行格式化。

Screenshots
image
1720200488437
image

部分基金数据获取抛出异常

Describe the bug
调用如下接口,参数“515670”,报异常
adata.fund.market.get_market_etf("515670")

To Reproduce
Steps to reproduce the behavior:

  1. pip install adata
  2. open a new .py file and paste following
    import adata
    adata.fund.market.get_market_etf("515670")

Run

Expected behavior
Function crash

Screenshots
Crash Log:
Traceback (most recent call last):
File "d:\projects\outsource_data\main.py", line 37, in
adata.fund.market.get_market_etf("515670")
File "d:\InstalledApp\conda\envs\outsource_data\lib\site-packages\adata\fund\market\etf_market.py", line 30, in get_market_etf
return self.ths.get_market_etf_ths(fund_code, k_type, start_date, end_date)
File "d:\InstalledApp\conda\envs\outsource_data\lib\site-packages\adata\fund\market\etf_market_ths.py", line 50, in get_market_etf_ths
result_df = pd.DataFrame(data=data, columns=['trade_date', 'open', 'high', 'low', 'close', 'volume', 'amount'])
File "d:\InstalledApp\conda\envs\outsource_data\lib\site-packages\pandas\core\frame.py", line 851, in init
arrays, columns, index = nested_data_to_arrays(
File "d:\InstalledApp\conda\envs\outsource_data\lib\site-packages\pandas\core\internals\construction.py", line 520, in nested_data_to_arrays arrays, columns, index = nested_data_to_arrays(
File "d:\InstalledApp\conda\envs\outsource_data\lib\site-packages\pandas\core\internals\construction.py", line 845, in to_arraysuction.py", line 520, in nested_data_to_arrays
arrays, columns = to_arrays(data, columns, dtype=dtype) uction.py", line 942, in _finalize_columns_and_data
File "d:\InstalledApp\conda\envs\outsource_data\lib\site-packages\pandas\core\internals\construction.py", line 845, in to_arrays
content, columns = _finalize_columns_and_data(arr, columns, dtype)
File "d:\InstalledApp\conda\envs\outsource_data\lib\site-packages\pandas\core\internals\construction.py", line 942, in _finalize_columns_and_data
raise ValueError(err) from err
ValueError: 7 columns passed, passed data had 1 columns

Desktop (please complete the following information):

  • OS: windows 10
  • Browser Chrome
  • Python 3.10

Additional context
看上去是没有处理数据源返回的“空数据”。

获取历史数据不准确

以**石化 600028 为例,前面部分的价格为负数,是数据源的问题吗
trade_time open close ... pre_close stock_code trade_date
0 2001-08-08 00:00:00 -1.86 -2.01 ... 0.00 600028 2001-08-08
1 2001-08-09 00:00:00 -2.02 -2.06 ... -2.01 600028 2001-08-09
2 2001-08-10 00:00:00 -2.06 -2.02 ... -2.06 600028 2001-08-10
3 2001-08-13 00:00:00 -2.03 -2.04 ... -2.02 600028 2001-08-13
4 2001-08-14 00:00:00 -2.04 -2.06 ... -2.04 600028 2001-08-14
... ... ... ... ... ... ... ...
5450 2024-04-15 00:00:00 6.39 6.65 ... 6.38 600028 2024-04-15
5451 2024-04-16 00:00:00 6.61 6.68 ... 6.65 600028 2024-04-16
5452 2024-04-17 00:00:00 6.64 6.64 ... 6.68 600028 2024-04-17
5453 2024-04-18 00:00:00 6.56 6.54 ... 6.64 600028 2024-04-18
5454 2024-04-19 00:00:00 6.53 6.67 ... 6.54 600028 2024-04-19

是否有按天获取所有股票的数据API?

我把历史数据保存在了数据库,每天获取一天新的数据,现在要调用的API数量有点多,是否能实现一个API获取多个股票的当天数据?能拿到所有的当天数据。

regex=True报错

我使用的环境pandas==2.0.3,在默认示例代码中报错

import adata
# k_type: k线类型:1.日;2.周;3.月 默认:1 日k
res_df = adata.stock.market.get_market(stock_code='000001', k_type=1, start_date='2021-01-01')
print(res_df)

报错信息:

---------------------------------------------------------------------------
error                                     Traceback (most recent call last)
Cell In[2], line 1
----> 1 res_df = adata.stock.market.get_market(stock_code='600519', k_type=1, start_date='2022-01-01')
      2 print(res_df)

File D:\software\conda\envs\qlib\lib\site-packages\adata\stock\market\stock_market\stock_market.py:37, in StockMarket.get_market(self, stock_code, start_date, k_type, adjust_type)
     28 def get_market(self, stock_code: str = '000001', start_date='1990-01-01', k_type=1, adjust_type: int = 1):
     29     """
     30     获取单个股票的行情
     31     :param stock_code: 股票代码
   (...)
     35     :return: k线行情数据
     36     """
---> 37     return self.baidu.get_market(stock_code=stock_code, start_date=start_date, k_type=k_type)

File D:\software\conda\envs\qlib\lib\site-packages\adata\stock\market\stock_market\stock_market_baidu.py:84, in StockMarketBaiDu.get_market(self, stock_code, start_date, k_type, adjust_type)
     82 result_df.replace('--', None, inplace=True)
     83 result_df.replace('', None, inplace=True)
---> 84 result_df['change'] = result_df['change'].str.replace('+', '', regex=True)
     85 result_df['change_pct'] = result_df['change_pct'].str.replace('+', '', regex=True)
     86 # 5. 数据清洗,剔除成交量为0的异常数据

File D:\software\conda\envs\qlib\lib\site-packages\pandas\core\strings\accessor.py:129, in forbid_nonstring_types.<locals>._forbid_nonstring_types.<locals>.wrapper(self, *args, **kwargs)
    124     msg = (
    125         f"Cannot use .str.{func_name} with values of "
    126         f"inferred dtype '{self._inferred_dtype}'."
    127     )
    128     raise TypeError(msg)
--> 129 return func(self, *args, **kwargs)

File D:\software\conda\envs\qlib\lib\site-packages\pandas\core\strings\accessor.py:1505, in StringMethods.replace(self, pat, repl, n, case, flags, regex)
   1502 if case is None:
   1503     case = True
-> 1505 result = self._data.array._str_replace(
   1506     pat, repl, n=n, case=case, flags=flags, regex=regex
   1507 )
   1508 return self._wrap_result(result)

File D:\software\conda\envs\qlib\lib\site-packages\pandas\core\strings\object_array.py:170, in ObjectStringArrayMixin._str_replace(self, pat, repl, n, case, flags, regex)
    168     if regex is False:
    169         pat = re.escape(pat)
--> 170     pat = re.compile(pat, flags=flags)
    172 n = n if n >= 0 else 0
    173 f = lambda x: pat.sub(repl=repl, string=x, count=n)

File D:\software\conda\envs\qlib\lib\re.py:252, in compile(pattern, flags)
    250 def compile(pattern, flags=0):
    251     "Compile a regular expression pattern, returning a Pattern object."
--> 252     return _compile(pattern, flags)

File D:\software\conda\envs\qlib\lib\re.py:304, in _compile(pattern, flags)
    302 if not sre_compile.isstring(pattern):
    303     raise TypeError("first argument must be string or compiled pattern")
--> 304 p = sre_compile.compile(pattern, flags)
    305 if not (flags & DEBUG):
    306     if len(_cache) >= _MAXCACHE:
    307         # Drop the oldest item

File D:\software\conda\envs\qlib\lib\sre_compile.py:764, in compile(p, flags)
    762 if isstring(p):
    763     pattern = p
--> 764     p = sre_parse.parse(p, flags)
    765 else:
    766     pattern = None

File D:\software\conda\envs\qlib\lib\sre_parse.py:948, in parse(str, flags, state)
    945 state.str = str
    947 try:
--> 948     p = _parse_sub(source, state, flags & SRE_FLAG_VERBOSE, 0)
    949 except Verbose:
    950     # the VERBOSE flag was switched on inside the pattern.  to be
    951     # on the safe side, we'll parse the whole thing again...
    952     state = State()

File D:\software\conda\envs\qlib\lib\sre_parse.py:443, in _parse_sub(source, state, verbose, nested)
    441 start = source.tell()
    442 while True:
--> 443     itemsappend(_parse(source, state, verbose, nested + 1,
    444                        not nested and not items))
    445     if not sourcematch("|"):
    446         break

File D:\software\conda\envs\qlib\lib\sre_parse.py:668, in _parse(source, state, verbose, nested, first)
    666     item = None
    667 if not item or item[0][0] is AT:
--> 668     raise source.error("nothing to repeat",
    669                        source.tell() - here + len(this))
    670 if item[0][0] in _REPEATCODES:
    671     raise source.error("multiple repeat",
    672                        source.tell() - here + len(this))

error: nothing to repeat at position 0

发现错误出在adata\stock\market\stock_market\stock_market_baidu.py: 84
当我尝试去掉84以及下方几行regex=True之后, 数据可以正常展示
如果代码功能仅需要去掉数据中的加号的话应该不需要regex=True

请教一下 如何回测数据

感谢接口的提供!

我这里想要同花顺的历史某天的分时数据来回测,想请教一下有没有好的回测方式。
接口里分时数据都是实时的,好像没法获取到历史某一天的。

NameError: name 'StockMarketBaiDu' is not defined

获取日K报错:

Traceback (most recent call last):
File "main.py", line 2, in
res_df = adata.stock.market.get_market(stock_code='000100', k_type=1, start_date='2021-01-01')
File "/home/bigfish/.local/lib/python3.8/site-packages/adata/stock/market/stock_market/stock_market.py", line 32, in get_market
return StockMarketBaiDu().get_market(stock_code=stock_code, start_date=start_date, k_type=k_type)
NameError: name 'StockMarketBaiDu' is not defined

获取概念信息缺失

首先感谢 @1nchaos 的开源壮举,数据源用的很顺畅,解决了我很多棘手问题。

Describe the bug
StockConceptThsget_concept_ths(...) 函数在获取概念信息的实现只提取了页面中的第一个table,最新打开一个
https://basic.10jqka.com.cn/300033/concept.html 页面可以看到多个table,因此会缺失一些概念,不知是否故意为之?

如果目前的数据不符合预期,我会提交一个pr,修复它。

单个股所属概念查询报错

603958 哈森股份
查询此个股报错

TypeError Traceback (most recent call last)
Cell In[22], line 3
1 # for i in zt['代码']:
2 # print(a.stock.info.get_concept_east(stock_code=i))
----> 3 a.stock.info.get_concept_east(stock_code='603958')
4 # a.stock.info.trade_calendar(year=2024)

File /.local/lib/python3.11/site-packages/adata/stock/info/concept/stock_concept_east.py:88, in StockConceptEast.get_concept_east(self, stock_code)
81 url = f"https://datacenter.eastmoney.com/securities/api/data/v1/get?"
82 f"reportName=RPT_F10_CORETHEME_BOARDTYPE&"
83 f"columns=SECUCODE%2CSECURITY_CODE%2CSECURITY_NAME_ABBR%2CNEW_BOARD_CODE%2CBOARD_NAME%2CSELECTED_BOARD_REASON%2CIS_PRECISE%2CBOARD_RANK%2CBOARD_YIELD%2CDERIVE_BOARD_CODE&"
84 f"quoteColumns=f3
05NEW_BOARD_CODEBOARD_YIELD&"
85 f"filter=(SECUCODE%3D%22{stock_code}%22)(IS_PRECISE%3D%221%22)&pageNumber=1&pageSize=50&sortTypes=1&"
86 f"sortColumns=BOARD_RANK&source=HSF10&client=PC"
87 res_json = requests.request('get', url, headers={}, proxies={}).json()
---> 88 res_data = res_json['result']['data']
89 data = []
90 for _ in res_data:
91 # ['stock_code', 'short_name', 'concept_code', 'name', 'reason', 'source']

TypeError: 'NoneType' object is not subscriptable

获取历史行情数据-分钟数据

新年快乐🎉!

如题:看目前提供的API中,能获取日线级别数据。但是30/60分钟级别数据无法获取,这个在一些中频策略中是个比较常见的数据源需求

运行“获取A股所有股票代码信息列表”报错

运行以下代码:
import adata
df = adata.stock.info.all_code()
print(df)
报错:
Traceback (most recent call last):
File "C:\Users\Admin\PycharmProjects\pythonProject3\chap8\用AData获取所有的股票代码.py", line 3, in
df = adata.stock.info.all_code()
File "C:\Users\Admin\anaconda3\lib\site-packages\adata\stock\info\stock_code.py", line 44, in all_code
code = pd.read_csv(get_code_csv_path())[['stock_code', 'list_date2']]
File "C:\Users\Admin\anaconda3\lib\site-packages\pandas\util_decorators.py", line 311, in wrapper
return func(*args, **kwargs)
File "C:\Users\Admin\anaconda3\lib\site-packages\pandas\io\parsers\readers.py", line 678, in read_csv
return _read(filepath_or_buffer, kwds)
File "C:\Users\Admin\anaconda3\lib\site-packages\pandas\io\parsers\readers.py", line 575, in _read
parser = TextFileReader(filepath_or_buffer, **kwds)
File "C:\Users\Admin\anaconda3\lib\site-packages\pandas\io\parsers\readers.py", line 932, in init
self._engine = self._make_engine(f, self.engine)
File "C:\Users\Admin\anaconda3\lib\site-packages\pandas\io\parsers\readers.py", line 1216, in _make_engine
self.handles = get_handle( # type: ignore[call-overload]
File "C:\Users\Admin\anaconda3\lib\site-packages\pandas\io\common.py", line 786, in get_handle
handle = open(
FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\Admin\anaconda3\lib\site-packages\adata\stock\cache/code.csv'

进程已结束,退出代码1
我的运行环境 pycharm 2303.1.4 python解释器版本3.9。 pandas版本1.4.4 请问是否需要把pandas版本升级到目前最新的2.1.1

000003 的数据没有获取到

~ cat a.py
import adata

res_df = adata.stock.market.get_market(stock_code='000003', k_type=1)
print(res_df)
~ python3 a.py
Empty DataFrame
Columns: [trade_time, open, close, volume, high, low, amount, change, change_pct, turnover_ratio, pre_close]
Index: []

MacOS

如何 查询 一段时期的 数据

获取股票的行情
获取到股票代码后,传入对应的stock_code参数,查询对应股票的行情信息。

import adata

k_type: k线类型:1.日;2.周;3.月 默认:1 日k

res_df = adata.stock.market.get_market(stock_code='000001', k_type=1, start_date='2021-01-01')
print(res_df)

以上 start_date 是 查询开始日期 。有结束的日期的键值么?谢谢!

pre_close问题

获取300416的日交易数据发现pre_close没有考虑除权除息

使用多线程获取多个股票的分红信息时候出现报错:JSONDecodeError: Expecting value: line 1 column 1 (char 0)

您好,很感谢您能提供如此强大的工具库,我在处理多线程获取股票分红信息时候,出现报错:
in Response.json(self, **kwargs)
970 try:
--> 971 return complexjson.loads(self.text, **kwargs)
972 except JSONDecodeError as e:
973 # Catch JSON-related errors and raise as requests.JSONDecodeError
974 # This aliases json.JSONDecodeError and simplejson.JSONDecodeError

File c:\Users\Leslie\miniconda3\envs\pytorch2\lib\json_init_.py:346, in loads(s, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
343 if (cls is None and object_hook is None and
344 parse_int is None and parse_float is None and
345 parse_constant is None and object_pairs_hook is None and not kw):
--> 346 return _default_decoder.decode(s)
347 if cls is None:

File c:\Users\Leslie\miniconda3\envs\pytorch2\lib\json\decoder.py:337, in JSONDecoder.decode(self, s, _w)
333 """Return the Python representation of s (a str instance
334 containing a JSON document).
335
336 """
--> 337 obj, end = self.raw_decode(s, idx=_w(s, 0).end())
338 end = _w(s, end).end()

File c:\Users\Leslie\miniconda3\envs\pytorch2\lib\json\decoder.py:355, in JSONDecoder.raw_decode(self, s, idx)
...
973 # Catch JSON-related errors and raise as requests.JSONDecodeError
974 # This aliases json.JSONDecodeError and simplejson.JSONDecodeError
--> 975 raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)

麻烦帮忙指导指导,谢谢。

能否新增行业分类

您好,十分感谢您能公布开源接口,您的成果对我的帮助非常大!
能否新增中信或申万行业分类,及其成份股数据条款?
十分感谢。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.