用Python写一段代码,使用tushare库及pandas,首先设置tushare token,然后获取一个月内所有沪市、深市、创业板、科创板股票数据,筛选出这一个月内每日成交额各前100的股票,获取今天的日期,采用tushare均线接口,从之前筛选的股票中选出今天收盘价位于五日线上方且成交量小于前三天的股票,保存结果到文件
时间: 2024-03-14 20:45:46 浏览: 162
好的,以下是您需要的代码:
```python
import tushare as ts
import pandas as pd
import datetime
# 设置tushare token
ts.set_token('YOUR_TOKEN_HERE')
# 获取一个月内所有沪市、深市、创业板、科创板股票数据
pro = ts.pro_api()
trade_date = datetime.date.today() - datetime.timedelta(days=30)
trade_date_str = trade_date.strftime('%Y%m%d')
df = pro.daily(trade_date=trade_date_str, fields='ts_code,trade_date,close,vol')
# 筛选出每日成交额各前100的股票
df_grouped = df.groupby('trade_date').apply(lambda x: x.nlargest(100, 'vol'))
df_filtered = df_grouped.reset_index(drop=True)
# 获取今天的日期
today_str = datetime.date.today().strftime('%Y%m%d')
# 采用tushare均线接口,选出收盘价位于五日线上方且成交量小于前三天的股票
selected_stocks = []
for ts_code in df_filtered['ts_code'].unique():
df_k = pro.daily(ts_code=ts_code, start_date=trade_date_str, end_date=today_str, fields='close,vol')
df_ma = ts.pro_bar(ts_code=ts_code, adj='qfq', start_date=trade_date_str, end_date=today_str, ma=[5])
if len(df_k) == 0 or len(df_ma) == 0:
continue
today_close = df_k.iloc[-1]['close']
ma5 = df_ma.iloc[-1]['ma5']
vol = df_k.iloc[-1]['vol']
prev_vol = df_k.iloc[-4]['vol']
if today_close > ma5 and vol < prev_vol:
selected_stocks.append(ts_code)
# 保存结果到文件
result_df = pd.DataFrame(selected_stocks, columns=['ts_code'])
result_df.to_csv('selected_stocks.csv', index=False)
```
请注意,以上代码需要替换 `YOUR_TOKEN_HERE` 为您在tushare官网申请的token。另外,tushare的每日数据有一定的延迟,可能需要等待一段时间才能获取到最新数据。
阅读全文