用Python写一段代码,使用tushare库,首先设置tushare token,获取今日的日期,获取今日及今日前四个交易日所有沪市、深市、创业板、科创板股票数据,保存数据,读取数据,筛选出五日内每日成交额最多的100支股票,计算股票今日及前四个交易日收盘价的均价,从之前筛选的股票中选出今日收盘价大于五日均价且今日成交量为三日内最少的股票,保存结果到文件,文件名为今日日期
时间: 2024-03-14 07:46:49 浏览: 22
以下是代码实现:
```python
import tushare as ts
import pandas as pd
import datetime
# 设置tushare token
ts.set_token('your_token_here')
# 获取今日日期
today = datetime.date.today().strftime('%Y-%m-%d')
# 获取今日及今日前四个交易日的日期
days = [datetime.date.today() - datetime.timedelta(days=i) for i in range(5)]
dates = [d.strftime('%Y-%m-%d') for d in days]
# 获取沪市、深市、创业板、科创板股票数据
data = pd.DataFrame()
for date in dates:
hs_data = ts.get_hist_data('sh', date=date)
if hs_data is not None:
hs_data['type'] = 'sh'
data = data.append(hs_data)
sz_data = ts.get_hist_data('sz', date=date)
if sz_data is not None:
sz_data['type'] = 'sz'
data = data.append(sz_data)
cyb_data = ts.get_hist_data('cyb', date=date)
if cyb_data is not None:
cyb_data['type'] = 'cyb'
data = data.append(cyb_data)
kcb_data = ts.get_hist_data('kcb', date=date)
if kcb_data is not None:
kcb_data['type'] = 'kcb'
data = data.append(kcb_data)
# 保存数据
data.to_csv(f'{today}_data.csv', index=False)
# 读取数据
data = pd.read_csv(f'{today}_data.csv')
# 筛选出五日内每日成交额最多的100支股票
top100 = data.groupby(['code'])['amount'].sum().sort_values(ascending=False)[:100].index.tolist()
data = data[data['code'].isin(top100)]
# 计算股票今日及前四个交易日收盘价的均价
data['close_mean'] = data.groupby(['code'])['close'].transform(lambda x: x.mean())
# 选出今日收盘价大于五日均价且今日成交量为三日内最少的股票
data = data[data['close'] > data['close_mean']]
data = data.groupby(['code']).apply(lambda x: x.nsmallest(3, 'volume'))
data = data.groupby(['code']).apply(lambda x: x.nlargest(1, 'date'))
data = data.reset_index(drop=True)
# 保存结果到文件
data.to_csv(f'{today}_result.csv', index=False)
```
需要注意的是,此代码的数据来源于tushare,需要先安装tushare库并申请token。此外,tushare每天的数据更新时间为晚上8点左右,因此若在当天晚上8点之前运行此代码,将只能获取到前一天的数据。