efinance
efinance copied to clipboard
新特性收集区
这是 efinance
的新特性收集区,欢迎需要添加新特性的人来提建议,我会认真地看大家的反馈和建议,并且会考虑把它添加到 efinance
中。
其中,新特性包括下面几个方面
- 优化数据获取速度
- 增加更多可获取的数据
- 集成量化算法
还有其他方面的新特性我可能没有考虑到,也欢迎大家来探讨。
都准备做量化算法了,大佬能否增加下回测功能
都准备做量化算法了,大佬能否增加下回测功能
正在做,耗时会比较久,成熟之后再发布。
都准备做量化算法了,大佬能否增加下回测功能
正在做,耗时会比较久,成熟之后再发布。
建议参考下backtraer
都准备做量化算法了,大佬能否增加下回测功能
正在做,耗时会比较久,成熟之后再发布。
建议参考下backtraer
好。
能否增加指数成分股和板块成分股获取
能否增加指数成分股和板块成分股获取
好
能否增加指数成分股和板块成分股获取
获取指数成分股示例代码如下(目前还没有集成到 efinance 里面)
from typing import List
import pandas as pd
from urllib.parse import urlencode
def get_children(indexid: str) -> pd.DataFrame:
"""
获取指数成分股信息
Parameters
----------
indexid : str
指数代码
例如
- `"000001"` : 上证指数
- `"000300"` : 沪深 300
Returns
-------
DataFrame
指数成分股
"""
page = 1
dfs: List[pd.DataFrame] = []
while 1:
print(f'current page: {page}', end='\r')
params = (
('page', f'{page}'),
('indexid', indexid),
)
base_url = 'http://vip.stock.finance.sina.com.cn/corp/view/vII_NewestComponent.php'
url = base_url+'?'+urlencode(params)
tables = pd.read_html(url,header=1)
if len(tables) < 4:
break
df = tables[3]
dfs.append(df)
page += 1
df = pd.concat(dfs)[df.columns[:3]]
df['品种代码'] = df['品种代码'].apply(lambda x:str(x).rjust(6,'0'))
return df
indexid = '000300'
df = get_children(indexid)
df
中正800指数成份股有重复,是数据源问题,还是程序问题: indexid = '000906' df = get_children(indexid) index_code=df['品种代码'].to_list()
from collections import Counter #引入Counter
a = [29,36,57,12,79,43,23,56,28,11,14,15,16,37,24,35,17,24,33,15,39,46,52,13]
b = dict(Counter(index_code)) print ([key for key,value in b.items()if value > 1]) #只展示重复元素 print ({key:value for key,value in b.items()if value > 1}) #展现重复元素和重复次数
{'603517': 2, '003035': 2, '300037': 2, '688036': 2, '300699': 2, '002985': 2, '603290': 2, '603195': 2, '002966': 2, '688321': 2, '600872': 2, '600556': 2, '002049': 2, '002458': 2, '000708': 2, '002157': 2, '000046': 2, '300628': 2, '300271': 2, '002156': 2, '300618': 2, '002429': 2, '001914': 2, '002396': 2, '300630': 2, '002013': 2, '001872': 2, '600989': 2, '000825': 2, '601236': 2, '601233': 2, '601799': 2, '002203': 2, '603338': 2, '601698': 2, '603379': 2, '603019': 2, '603501': 2, '601699': 2, '000869': 2, '600733': 2, '600903': 2, '600845': 2, '600745': 2, '600299': 2, '600985': 2, '600707': 2, '002372': 2, '002311': 2, '300316': 2, '000932': 2, '002032': 2, '600782': 2, '600027': 2, '601231': 2, '601869': 2, '603156': 2, '300296': 2, '601106': 2, '002110': 2, '300408': 2, '601360': 2, '000553': 2, '600350': 2, '600809': 2, '002916': 2, '600258': 2, '600867': 2, '601801': 2, '002085': 2, '002302': 2, '002925': 2, '601179': 2, '601969': 2, '601228': 2, '000807': 2, '601878': 2, '000887': 2, '600875': 2, '000990': 2, '601128': 2, '600598': 2, '600155': 2, '000898': 2, '601992': 2, '603888': 2, '603160': 2, '002424': 2, '002572': 2, '002602': 2, '300001': 2, '300010': 2, '300113': 2, '300166': 2, '600958': 2, '601021': 2, '601788': 2, '600967': 2, '601012': 2, '600886': 2, '601608': 2, '601800': 2, '603000': 2, '600436': 2, '600859': 2, '601377': 2, '601717': 2, '600881': 2, '600884': 2, '600895': 2, '600900': 2, '000778': 3, '000786': 3, '000858': 3, '000937': 3, '000983': 3, '000031': 2, '000039': 2, '000060': 2, '000061': 2, '000063': 2, '000066': 2, '000069': 2, '000157': 2, '000401': 2, '000402': 2, '000425': 2, '000488': 2, '000528': 2, '000568': 2, '000581': 2, '000625': 2, '000630': 2, '000651': 2, '000709': 2, '000758': 2, '000768': 2}
以沪深 300 为例,我测试了一下,数据源本身是有重复的,比如股票代码 688012
在第 1 和第 2 页均有出现。
那是不靠谱,000300,取了300条记录,去重后剩下273条,数据不完整
那是不靠谱,000300,取了300条记录,去重后剩下273条,数据不完整
确实如此。
有没有 龙虎榜 数据?
有没有 龙虎榜 数据?
目前没有 下过版本考虑加上。
有没有 龙虎榜 数据?
刚更新到 v0.3.7 现在支持获取龙虎榜详情数据。具体示例详见 README.md 里面的 Examples 的 Stock 部分,或者 API 文档。
大神你好,有没有考虑做一个基金收益计算功能,例如买入一只或几只基金后,持有一段时间的本息及收益率。(并非定投,当然如果还有定投的回测就更好了。)
大神你好,有没有考虑做一个基金收益计算功能,例如买入一只或几只基金后,持有一段时间的本息及收益率。(并非定投,当然如果还有定投的回测就更好了。)
在做中,完善后再放出。
大神你好,有没有考虑做一个基金收益计算功能,例如买入一只或几只基金后,持有一段时间的本息及收益率。(并非定投,当然如果还有定投的回测就更好了。)
在做中,完善后再放出。
这么及时的回复,非常感谢。这个功能之后可以再考虑增加基金组合方面的需求,例如组合回测、穿透持仓等。(当然这是后话了)。 希望越来越好~
大神你好,有没有考虑做一个基金收益计算功能,例如买入一只或几只基金后,持有一段时间的本息及收益率。(并非定投,当然如果还有定投的回测就更好了。)
在做中,完善后再放出。
这么及时的回复,非常感谢。这个功能之后可以再考虑增加基金组合方面的需求,例如组合回测、穿透持仓等。(当然这是后话了)。
希望越来越好~
好。
有没有实时行情的 分时 数据 (非分钟级K线),看分时图的。
有没有实时行情的 分时 数据 (非分钟级K线),看分时图的。
目前没有。
请问作者: 1.如何获取某股票每日收盘自由流通市值? 2.如何获取某股票所属行业板块和概念板块?
请问作者: 1.如何获取某股票每日收盘自由流通市值? 2.如何获取某股票所属行业板块和概念板块?
- 如果你说的是某只股票在每一个历史交易日的收盘时的流通市值,那么现在暂时无法获取,如果你只是想获取股票的最新流通市值,则可以这么做
import efinance as ef
quotes = ef.stock.get_realtime_quotes()
print(quotes.columns)
quotes
以上演示如何获取多只股票的最新流通市值,如需取指定股票的流通市值,详情可查阅 pandas
的文档,了解如何定位指定单元格即可。
2. 获取行业板块和概念板块示例如下
import efinance as ef
import pandas as pd
from efinance.common import get_realtime_quotes_by_fs
# 如果是概念板块 就把下面的 行业板块 改为 概念板块
key = '行业板块'
# 获取行业板块成员信息
industries = ef.stock.get_realtime_quotes(key)
dfs = []
# 获取每一个行业板块的成员的成分股信息
for industry in industries.iloc:
bk_id = industry['股票代码']
members = get_realtime_quotes_by_fs(f'b:{bk_id}')
members.insert(2, key, industry['股票名称'])
dfs.append(members)
df = pd.concat(dfs, axis=0, ignore_index=True).rename(
columns={'代码': '股票代码', '名称': '股票名称'})
df
运行结果
如需取某只股票的板块信息,同样需要参考 pandas
里面的定位单元格的方法。
目前大多都是沪深的数据,建议加入港股和美股数据。
目前大多都是沪深的数据,建议加入港股和美股数据。
例子中大部分展示的是沪深例子,不过的大部分也是支持港股美股的,例如行情信息等。
大佬新年好,请问有实现获取每天的筹码分布的功能吗?
大佬新年好,请问有实现获取每天的筹码分布的功能吗?
筹码分布可以直接获取吗?我印象中好像是通过一些成交数据算筹码分布。
能否加入获取美股盘前功能
能否获取A股的业绩预披露时间?
get_belong_board 能否区分是行业板块还是概念板块?
get_belong_board 能否区分是行业板块还是概念板块?
可以根据板块代码来做区分,例如 浙江建投,股票代码为 002761,行业板块代码为 BK0405,其中一个概念板块代码为 BK1076。以 BK04 开头的为行业板块,以BK01开头的为地区板块,其他的,可以自行选几只票,结合东方财富app来看,即可总结出板块编号规律,进而知道板块类型。