- OKX交易自动化 (okx-auto-position, okx-crypto, okx-exchange) - 交易信号处理 (signal-confirmation-templates, trading-signal-aggregator) - 量化因子挖掘 (quant-factor-mining) - 长桥集成 (longbridge-cli, longbridge-python-sdk) - 六合彩分析 (lottery-hk) - 股息投资 (dividend-investing, dividend-scanner) - 日内交易 (intraday-trading) - 同花顺 (tonghuashun)
4.9 KiB
4.9 KiB
A股买点分析框架
综合技术面 + 估值 + 财务 + 盈利预测的完整分析模板。
分析步骤
1. 获取数据
import akshare as ak
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
symbol = '000333' # 股票代码
today = datetime.now().strftime('%Y%m%d')
start_1y = (datetime.now() - timedelta(days=365)).strftime('%Y%m%d')
# K线(近1年)
df = ak.stock_zh_a_hist(symbol=symbol, period='daily',
start_date=start_1y, end_date=today, adjust='qfq')
⚠️ 代理问题:如果系统有全局代理,AKShare 会报 ProxyError。
先清除代理:
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
或 Python 内:
for k in ['http_proxy','https_proxy','HTTP_PROXY','HTTPS_PROXY']:
os.environ.pop(k, None)
2. 技术面分析
价格位置
current = df.iloc[-1]
year_high = df['最高'].max()
year_low = df['最低'].min()
position = (current['收盘'] - year_low) / (year_high - year_low) * 100
均线系统
for m in [5, 10, 20, 60, 120]:
ma = pd.Series(df['收盘']).rolling(m).mean().iloc[-1]
dist = (current['收盘'] - ma) / ma * 100 # 偏离度
均线多头排列 = 短期在长期之上。偏离度 >5% 警惕回调,<-5% 可能超跌。
ATR 波动率
tr_list = []
for i in range(1, len(df.tail(20))):
h_l = df.tail(20).iloc[i]['最高'] - df.tail(20).iloc[i]['最低']
h_pc = abs(df.tail(20).iloc[i]['最高'] - df.tail(20).iloc[i-1]['收盘'])
l_pc = abs(df.tail(20).iloc[i]['最低'] - df.tail(20).iloc[i-1]['收盘'])
tr_list.append(max(h_l, h_pc, l_pc))
atr14 = sum(tr_list[-14:]) / min(14, len(tr_list))
支撑阻力
support20 = df.tail(20)['最低'].min()
resist20 = df.tail(20)['最高'].max()
support60 = df.tail(60)['最低'].min()
resist60 = df.tail(60)['最高'].max()
量能分析
avg_vol_20 = df.tail(20)['成交量'].mean()
latest_vol_ratio = df.iloc[-1]['成交量'] / avg_vol_20
量比 > 1.5 = 显著放量,< 0.5 = 缩量。
MACD
closes = df['收盘'].values
ema12 = pd.Series(closes).ewm(span=12).mean().iloc[-1]
ema26 = pd.Series(closes).ewm(span=26).mean().iloc[-1]
dif = ema12 - ema26
dea = pd.Series(pd.Series(closes).ewm(span=12).mean() - pd.Series(closes).ewm(span=26).mean()).ewm(span=9).mean().iloc[-1]
近期趋势强度
up_days = len(df.tail(20)[df.tail(20)['涨跌幅'] > 0])
down_days = 20 - up_days
recent_10_return = df.tail(10)['涨跌幅'].sum()
recent_5_return = df.tail(5)['涨跌幅'].sum()
3. 估值分析
# 东方财富实时行情含PE/PB/市值
df_spot = ak.stock_zh_a_spot_em()
row = df_spot[df_spot['代码'] == symbol].iloc[0]
pe_dynamic = row['市盈率-动态']
pb = row['市净率']
market_cap = row['总市值']
4. 盈利预测
df_fc = ak.stock_profit_forecast_ths(symbol=symbol)
# 返回: 年度, 预测机构数, 最小值, 均值, 最大值, 行业平均数
# 计算远期PE
current_price = df.iloc[-1]['收盘']
for _, r in df_fc.iterrows():
pe_fwd = current_price / r['均值']
print(f"{r['年度']}E PE: {pe_fwd:.1f}x")
5. 财务基本面
new API (长格式):
df_f = ak.stock_financial_abstract_new_ths(symbol=symbol)
profit = df_f[df_f['metric_name'] == 'parent_holder_net_profit'].iloc[0]
yoy = profit['yoy'] # 同比增长率
旧API (宽格式):
df_f = ak.stock_financial_abstract_ths(symbol=symbol)
现金流:
df_cf = ak.stock_financial_cash_ths(symbol=symbol)
资产负债:
df_d = ak.stock_financial_debt_ths(symbol=symbol)
6. 买点策略模板
策略A:回踩均线建仓(稳健)
第一买点: MA20 ± 0.5
止损: S60 - 1 (略低于中期支撑)
目标: R20 (近20日高点)
策略B:突破确认加仓(激进)
第一买点: 现价轻仓
第二买点: 突破MA20后回踩确认
止损: MA10下方
目标: 前高
策略C:等回调(最稳健)
买点: S20 ~ (S20 + 0.5 * ATR)
止损: S60 - ATR
目标: R20
输出格式
简洁卡片式,用 emoji + 表格,避免大段文字。包含:
- 📊 盘面概览(今日涨跌、量比、ATR)
- 📈 均线位置(表格式)
- 🎯 支撑阻力
- 💰 估值(PE/PB + 远期PE)
- ⚡ 催化剂 + ⚠️ 风险
- 具体买点/止损/目标位
数据源选择
| 数据 | 推荐函数 | 速度 |
|---|---|---|
| K线/行情 | stock_zh_a_hist() 东方财富 |
1-2s |
| 实时行情含PE | stock_zh_a_spot_em() 东方财富 |
~70s(首) / 快(缓存) |
| 财务摘要(新) | stock_financial_abstract_new_ths() |
2-3s |
| 财务摘要(旧/宽) | stock_financial_abstract_ths() |
2-3s |
| 盈利预测 | stock_profit_forecast_ths() |
2-3s |
| 现金流 | stock_financial_cash_ths() |
2-3s |
| 资产负债 | stock_financial_debt_ths() |
2-3s |
| 主营业务 | stock_zyjs_ths() |
1-2s |