Comments (64)
都准备做量化算法了,大佬能否增加下回测功能
from efinance.
都准备做量化算法了,大佬能否增加下回测功能
正在做,耗时会比较久,成熟之后再发布。
from efinance.
都准备做量化算法了,大佬能否增加下回测功能
正在做,耗时会比较久,成熟之后再发布。
建议参考下backtraer
from efinance.
都准备做量化算法了,大佬能否增加下回测功能
正在做,耗时会比较久,成熟之后再发布。
建议参考下backtraer
好。
from efinance.
能否增加指数成分股和板块成分股获取
from efinance.
能否增加指数成分股和板块成分股获取
好
from efinance.
能否增加指数成分股和板块成分股获取
获取指数成分股示例代码如下(目前还没有集成到 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
from efinance.
中正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}
from efinance.
以沪深 300 为例,我测试了一下,数据源本身是有重复的,比如股票代码 688012
在第 1 和第 2 页均有出现。
from efinance.
那是不靠谱,000300,取了300条记录,去重后剩下273条,数据不完整
from efinance.
那是不靠谱,000300,取了300条记录,去重后剩下273条,数据不完整
确实如此。
from efinance.
有没有 龙虎榜 数据?
from efinance.
有没有 龙虎榜 数据?
目前没有 下过版本考虑加上。
from efinance.
有没有 龙虎榜 数据?
刚更新到 v0.3.7 现在支持获取龙虎榜详情数据。具体示例详见 README.md 里面的 Examples 的 Stock 部分,或者 API 文档。
from efinance.
大神你好,有没有考虑做一个基金收益计算功能,例如买入一只或几只基金后,持有一段时间的本息及收益率。(并非定投,当然如果还有定投的回测就更好了。)
from efinance.
大神你好,有没有考虑做一个基金收益计算功能,例如买入一只或几只基金后,持有一段时间的本息及收益率。(并非定投,当然如果还有定投的回测就更好了。)
在做中,完善后再放出。
from efinance.
大神你好,有没有考虑做一个基金收益计算功能,例如买入一只或几只基金后,持有一段时间的本息及收益率。(并非定投,当然如果还有定投的回测就更好了。)
在做中,完善后再放出。
这么及时的回复,非常感谢。这个功能之后可以再考虑增加基金组合方面的需求,例如组合回测、穿透持仓等。(当然这是后话了)。
希望越来越好~
from efinance.
大神你好,有没有考虑做一个基金收益计算功能,例如买入一只或几只基金后,持有一段时间的本息及收益率。(并非定投,当然如果还有定投的回测就更好了。)
在做中,完善后再放出。
这么及时的回复,非常感谢。这个功能之后可以再考虑增加基金组合方面的需求,例如组合回测、穿透持仓等。(当然这是后话了)。
希望越来越好~
好。
from efinance.
有没有实时行情的 分时 数据 (非分钟级K线),看分时图的。
from efinance.
有没有实时行情的 分时 数据 (非分钟级K线),看分时图的。
目前没有。
from efinance.
请问作者:
1.如何获取某股票每日收盘自由流通市值?
2.如何获取某股票所属行业板块和概念板块?
from efinance.
请问作者: 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
里面的定位单元格的方法。
from efinance.
目前大多都是沪深的数据,建议加入港股和美股数据。
from efinance.
目前大多都是沪深的数据,建议加入港股和美股数据。
例子中大部分展示的是沪深例子,不过的大部分也是支持港股美股的,例如行情信息等。
from efinance.
大佬新年好,请问有实现获取每天的筹码分布的功能吗?
from efinance.
大佬新年好,请问有实现获取每天的筹码分布的功能吗?
筹码分布可以直接获取吗?我印象中好像是通过一些成交数据算筹码分布。
from efinance.
能否加入获取美股盘前功能
from efinance.
能否获取A股的业绩预披露时间?
from efinance.
get_belong_board 能否区分是行业板块还是概念板块?
from efinance.
get_belong_board 能否区分是行业板块还是概念板块?
可以根据板块代码来做区分,例如 浙江建投,股票代码为 002761,行业板块代码为 BK0405,其中一个概念板块代码为 BK1076。以 BK04 开头的为行业板块,以BK01开头的为地区板块,其他的,可以自行选几只票,结合东方财富app来看,即可总结出板块编号规律,进而知道板块类型。
from efinance.
from efinance.
期货合约中的 分时成交 可以获取下来吗
可以,考虑下个版本加上。
from efinance.
如何获取st股和退市股,或者如何排除它们
from efinance.
如何获取st股和退市股,或者如何排除它们
st 股可以通过名称来筛选,先获取沪深市场最新行情榜单,然后取出 股票名称 里面含有 ST 的股票即选出 st 股。关于退市股,可以类比筛选 st 股,把关键词 ST 改为 退市。
from efinance.
如何获取st股和退市股,或者如何排除它们
st 股可以通过名称来筛选,先获取沪深市场最新行情榜单,然后取出 股票名称 里面含有 ST 的股票即选出 st 股。关于退市股,可以类比筛选 st 股,把关键词 ST 改为 退市。
谢谢 已解决
allcode[~allcode['股票名称'].str.contains('ST|退市')]
from efinance.
大佬,get_deal_detail 股票分笔数据是否能增加字段区分:买盘成交、买盘成交或平盘成交对手盘成交
)
from efinance.
这个可以自己做个计算,先将数据按时间排序,然后对比前后相邻的两个数据对应的价格大小,如果时间晚的数据对应的价格大与时间早的,那么时间晚的为买盘,以此类推。示例如下
import efinance as ef
df = ef.stock.get_deal_detail('000001')
df['买卖方向'] = (df['成交价'] - df['成交价'].shift(1)).apply(
lambda x: '买盘' if x > 0 else '卖盘' if x < 0 else '平盘')
df
from efinance.
期货合约中的 分时成交 可以获取下来吗
期货的分时成交目前可以和股票混用,把期货名称或者期货代码作为股票代码即可(不过也有可能不准,后续提供适配)
from efinance.
期货合约中的 分时成交 可以获取下来吗
已在 v0.4.5 版本中进行添加。
from efinance.
from efinance.
这个我目前没有加,后续加上。
from efinance.
指数历史数据, 分钟线 数据会增加吗?谢谢
from efinance.
指数历史数据, 分钟线 数据会增加吗?谢谢
指数历史数据和分钟线数据一直是有的。不过分钟线数据只有最近很短一段时间的。
from efinance.
这个可以自己做个计算,先将数据按时间排序,然后对比前后相邻的两个数据对应的价格大小,如果时间晚的数据对应的价格大与时间早的,那么时间晚的为买盘,以此类推。示例如下
import efinance as ef df = ef.stock.get_deal_detail('000001') df['买卖方向'] = (df['成交价'] - df['成交价'].shift(1)).apply( lambda x: '买盘' if x > 0 else '卖盘' if x < 0 else '平盘') df
大佬的理解跟我的理解可能不太一样,我以为红色箭头向上,表示以买方价格成交(主买),绿色箭头向下,表示以卖方价格成交(主卖),没有箭头表示对手盘成交(平盘)
from efinance.
ef.stock.get_history_bill() 函数能指定获取的时间范围嘛,类似ef.stock.get_quote_history(stock_codes, begin, end),现在的输入只有股票代码,辛苦啦
from efinance.
有没有办法加入复权因子和前收盘价?因为只用前复权会导致可以在过去买入超量的股票,不复权会导致除权除息后股价无理由暴跌。如果有这两个数据, 至少可以在除权除息后对持仓进行修正。
from efinance.
能不能加入获取某支股票某一交易日的总股数和流通股数?
from efinance.
获取指数成分股示例代码如下(目前还没有集成到 efinance 里面)
指数成分股只有当前的,没有历史成分股,这样历史回测大概率会出错
from efinance.
希望获取的股票的基本信息可以增加滚动市盈率(TTM),因为市盈率里公认滚动市盈率是一个更有效的指标
from efinance.
get_history_bill 增加历史1分钟级别的数据,现在只有每天的
get_deal_detail 增加历史交易明细,现在只有罪行的
from efinance.
请教一下,有没有api判断指定日期是否是开市日
from efinance.
请教一下,有没有api判断指定日期是否是开市日
没有直接提供。需要的话,可以获取一下 上证指数 的日k行情,然后取日期这一列,后续即可基于它来判断是不是开市日。
from efinance.
大佬,请教一下,有办法增加实时挂单信息、大中小单实时流入流出信息吗?
from efinance.
你说的这两个功能是已经有的,例子如下
import efinance as ef
# 五档行情
s1 = ef.stock.get_quote_snapshot('600016')
# 资金流
s2 = ef.stock.get_history_bill('600016').iloc[-1]
print(s1)
print(s2)
不过资金流那里暂不提供具体流入流出信息,只提供了一个净流入信息。
from efinance.
好的,感谢!
from efinance.
大佬,在使用过程中发现了个小问题,用列表去做这个ef.stock.get_quote_snapshot()功能的循环的时候,取数的时间就会很长,大概100只票需要个四十五秒,不知道是功能如此还是我使用得有问题?有办法处理这种情况吗
from efinance.
大佬,在使用过程中发现了个小问题,用列表去做这个ef.stock.get_quote_snapshot()功能的循环的时候,取数的时间就会很长,大概100只票需要个四十五秒,不知道是功能如此还是我使用得有问题?有办法处理这种情况吗
批量调用的话,可以参考下面的例子
from typing import Dict, List
import efinance as ef
import multitasking
import pandas as pd
def get_snapshot_fast(stock_codes: List[str]) -> Dict[str, pd.DataFrame]:
"""
获取多只股票的最新行情快照
Parameters
----------
stock_codes : List[str]
股票代码列表
Returns
-------
Dict[str, DataFrame]
股票代码为键,行情快照为值的字典
"""
sns: Dict[str, pd.DataFrame] = {}
@multitasking.task
def start(stock_code: str) -> None:
sns[stock_code] = ef.stock.get_quote_snapshot(stock_code)
for stock_code in stock_codes:
start(stock_code)
multitasking.wait_for_tasks()
return sns
sns = get_snapshot_fast(['600519'])
print(sns)
from efinance.
感恩! 我研究一下
from efinance.
能否增加财务数据获取的功能,利润表,资产负债表,现金流量表 的数据 及历史
from efinance.
大佬,期货能否加一个open_interest, 当前未平单
from efinance.
建议获取行业、概念资金流的数据。。。
from efinance.
get_history_bill,股票历史单子流入数据(日级),希望能指定日期范围,目前只能获取到最近几个月的数据
from efinance.
你好,能否增加一个东财股吧热度排行榜,谢谢
from efinance.
是否支持历史数据的获取,结果类似get_realtime_quotes的返回结果。
from efinance.
Related Issues (20)
- get_history_bill issue HOT 1
- get_latest_quote() 今天一直报错 JSONDecodeError HOT 1
- efinance.stock.get_quote_history("CN00Y")
- 拉数据出错 HOT 2
- 能否获取 商品期货的 指数? HOT 1
- n天期货分钟k线问题 HOT 1
- 请问大佬,哪个函数可以获取股票的上市时间?最好是多任务?
- 如何获取所有非A股(美股等)的stock code 列表 HOT 3
- 最新版(0.5.1)efinance.stock.get_top10_stock_holder_info 特别慢 HOT 1
- 出现包弃用的警告提示
- 使用 py3.10时出现notifyAll() 报错的解决方案
- 希望提供以下示例
- 怎么知道一个股票一天的状态是不是涨停啊?回测要用到这个信息,涨停不一定是10%,不知道最后封板没有。 HOT 2
- 多股票获取历史数据卡死,已有人发过,问题目前还存在
- 关于「名称」或「code」重名时,查询结果和期望不一致的疑问? HOT 4
- 新增了美股财报,和其他A股API
- ef.stock.get_realtime_quotes获得的数据中一部分含有A的股票名称使用的是全角A,另一部分使用的半角A
- 大神,请问获取股票列表如何操作?
- 可以称为最好用的库
- 想得到财报数据,想看看eastmoney 的api,请问api的文档有吗
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from efinance.