很多刚入场做量化或者做股票短线的朋友,买股票经常是拍脑袋。一看到某个股票在短视频里被推荐,或者看到某张分时图急速拉升,就直接满仓杀入。

任何交易系统的第一步,必然是客观、理性地评估标的当前的健康状态

今天,我们用 Python 配合 QuantDash 平台,写一个能在终端中一键运行的**“个股多维度体检报告生成器”**。只需输入一个股票代码,脚本就会在 1 秒内生成一份包含:价格高低位、波动率状态、均线支撑力、成交量变动的核心体检结果,帮你彻底告别盲目跟风。

我们的脚本将从四个核心维度对个股进行全盘扫描:

  1. 均线趋势健康度:计算最新收盘价处于 MA20(生命线)和 MA60(决策线)的什么位置,是否形成了强势趋势。

  2. 历史价格相对位置:当前最新价在过去 120 个交易日(约半年)中,处于高位还是历史底部?(百分比位置)。

  3. 波动率监控(ATR):计算近 14 日的平均真实波幅,评估该股当前是属于暴风雨前夕的“缩量横盘”,还是属于庄家震荡的“宽幅剧烈波动”。

  4. 量能强弱:今日成交量对比 20 日均量,判断是无量空涨(衰竭)还是放量突破。

import pandas as pd
import numpy as np
from quantdash import QuantDash

# 初始化客户端
qd = QuantDash(api_key="你的_QUANTDASH_API_KEY")

def generate_stock_report(symbol):
    print(f"\n🔍 正在为标的 [{symbol}] 收集历史数据并生成多维体检报告...\n")
    
    try:
        # 1. 抓取近 120 个交易日的 K 线数据
        df = qd.stock.get_kline(
            symbol=symbol,
            start_date="2025-10-01",
            end_date="2026-07-15",
            adjust="forward" # 必须用复权价格,保证最高价、最低价和均线的有效性
        )
        
        if df is empty or len(df) < 60:
            print("❌ 获取数据不足,无法生成完整体检报告。")
            return
            
        # 按时间升序
        df = df.sort_values(by="trade_date").reset_index(drop=True)
        
        # 2. 计算各项复盘量化指标
        # 均线
        df["MA20"] = df["close"].rolling(20).mean()
        df["MA60"] = df["close"].rolling(60).mean()
        
        # 计算 ATR (Average True Range)
        high_low = df["high"] - df["low"]
        high_cp = (df["high"] - df["close"].shift(1)).abs()
        low_cp = (df["low"] - df["close"].shift(1)).abs()
        tr = pd.concat([high_low, high_cp, low_cp], axis=1).max(axis=1)
        df["ATR"] = tr.rolling(14).mean()
        
        # 成交量均线
        df["VOL_MA20"] = df["volume"].rolling(20).mean()
        
        # 提取最新行
        last = df.iloc[-1]
        close = last["close"]
        
        # 3. 开始各项诊断
        # A. 均线状态
        ma20_status = "之上 (支撑有效)" if close >= last["MA20"] else "之下 (短期压制)"
        ma60_status = "之上 (中期多头)" if close >= last["MA60"] else "之下 (中期弱势)"
        
        # B. 历史价格相对位置百分比
        max_120 = df["high"].max()
        min_120 = df["low"].min()
        pos_pct = ((close - min_120) / (max_120 - min_120)) * 100
        
        # C. 波动率状况 (ATR)
        atr_ratio = (last["ATR"] / close) * 100 # ATR占股价比例
        volatility_level = "极高 (谨慎宽幅震荡)" if atr_ratio > 5 else ("温和" if atr_ratio > 2 else "极低 (可能面临变盘突破)")
        
        # D. 量能状态
        vol_ratio = last["volume"] / last["VOL_MA20"]
        volume_status = "严重放量" if vol_ratio > 2 else ("温和" if vol_ratio > 0.8 else "严重缩量")
        
        # 4. 打印可视化报告
        print("=" * 50)
        print(f"📊 个股多维度健康体检报告 [{symbol}]")
        print("=" * 50)
        print(f"ℹ️  最新收盘价: {close:.2f}")
        print(f"ℹ️  120日价格区间: [{min_120:.2f} ~ {max_120:.2f}]")
        print(f"ℹ️  当前股价在半年来高低位区间的位置: {pos_pct:.1f}%")
        if pos_pct > 80:
            print("   👉 诊断:股价处于近期绝对高位,注意高位滞涨风险。")
        elif pos_pct < 20:
            print("   👉 诊断:股价处于近期绝对低位,关注是否有筑底企稳迹象。")
        else:
            print("   👉 诊断:股价处于中段合理波动区间。")
        print("-" * 50)
        
        print(f"📈 均线趋势维度:")
        print(f"   - 20日生命线: {last['MA20']:.2f} | 股价处于线 {ma20_status}")
        print(f"   - 60日生命线: {last['MA60']:.2f} | 股价处于线 {ma60_status}")
        print("-" * 50)
        
        print(f"🌪️ 波动与量能维度:")
        print(f"   - 14日ATR波动率占比: {atr_ratio:.2f}% | 波动状态: {volatility_level}")
        print(f"   - 今日成交量对比20日均量: {vol_ratio:.2f}倍 | 量能表现: {volume_status}")
        print("=" * 50)
        
    except Exception as e:
        print(f"❌ 运行失败: {e}")

if __name__ == "__main__":
    # 支持随时更换你想体检的任意股票(A股、港股、美股通用)
    generate_stock_report("00700.HK")  # 例如体检腾讯控股
    # generate_stock_report("600519.SH") # 体检茅台

许多初学者学量化,一开始就去啃复杂的机器学习、LSTM 神经网络。但实际上,大部分实盘交易者的核心优势,在于通过高效的数据清洗流程,帮助自己过滤掉那些不理性的、高风险的交易。

使用 quantdash-python-sdk,你可以非常轻松地写出这样的个股诊断脚本[3]。你不需要处理因为除权带来的 K 线价格下调,也不需要花时间清理爬虫返回的 NaN 空值,所有的 K 线数据一键返回标准的 Pandas DataFrame,开箱即可计算[3][6]。把基础繁琐的数据整理交给 QuantDash 平台,把 100% 的精力留给你自己的复盘思维和策略构建。

相关链接 :

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐