用聚宽python编写2023年5月26日9点31分,开盘换手率大于0.3,开盘涨幅小于3%,开盘跌幅小于-%的股票,并且股票所属板块内上涨个股数量超过50%,选出的这些股票的内外比小于0.9
时间: 2023-12-08 12:05:41 浏览: 124
好的,以下是一个简单的示例代码:
```python
import jqdatasdk
from jqdatasdk import finance, query, valuation
# 登录聚宽账号
jqdatasdk.auth('username', 'password')
# 获取2023年5月26日9点31分的股票数据
start_date = '2023-05-26'
end_date = '2023-05-26'
df = get_price('000001.XSHE', start_date=start_date, end_date=end_date, frequency='1m')
# 过滤出开盘换手率大于0.3,开盘涨幅小于3%,开盘跌幅小于-%的股票
df = df[(df['open'] / df['pre_close'] - 1).abs() < 0.03]
df = df[df['open'] / df['pre_close'] - 1 > -0.01]
df = df[df['volume'] / finance.run_query(query(finance.STK_EXCHANGE_TRADE_INFO.volume, start_date=start_date, end_date=end_date)).iloc[0]['volume'] > 0.3]
# 获取所有股票所属的板块
stocks = list(df.index)
industry_df = get_industry(stocks, date=end_date, source='sw_l1')
# 统计每个板块内上涨的个股数量
industry_count = industry_df[industry_df['change_pct'] > 0].groupby('sw_l1')['change_pct'].count()
# 过滤出上涨个股数量超过50%的板块
industry_filter = industry_count / industry_df.groupby('sw_l1')['change_pct'].count() > 0.5
selected_industry = industry_filter[industry_filter].index
# 过滤出内外比小于0.9的股票
q = query(valuation).filter(valuation.code.in_(stocks))
df = finance.run_query(q)
df = df[df['circulating_market_cap'] / df['market_cap'] < 0.9]
# 取出所属板块在 selected_industry 中的股票
df = df[df['code'].apply(lambda x: industry_df[industry_df['code'] == x]['sw_l1'].iloc[0] in selected_industry)]
```
请注意,以上代码仅为示例,实际应用中可能需要进行更多的数据处理和过滤。同时,聚宽的数据接口需要额外的费用。
阅读全文