中国A股技术分析与潜力股筛选
功能说明
1. 数据获取
使用腾讯股票API获取实时行情和历史K线:
- 实时行情:
https://qt.gtimg.cn/q={code} - 历史K线:
https://web.ifzq.gtimg.cn/appstock/app/fqkline/get?param={code},day,,,320,qfq
支持的API:
- 腾讯财经API (qt.gtimg.cn)
- 新浪财经API (可选备用)
2. 筛选条件
按照以下优先级筛选:
- 价格: 50元以下
- 涨跌: 未涨停(涨幅<10%)
- 主力资金: 5日主力净流入>1亿元
- 技术面: 均线多头排列、MACD金叉、KDJ超卖等
3. 技术指标计算
从历史K线数据自主计算技术指标:
均线系统 (MA):
- MA5, MA10, MA20, MA60
- 多头排列: MA5 > MA10 > MA20 > MA60 (看涨)
- 空头排列: MA5 < MA10 < MA20 (看跌)
MACD:
- DIF = EMA12 - EMA26
- DEA = EMA9(DIF)
- MACD柱 = (DIF - DEA) * 2
- DIF上穿DEA = 金叉 (看涨)
- DIF下穿DEA = 死叉 (看跌)
KDJ:
- K, D值计算RSV的平滑
- J = 3K - 2D
- 金叉: K上穿D
- 超卖: KDJ < 20
- 超买: KDJ > 80
4. 大师心理分析框架
使用投资大师和心理学家视角综合判断:
巴菲特视角:
- 价值投资:低估值、高股息、护城河
- 长期持有:业绩稳定增长
索罗斯视角:
- 反身性:预期差、趋势反转
- 择时:关键点突破
彼得林奇视角:
- 成长股:业绩增速快
- 困境反转:业绩拐点
主力心理学:
- 欲望置换:主力建仓拉升
- 趋势跟随:顺势而为
- 逆向思维:超跌反弹
使用方法
Python代码示例
import cloudscraper
import json
import numpy as np
# 1. 获取实时行情
def get_realtime(code):
url = f'https://qt.gtimg.cn/q={code}'
scraper = cloudscraper.create_scraper()
r = scraper.get(url, timeout=10)
data = r.text.split('=')[1].strip('"').split('~')
return {
'name': data[1],
'price': float(data[3]),
'change': float(data[9])
}
# 2. 获取历史K线
def get_klines(code):
url = f'https://web.ifzq.gtimg.cn/appstock/app/fqkline/get?param={code},day,,,320,qfq'
scraper = cloudscraper.create_scraper()
r = scraper.get(url, timeout=15)
data = json.loads(r.text)
return data.get('data', {}).get(code, {}).get('qfqday', [])
# 3. 计算均线
def calculate_ma(closes, periods):
result = {}
for p in periods:
ma = []
for i in range(len(closes)):
if i < p - 1:
ma.append(None)
else:
ma.append(np.mean(closes[i-p+1:i+1]))
result[f'MA{p}'] = ma
return result
# 4. 计算MACD
def calculate_macd(prices):
def ema(p, period):
e = [p[0]]
for x in p[1:]:
e.append(x * 2 / (period + 1) + e[-1] * (period - 1) / (period + 1))
return e
ema12 = ema(prices, 12)
ema26 = ema(prices, 26)
dif = [ema12[i] - ema26[i] for i in range(len(prices))]
dea = ema(dif, 9)
macd = [(dif[i] - dea[i]) * 2 for i in range(len(dif))]
return dif, dea, macd
# 5. 计算KDJ
def calculate_kdj(highs, lows, closes, period=9):
rsv = []
for i in range(len(closes)):
if i < period - 1:
rsv.append(None)
else:
h = max(highs[i-period+1:i+1])
l = min(lows[i-period+1:i+1])
rsv.append((closes[i] - l) / (h - l) * 100 if h != l else 50)
k, d = [50], [50]
for i in range(1, len(rsv)):
if rsv[i] is None:
k.append(50)
d.append(50)
else:
k.append(k[-1] * 2 / 3 + rsv[i] * 1 / 3)
d.append(d[-1] * 2 / 3 + k[-1] * 1 / 3)
j = [3 * k[i] - 2 * d[i] for i in range(len(k))]
return k, d, j
筛选流程
- 获取候选股票 - 从涨幅榜筛选50元以下、未涨停的股票
- 查询主力资金 - 筛选5日主力净流入>1亿的股票
- 获取技术数据 - 用腾讯API获取K线数据
- 计算技术指标 - 自主计算MA、MACD、KDJ
- 大师心理分析 - 综合各大师视角给出建议
股票代码规则
| 市场 | 代码前缀 | 示例 | |------|---------|------| | 深圳 | sz | sz300377 | | 上海 | sh | sh600460 | | 北交所 | bj | bj920126 |
注意事项
- 页面加载需要等待JavaScript渲染(约5-15秒)
- 如果页面显示"重新加载",说明系统繁忙,等待后重试
- 建议同时查看普通页面和AI预测页面获取完整信息
- 分析多只股票时,需要逐个获取页面信息
合规说明
- 返回数据仅供参考,不作为投资建议
- 股市有风险,投资需谨慎
Scan to join WeChat group