根据股票列表获取资金流入情况

获取股票列表

作为演示,以创业板为例(数据不多),我们通过自编的 get_stock_list 方法获取股票列表:

import pandas
from bad import BigAData
from tqdm.notebook import tqdm

plate = 'cyb'
bad = BigAData()
json = bad.get_stock_list(node=plate, num_per_page=100)
df = pandas.DataFrame(json)
df.to_excel('创业板股票20240825.xlsx', index=False)
print(df)

共有1349个,结果如下:
创业板股票列表

获取每个股票的资金流入情况

自定义一个 bad.py 文件(忍不住吐槽一下:大A数据,BigAData,真的够 bad 的)。

    # 获取资金流入趋势数据
    def get_money_flow(self, symbol, page=1, num=20, sort='opendate', asc=0):
        '''
        该函数通过股票代码从新浪财经API获取资金流入趋势数据。参数包括股票代码、页数、每页数量、排序字段及升序标志。以JSON格式返回数据或在请求失败时返回None。
        stock_code: 股票代码
        page: 页码
        num: 每页数据量
        sort: 排序字段
        asc: 排序方式
        return: 资金流入趋势数据
        '''
        url = f'https://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/MoneyFlow.ssl_qsfx_zjlrqs?page={page}&num={num}&sort={sort}&asc={asc}&daima={symbol}'
        # 获取数据
        resp = requests.get(url)
        # 返回数据
        if resp.status_code == 200:
            return resp.json()
        else:
            return None

根据列表获取股票的资金流入情况

按照给定的板块股票列表,获取每只股票的资金流入情况,默认每只采样20个交易日,这是一个比较漫长的过程,增加了进度条功能,需要添加库ipywidgets,可参考这个 stackoverflow 上的 帖子,代码如下:

data  = []
progress_bar = tqdm(total=df.shape[0])
for row in df.itertuples():
    json_arr = bad.get_money_flow(row.symbol)
    for item in json_arr:
        item['symbol'] = row.symbol
        item['code'] = row.code
        item['name'] = row.name
    data.extend(json_arr)
    progress_bar.update(1)
result = pandas.DataFrame(data)  
result.to_excel('bad_list_stocks_money_flow_20240825.xlsx')
print(result)

进度条
结果
从结果可以发现,有些新股不足20个交易日。

提高数据易读性

# 重新命名列名,并返回一个新的DataFrame(inplace=False)
new_columns={
                'symbol': '股票代码',
                'code': '股票编号', 
                'name': '股票名称', 
                'opendate': '交易日', 
                'trade': '收盘价', 
                'changeratio': '涨跌幅', 
                'turnover':'换手率', 
                'netamount': '净流入(元)', 
                'ratioamount': '净流入率', 
                'r0_net': '主力净流入(元)', 
                'r0_ratio':'主力净流入率', 
                'r0x_ratio': '主力罗盘(°)', 
                'cate_ra': '行业净流入率'
             }
# 返回新的DataFrame
exp_result = result.rename(columns=new_columns, inplace=False)
print(exp_result)
exp_result.to_excel('创业板股票资金流入情况20240825.xlsx', index=False)

小结

以上举例了一个简单的应用,有时候因为网络和访问限制原因,会出现连接网站数据超过重试次数失败的情况,故增加了个进度条可以看看去到哪里出错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Humbunklung

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值