Giter VIP home page Giter VIP logo

Comments (64)

cz9874308 avatar cz9874308 commented on August 28, 2024

都准备做量化算法了,大佬能否增加下回测功能

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

都准备做量化算法了,大佬能否增加下回测功能

正在做,耗时会比较久,成熟之后再发布。

from efinance.

cz9874308 avatar cz9874308 commented on August 28, 2024

都准备做量化算法了,大佬能否增加下回测功能

正在做,耗时会比较久,成熟之后再发布。

建议参考下backtraer

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

都准备做量化算法了,大佬能否增加下回测功能

正在做,耗时会比较久,成熟之后再发布。

建议参考下backtraer

好。

from efinance.

vensentzhou avatar vensentzhou commented on August 28, 2024

能否增加指数成分股和板块成分股获取

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

能否增加指数成分股和板块成分股获取

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

能否增加指数成分股和板块成分股获取

获取指数成分股示例代码如下(目前还没有集成到 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

image

from efinance.

vensentzhou avatar vensentzhou commented on August 28, 2024

中正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.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

沪深 300 为例,我测试了一下,数据源本身是有重复的,比如股票代码 688012 在第 1 和第 2 页均有出现。

from efinance.

vensentzhou avatar vensentzhou commented on August 28, 2024

那是不靠谱,000300,取了300条记录,去重后剩下273条,数据不完整

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

那是不靠谱,000300,取了300条记录,去重后剩下273条,数据不完整

确实如此。

from efinance.

huntergd avatar huntergd commented on August 28, 2024

有没有 龙虎榜 数据?

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

有没有 龙虎榜 数据?

目前没有 下过版本考虑加上。

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

有没有 龙虎榜 数据?

刚更新到 v0.3.7 现在支持获取龙虎榜详情数据。具体示例详见 README.md 里面的 Examples 的 Stock 部分,或者 API 文档。

from efinance.

mars-ko avatar mars-ko commented on August 28, 2024

大神你好,有没有考虑做一个基金收益计算功能,例如买入一只或几只基金后,持有一段时间的本息及收益率。(并非定投,当然如果还有定投的回测就更好了。)

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

大神你好,有没有考虑做一个基金收益计算功能,例如买入一只或几只基金后,持有一段时间的本息及收益率。(并非定投,当然如果还有定投的回测就更好了。)

在做中,完善后再放出。

from efinance.

mars-ko avatar mars-ko commented on August 28, 2024

大神你好,有没有考虑做一个基金收益计算功能,例如买入一只或几只基金后,持有一段时间的本息及收益率。(并非定投,当然如果还有定投的回测就更好了。)

在做中,完善后再放出。

这么及时的回复,非常感谢。这个功能之后可以再考虑增加基金组合方面的需求,例如组合回测、穿透持仓等。(当然这是后话了)。
希望越来越好~

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

大神你好,有没有考虑做一个基金收益计算功能,例如买入一只或几只基金后,持有一段时间的本息及收益率。(并非定投,当然如果还有定投的回测就更好了。)

在做中,完善后再放出。

这么及时的回复,非常感谢。这个功能之后可以再考虑增加基金组合方面的需求,例如组合回测、穿透持仓等。(当然这是后话了)。

希望越来越好~

好。

from efinance.

huntergd avatar huntergd commented on August 28, 2024

有没有实时行情的 分时 数据 (非分钟级K线),看分时图的。

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

有没有实时行情的 分时 数据 (非分钟级K线),看分时图的。

目前没有。

from efinance.

Tinyrat avatar Tinyrat commented on August 28, 2024

请问作者:
1.如何获取某股票每日收盘自由流通市值?
2.如何获取某股票所属行业板块和概念板块?

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

请问作者: 1.如何获取某股票每日收盘自由流通市值? 2.如何获取某股票所属行业板块和概念板块?

  1. 如果你说的是某只股票在每一个历史交易日的收盘时的流通市值,那么现在暂时无法获取,如果你只是想获取股票的最新流通市值,则可以这么做
import efinance as ef
quotes = ef.stock.get_realtime_quotes()
print(quotes.columns)
quotes

image

以上演示如何获取多只股票的最新流通市值,如需取指定股票的流通市值,详情可查阅 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

运行结果

image

如需取某只股票的板块信息,同样需要参考 pandas 里面的定位单元格的方法。

from efinance.

mikezh avatar mikezh commented on August 28, 2024

目前大多都是沪深的数据,建议加入港股和美股数据。

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

目前大多都是沪深的数据,建议加入港股和美股数据。

例子中大部分展示的是沪深例子,不过的大部分也是支持港股美股的,例如行情信息等。

from efinance.

dhKwang avatar dhKwang commented on August 28, 2024

大佬新年好,请问有实现获取每天的筹码分布的功能吗?

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

大佬新年好,请问有实现获取每天的筹码分布的功能吗?

筹码分布可以直接获取吗?我印象中好像是通过一些成交数据算筹码分布。

from efinance.

Calanosay avatar Calanosay commented on August 28, 2024

能否加入获取美股盘前功能

from efinance.

todaygood avatar todaygood commented on August 28, 2024

能否获取A股的业绩预披露时间?

from efinance.

xiaoxiaodetian avatar xiaoxiaodetian commented on August 28, 2024

get_belong_board 能否区分是行业板块还是概念板块?

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

get_belong_board 能否区分是行业板块还是概念板块?

可以根据板块代码来做区分,例如 浙江建投,股票代码为 002761,行业板块代码为 BK0405,其中一个概念板块代码为 BK1076。以 BK04 开头的为行业板块,以BK01开头的为地区板块,其他的,可以自行选几只票,结合东方财富app来看,即可总结出板块编号规律,进而知道板块类型。

from efinance.

zhaocai-ally avatar zhaocai-ally commented on August 28, 2024

image
期货合约中的 分时成交 可以获取下来吗

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

image

期货合约中的 分时成交 可以获取下来吗

可以,考虑下个版本加上。

from efinance.

JoffreyN avatar JoffreyN commented on August 28, 2024

如何获取st股和退市股,或者如何排除它们

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

如何获取st股和退市股,或者如何排除它们

st 股可以通过名称来筛选,先获取沪深市场最新行情榜单,然后取出 股票名称 里面含有 ST 的股票即选出 st 股。关于退市股,可以类比筛选 st 股,把关键词 ST 改为 退市。

from efinance.

JoffreyN avatar JoffreyN commented on August 28, 2024

如何获取st股和退市股,或者如何排除它们

st 股可以通过名称来筛选,先获取沪深市场最新行情榜单,然后取出 股票名称 里面含有 ST 的股票即选出 st 股。关于退市股,可以类比筛选 st 股,把关键词 ST 改为 退市。

谢谢 已解决
allcode[~allcode['股票名称'].str.contains('ST|退市')]

from efinance.

vensentzhou avatar vensentzhou commented on August 28, 2024

大佬,get_deal_detail 股票分笔数据是否能增加字段区分:买盘成交、买盘成交或平盘成交对手盘成交
截屏2022-05-29 16 16 46

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

大佬,get_deal_detail 股票分笔数据是否能增加字段区分:买盘成交、买盘成交或平盘成交对手盘成交 截屏2022-05-29 16 16 46

这个可以自己做个计算,先将数据按时间排序,然后对比前后相邻的两个数据对应的价格大小,如果时间晚的数据对应的价格大与时间早的,那么时间晚的为买盘,以此类推。示例如下

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.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

image

期货合约中的 分时成交 可以获取下来吗

期货的分时成交目前可以和股票混用,把期货名称或者期货代码作为股票代码即可(不过也有可能不准,后续提供适配)

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

image

期货合约中的 分时成交 可以获取下来吗

已在 v0.4.5 版本中进行添加。

from efinance.

zhaocai-ally avatar zhaocai-ally commented on August 28, 2024

这个性质这一栏 要怎么操作才能让它也显示出来
image

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

这个性质这一栏 要怎么操作才能让它也显示出来 image

这个我目前没有加,后续加上。

from efinance.

lightcax avatar lightcax commented on August 28, 2024

指数历史数据, 分钟线 数据会增加吗?谢谢

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

指数历史数据, 分钟线 数据会增加吗?谢谢

指数历史数据和分钟线数据一直是有的。不过分钟线数据只有最近很短一段时间的。

from efinance.

vensentzhou avatar vensentzhou commented on August 28, 2024

大佬,get_deal_detail 股票分笔数据是否能增加字段区分:买盘成交、买盘成交或平盘成交对手盘成交 截屏2022-05-29 16 16 46

这个可以自己做个计算,先将数据按时间排序,然后对比前后相邻的两个数据对应的价格大小,如果时间晚的数据对应的价格大与时间早的,那么时间晚的为买盘,以此类推。示例如下

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.

penghe2021 avatar penghe2021 commented on August 28, 2024

ef.stock.get_history_bill() 函数能指定获取的时间范围嘛,类似ef.stock.get_quote_history(stock_codes, begin, end),现在的输入只有股票代码,辛苦啦

from efinance.

kaykouo avatar kaykouo commented on August 28, 2024

有没有办法加入复权因子和前收盘价?因为只用前复权会导致可以在过去买入超量的股票,不复权会导致除权除息后股价无理由暴跌。如果有这两个数据, 至少可以在除权除息后对持仓进行修正。

from efinance.

kaykouo avatar kaykouo commented on August 28, 2024

能不能加入获取某支股票某一交易日的总股数和流通股数?

from efinance.

kaykouo avatar kaykouo commented on August 28, 2024

获取指数成分股示例代码如下(目前还没有集成到 efinance 里面)

指数成分股只有当前的,没有历史成分股,这样历史回测大概率会出错

from efinance.

wabbaf avatar wabbaf commented on August 28, 2024

希望获取的股票的基本信息可以增加滚动市盈率(TTM),因为市盈率里公认滚动市盈率是一个更有效的指标

from efinance.

xiaoxiaodetian avatar xiaoxiaodetian commented on August 28, 2024

get_history_bill 增加历史1分钟级别的数据,现在只有每天的
get_deal_detail 增加历史交易明细,现在只有罪行的

from efinance.

money4marry avatar money4marry commented on August 28, 2024

请教一下,有没有api判断指定日期是否是开市日

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

请教一下,有没有api判断指定日期是否是开市日

没有直接提供。需要的话,可以获取一下 上证指数 的日k行情,然后取日期这一列,后续即可基于它来判断是不是开市日。

from efinance.

LeoStark avatar LeoStark commented on August 28, 2024

大佬,请教一下,有办法增加实时挂单信息、大中小单实时流入流出信息吗?
image
image

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

大佬,请教一下,有办法增加实时挂单信息、大中小单实时流入流出信息吗? image image

你说的这两个功能是已经有的,例子如下

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.

LeoStark avatar LeoStark commented on August 28, 2024

好的,感谢!

from efinance.

LeoStark avatar LeoStark commented on August 28, 2024

大佬,在使用过程中发现了个小问题,用列表去做这个ef.stock.get_quote_snapshot()功能的循环的时候,取数的时间就会很长,大概100只票需要个四十五秒,不知道是功能如此还是我使用得有问题?有办法处理这种情况吗

from efinance.

Micro-sheep avatar Micro-sheep commented on August 28, 2024

大佬,在使用过程中发现了个小问题,用列表去做这个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.

LeoStark avatar LeoStark commented on August 28, 2024

感恩! 我研究一下

from efinance.

cantfindone avatar cantfindone commented on August 28, 2024

能否增加财务数据获取的功能,利润表,资产负债表,现金流量表 的数据 及历史

from efinance.

Hollywood3 avatar Hollywood3 commented on August 28, 2024

大佬,期货能否加一个open_interest, 当前未平单

from efinance.

tianyongliu avatar tianyongliu commented on August 28, 2024

建议获取行业、概念资金流的数据。。。

from efinance.

magicso avatar magicso commented on August 28, 2024

get_history_bill,股票历史单子流入数据(日级),希望能指定日期范围,目前只能获取到最近几个月的数据

from efinance.

interqhq avatar interqhq commented on August 28, 2024

你好,能否增加一个东财股吧热度排行榜,谢谢

from efinance.

wsw87201326 avatar wsw87201326 commented on August 28, 2024

是否支持历史数据的获取,结果类似get_realtime_quotes的返回结果。

from efinance.

Related Issues (20)

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.