用DeepSeek结合板块资金编写捕捉涨幅大的龙头股程序
以下是一个基于板块效应和资金流向捕捉龙头股的Python程序框架,结合了实时数据分析和策略筛选:
“`python
import akshare as ak
import pandas as pd
import numpy as np
from datetime import datetime
# 参数设置
TRADE_DATE = datetime.now().strftime(“%Y%m%d”)
MIN_SECTOR_RISE = 2.0 # 板块最小涨幅(%)
MIN_INDIVIDUAL_RISE = 5.0 # 个股最小涨幅(%)
VOLUME_RATIO_THRESHOLD = 1.5 # 量比阈值
CAPITAL_FLOW_THRESHOLD = 5000000 # 资金流入阈值(万)
def get_real_time_data():
“””获取实时市场数据”””
stock_zh_a_spot_df = ak.stock_zh_a_spot()
return stock_zh_a_spot_df
def get_sector_data():
“””获取板块分类数据”””
sector_df = ak.stock_board_industry_name_em()
return sector_df
def get_capital_flow_data():
“””获取资金流向数据”””
capital_flow_df =
ak.stock_fund_flow_individual(symbol=”即时”)
return capital_flow_df
def analyze_sectors(stock_data, sector_data):
“””分析板块效应”””
merged_df = pd.merge(stock_data, sector_data, on=’代码’)
sector_analysis = merged_df.groupby(‘板块’).agg(
avg_rise=(‘涨幅’, ‘mean’),
total_volume=(‘成交量’, ‘sum’),
stock_count=(‘代码’, ‘count’)
).reset_index()
strong_sectors = sector_analysis[
(sector_analysis[‘avg_rise’] > MIN_SECTOR_RISE) &
(sector_analysis[‘stock_count’] >= 5)
].sort_values(‘avg_rise’, ascending=False)
return strong_sectors
def find_leading_stocks(stock_data, sector_data, capital_flow_data, strong_sectors):
“””筛选龙头股”””
merged_df = pd.merge(stock_data, sector_data, on=’代码’)
merged_df = pd.merge(merged_df, capital_flow_data, on=’代码’)
# 计算量比
merged_df[‘量比’] = merged_df[‘成交量’] / merged_df[‘过去五日平均成交量’]
# 筛选条件
candidates = merged_df[
(merged_df[‘板块’].isin(strong_sectors[‘板块’])) &
(merged_df[‘涨幅’] > MIN_INDIVIDUAL_RISE) &
(merged_df[‘量比’] > VOLUME_RATIO_THRESHOLD) &
(merged_df[‘主力净流入’] > CAPITAL_FLOW_THRESHOLD)
]
# 排序指标
candidates[‘综合评分’] = (
candidates[‘涨幅’] * 0.4 +
candidates[‘量比’] * 0.2 +
candidates[‘主力净流入’] * 0.4
)
return candidates.sort_values(‘综合评分’, ascending=False)
def main():
# 获取数据
print(“正在获取实时数据…”)
stock_data = get_real_time_data()
sector_data = get_sector_data()
capital_flow_data = get_capital_flow_data()
# 分析板块
print(“分析板块效应…”)
strong_sectors = analyze_sectors(stock_data, sector_data)
if strong_sectors.empty:
print(“当前无符合要求的强势板块”)
return
# 筛选龙头股
print(“筛选龙头股…”)
leading_stocks = find_leading_stocks(stock_data, sector_data, capital_flow_data, strong_sectors)
# 输出结果
print(“\n=== 潜在龙头股列表 ===”)
print(leading_stocks[[‘代码’, ‘名称’, ‘板块’, ‘涨幅’, ‘量比’, ‘主力净流入’, ‘综合评分’]].head(10))
if __name__ == “__main__”:
main()
“`
### 策略逻辑说明:
1. **数据获取层**:
– 实时行情数据(股价、成交量、涨跌幅)
– 板块分类数据
– 资金流向数据(主力净流入、大单统计)
2. **板块分析层**:
– 计算各板块平均涨幅
– 筛选当日涨幅超过阈值的强势板块
– 排除成分股过少的板块(至少5只个股)
3. **个股筛选层**:
– 量比指标筛选(成交量放大)
– 资金流入筛选(主力净流入达标)
– 涨幅筛选(个股涨幅超过阈值)
– 综合评分系统(结合涨幅、量比、资金流入)
4. **输出排序**:
– 按综合评分降序排列
– 展示TOP10候选标的
### 增强功能建议:
1. **动态阈值调整**:
“`python
# 根据市场波动率动态调整阈值
def dynamic_threshold(market_volatility):
base_rise = 5.0
return base_rise * (1 + market_volatility/10)
current_volatility = get_market_volatility()
MIN_INDIVIDUAL_RISE = dynamic_threshold(current_volatility)
“`
2. **资金流持续性分析**:
“`python
# 添加3日资金流连续流入判断
def check_capital_continuity(code):
hist_flow =
ak.stock_fund_flow_individual(symbol=”3日”)
return hist_flow[code].diff().gt(0).all()
“`
3. **板块强度验证**:
“`python
# 加入板块RPS指标(相对强度)
def calculate_rps(sector_df):
sector_df[‘涨幅排名’] = sector_df[‘avg_rise’].rank(pct=True)
sector_df[‘RPS’] = sector_df[‘涨幅排名’].rolling(5).mean()*100
return sector_df
“`
4. **风险控制模块**:
“`python
def risk_control(stock):
# 排除高价股和ST股
if stock[‘价格’] > 100 or stock[‘名称’].startswith(‘ST’):
return False
# 排除换手率异常
if stock[‘换手率’] > 30:
return False
return True
“`
该程序需要配合以下数据源使用:
1. AKShare金融数据接口(需定期维护)
2. 最新的板块分类数据
3. 实时更新的资金流向数据
实际使用中需要注意:
– 需要处理接口限速和数据质量问题
– 建议结合分钟级数据更新(15分钟/30分钟)
– 需要定期回测优化参数
– 建议结合人工研判使用
可以通过添加以下模块增强实用性:
– 企业微信/钉钉通知功能
– 可视化看板(使用Plotly/Dash)
– 历史回测框架
– 风险收益分析模块
建议在实盘使用前进行至少3个月的历史回测,并根据不同市场环境(牛市/熊市/震荡市)调整参数。
版权说明:
1.版权归本网站或原作者所有;
2.未经本网或原作者允许不得转载本文内容,否则将视为侵权;
3.转载或者引用本文内容请注明来源及原作者;
4.对于不遵守此声明或者其他违法使用本文内容者,本人依法保留追究权等。