Homans 发布于2024-01-02
回复 37
浏览 993
33
**
常用的选股的技术方法是先选强势板块,再从该板块中选择强势个股。**
板块监测功能,具体的操作步骤如下:
**1.**根据市场联动性原理将全部股票划分成33个行业板块和50个概念板块。
**2.**寻找出全部进入上升趋势的板块,排序。第一名板块就是相对放量上涨的板块,意味着市场主流资金在重点买入这个板块。
**3.**选出的股票再进行买卖操作,效果会令人吃惊。
**4.**热点板块转移过程中,大盘往往有一次较大调整,主力资金机构调整持仓结构,换股和板块操作。
**5.**上面是砖家说的,在聚宽实现的代码分享给大家,如何利用记得分享回来
**6.**买入前倒查一下板块风险?有测试的必要........
**7.**模块把33个行业板块和50个概念板块,放在一起,设置参数可以灵活,按需查询。
**8.**附件回测,只是个应用实例,并实际价值,代码在下面,故克隆随意
```
def get_top_concepts_or_industries_by_turnover(context,
days=5, top_n=5, type='concept'):
"""
获取换手率最高的前N个概念或行业板块
:param previous_date: 计算换手率的基准日期,通常是前一天
:param days: 计算换手率的天数
:param top_n: 需要获取的板块数目
:param type: 'concept'表示概念板块,'industry'表示行业板块
:return: list of [板块代码, 板块名称, 换手率]
"""
previous_date = context.previous_date
if type == 'concept':
all_blocks = get_concepts()
elif type == 'industry':
all_blocks = get_industries(name='sw_l1') # 例如,取申万一级行业
else:
raise ValueError("参数只能是'concept'或'industry'")
# 用于存储所有板块的平均换手率
turnover_data = []
# 遍历所有板块并计算平均换手率
for block_code, block_info in all_blocks.iterrows():
if type == 'concept':
stock_pool = get_concept_stocks(block_code, previous_date)
else:
stock_pool = get_industry_stocks(block_code, previous_date)
# 如果板块内有股票,则查询换手率
if stock_pool:
turnover_df = get_fundamentals_continuously(
query(valuation.turnover_ratio).filter(valuation.code.in_(stock_pool)),
end_date=previous_date, count=days, panel=False
)
# 计算换手率均值
avg_turnover = turnover_df.groupby('code')['turnover_ratio'].mean().mean()
turnover_data.append((block_code, block_info['name'], avg_turnover))
# 根据换手率排序并获取前N个
top_blocks = sorted(turnover_data, key=lambda x: x[2], reverse=True)[:top_n]
return top_blocks
```
评论
很好的想法,希望大佬持续优化
2024-01-03
@相逢一笑123 只是个代码块,不是完整策略
2024-01-03