用DeepSeek结合K线趋势主力编写捕捉优质股票的程序
为了编写一个结合K线形态、趋势识别和主力资金的选股程序,以下是分步骤的解决方案:
—
### **一、数据准备**
1. **数据源**
使用免费金融数据接口(如AKShare、Tushare)获取以下数据:
“`python
import akshare as ak
# 获取A股历史数据示例
stock_data = ak.stock_zh_a_hist(symbol=”000001″, period=”daily”)
“`
2. **数据字段**
包含:日期、开盘价、收盘价、最高价、最低价、成交量、成交额。
—
### **二、技术指标计算**
#### 1. **K线形态识别**
“`python
def detect_morning_star(df):
# 早晨之星:阴线 → 十字星 → 阳线,第三日收盘 > 第一日50%
signals = []
for i in range(2, len(df)):
day1 = df.iloc[i-2]
day2 = df.iloc[i-1]
day3 = df.iloc[i]
condition = (
day1[‘收盘’] < day1[‘开盘’] and # 第一日阴线
abs(day2[‘收盘’] – day2[‘开盘’]) / day2[‘开盘’] < 0.01 and # 第二日十字星
day3[‘收盘’] > day3[‘开盘’] and # 第三日阳线
day3[‘收盘’] > (day1[‘开盘’] + day1[‘收盘’]) / 2
)
signals.append(condition)
return signals
“`
#### 2. **趋势识别**
“`python
def calculate_trend(df):
# 计算均线与MACD
df[‘MA5’] = df[‘收盘’].rolling(5).mean()
df[‘MA20’] = df[‘收盘’].rolling(20).mean()
df[‘MACD’], df[‘Signal’], _ = talib.MACD(df[‘收盘’])
# 趋势条件:5日线上穿20日线且MACD金叉
df[‘Trend_Signal’] = (df[‘MA5’] > df[‘MA20’]) & (df[‘MACD’] > df[‘Signal’])
return df
“`
#### 3. **主力资金分析**
“`python
def analyze_capital(df):
# 计算OBV和MFI
df[‘OBV’] = talib.OBV(df[‘收盘’], df[‘成交量’])
df[‘MFI’] = talib.MFI(df[‘最高’], df[‘最低’], df[‘收盘’], df[‘成交量’], timeperiod=14)
# 主力条件:OBV上升且MFI > 70
df[‘Capital_Signal’] = (df[‘OBV’].diff() > 0) & (df[‘MFI’] > 70)
return df
“`
—
### **三、策略整合**
“`python
def find_quality_stocks(stock_list):
results = []
for stock in stock_list:
df = get_stock_data(stock) # 获取数据
df = calculate_trend(df)
df = analyze_capital(df)
df[‘Morning_Star’] = detect_morning_star(df)
# 综合信号:形态 + 趋势 + 资金
df[‘Signal’] = df[‘Morning_Star’] & df[‘Trend_Signal’] & df[‘Capital_Signal’]
if df.iloc[-1][‘Signal’]:
results.append(stock)
return results
“`
—
### **四、实时监控与输出**
“`python
# 运行选股
selected_stocks = find_quality_stocks(all_stocks)
# 输出结果
print(“今日优质股票候选:”)
for stock in selected_stocks:
print(f”{stock[‘代码’]} {stock[‘名称’]} – 触发理由:趋势突破 + 主力流入”)
“`
—
### **五、优化与注意事项**
1. **参数调优**
– 调整均线周期(如改为10日/30日)。
– 优化MFI阈值(70-80区间)。
2. **回测验证**
使用历史数据验证策略胜率:
“`python
backtest(df, signals_col=’Signal’, hold_period=5)
“`
3. **风险控制**
– 设置止损条件(如跌破5日线离场)。
– 结合市盈率等基本面过滤高风险标的。
—
### **六、完整代码结构**
“`text
├── data/ # 存储股票数据
├── utils/
│ ├── data_fetcher.py # 数据获取模块
│ └── indicators.py # 技术指标计算
├── strategies/
│ └── quality_stock.py # 策略逻辑
└── main.py # 主程序
“`
通过以上方法,程序可系统性筛选出同时满足技术形态、趋势和资金条件的股票。建议在实际使用中结合实时数据更新和风控模块。
版权说明:
1.版权归本网站或原作者所有;
2.未经本网或原作者允许不得转载本文内容,否则将视为侵权;
3.转载或者引用本文内容请注明来源及原作者;
4.对于不遵守此声明或者其他违法使用本文内容者,本人依法保留追究权等。