Giter Site home page Giter Site logo

1nchaos / adata Goto Github PK

View Code? Open in Web Editor NEW
749.0 21.0 104.0 1.34 MB

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

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

License: Apache License 2.0

Python 97.81% Jupyter Notebook 2.19%
stock a 3000 financial china quant datasource stock-data stock-market-data kline

adata's People

Contributors

1nchaos avatar lunez99 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

adata's Issues

运行“获取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

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

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

新年快乐🎉!

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

获取历史数据不准确

以**石化 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

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

使用多线程获取多个股票的分红信息时候出现报错: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)

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

单个股所属概念查询报错

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

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

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

能否新增行业分类

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

pre_close问题

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

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

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

如何 查询 一段时期的 数据

获取股票的行情
获取到股票代码后,传入对应的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 是 查询开始日期 。有结束的日期的键值么?谢谢!

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

对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时的数据格式问题

请教一下 如何回测数据

感谢接口的提供!

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

获取概念信息缺失

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

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

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

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.