1. 技术面分析模块的整体设计思路
在股票分析系统中,技术面分析模块扮演着数据加工者的角色。这个模块的核心任务是将原始的K线数据转化为可供LLM理解的结构化技术指标摘要。不同于传统技术分析软件直接给出买卖信号的做法,我们的设计理念是"指标计算+简明参考",把最终的决策权交给能够综合多维度信息的LLM模型。
从工程架构角度看,这个模块采用了典型的数据处理流水线设计:
- 数据输入层:通过yfinance API获取K线数据
- 指标计算层:并行计算各类技术指标
- 逻辑判断层:根据指标值生成状态描述
- 输出格式化层:整理为LLM友好的结构化数据
这种分层设计使得每个环节都可以独立优化。比如当需要新增RSI指标时,只需在指标计算层添加相应函数,不会影响其他模块的正常工作。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心指标计算原理与实现细节
2.1 移动平均线(MA)的计算与趋势判断
移动平均线是技术分析中最基础的指标之一。我们的系统计算了四个关键周期的MA值:
python复制def calculate_ma(close_prices, windows=[5,10,20,60]):
ma_values = {}
for window in windows:
ma_values[f'MA{window}'] = close_prices.rolling(window=window).mean().iloc[-1]
return ma_values
趋势判断逻辑包含两个维度:
- 价格位置关系:当前价格相对于各MA线的位置(上方/下方)
- 均线排列形态:检查是否形成MA5>MA10>MA20>MA60的多头排列
这些布尔判断结果会存入trend_ma字典,为后续的LLM分析提供结构化输入。
2.2 MACD指标的计算与状态判断
MACD是一个结合了趋势和动量特征的复合指标。我们的实现采用标准参数(12,26,9):
python复制def _macd(close_prices, fast=12, slow=26, signal=9):
ema_fast = close_prices.ewm(span=fast, adjust=False).mean()
ema_slow = close_prices.ewm(span=slow, adjust=False).mean()
macd_line = ema_fast - ema_slow
signal_line = macd_line.ewm(span=signal, adjust=False).mean()
histogram = macd_line - signal_line
return {
'macd': macd_li
