讲师中心 微信公众号
AI工具推荐 视频效率加速

A股智能投资助手

Polar Sponsor
爱发电 赞助
.NET 9.0

A股智能投资助手 - 实时行情、技术分析、自动盯盘、持仓报告、异动告警。支持MACD/KDJ/布林带等技术指标,定时推送持仓报告到飞书/微信。

A股智能投资助手 (akshare-pro)

功能概述

A股智能投资助手 (akshare-pro)是一项面向实际任务的技能,主要用于实时行情查询(支持多数据源自动切换);K线数据获取(自动重试机制);

核心要点

  • 宏观经济数据;
  • 技术指标计算 (MACD/KDJ/RSI/布林带);
  • 自动盯盘告警;

使用与执行

每日持仓报告;回测策略模板;飞书/微信推送;智能错误处理 (网络异常自动重试);备用数据源 (东方财富 API 直连);技术指标计算;买卖信号识别;

结果检查与注意事项

飞书推送配置;在 Open。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

A股智能投资助手 (akshare-pro)

功能特性

  • 实时行情查询(支持多数据源自动切换)
  • K线数据获取(自动重试机制)
  • 宏观经济数据
  • 技术指标计算 (MACD/KDJ/RSI/布林带)
  • 自动盯盘告警
  • 每日持仓报告
  • 回测策略模板
  • 飞书/微信推送
  • 智能错误处理(网络异常自动重试)
  • 备用数据源(东方财富 API 直连)

快速开始

pip install akshare pandas ta

实时行情

import akshare as ak

# A股实时行情
df = ak.stock_zh_a_spot_em()
print(df[['代码', '名称', '最新价', '涨跌幅', '成交量']].head(10))

# 个股查询
stock = df[df['代码'] == '000001']
print(f"平安银行: {stock['最新价'].values[0]}元, 涨跌幅: {stock['涨跌幅'].values[0]}%")

K线数据

# 获取日K线
df = ak.stock_zh_kline(symbol="000001", period="daily", adjust="qfq", start_date="20240101")

# 周K线
df_weekly = ak.stock_zh_kline(symbol="000001", period="weekly")

# 月K线
df_monthly = ak.stock_zh_kline(symbol="000001", period="monthly")

宏观经济

# GDP
gdp = ak.macro_china_gdp()

# CPI
cpi = ak.macro_china_cpi()

# PMI
pmi = ak.macro_china_pmi()

技术指标计算

import akshare as ak
import pandas as pd
import ta

def calc_indicators(symbol, start_date="20240101"):
    """计算完整技术指标"""
    df = ak.stock_zh_kline(symbol=symbol, period="daily", adjust="qfq", start_date=start_date)
    
    # MACD
    df['macd'] = ta.trend.macd(df['close'])
    df['macd_signal'] = ta.trend.macd_signal(df['close'])
    df['macd_hist'] = ta.trend.macd_diff(df['close'])
    
    # KDJ (用 Stochastic 替代)
    df['stoch_k'] = ta.momentum.stoch(df['high'], df['low'], df['close'])
    df['stoch_d'] = ta.momentum.stoch_signal(df['high'], df['low'], df['close'])
    df['stoch_j'] = 3 * df['stoch_k'] - 2 * df['stoch_d']
    
    # 布林带
    df['bb_upper'] = ta.volatility.bollinger_hband(df['close'])
    df['bb_middle'] = ta.volatility.bollinger_mavg(df['close'])
    df['bb_lower'] = ta.volatility.bollinger_lband(df['close'])
    
    # RSI
    df['rsi'] = ta.momentum.rsi(df['close'])
    
    # 均线
    df['ma5'] = df['close'].rolling(5).mean()
    df['ma10'] = df['close'].rolling(10).mean()
    df['ma20'] = df['close'].rolling(20).mean()
    df['ma60'] = df['close'].rolling(60).mean()
    
    return df

# 使用示例
df = calc_indicators("000001")
latest = df.iloc[-1]
print(f"""
平安银行 技术指标:
- MACD: {latest['macd']:.3f} (信号: {latest['macd_signal']:.3f})
- KDJ: K={latest['stoch_k']:.1f} D={latest['stoch_d']:.1f} J={latest['stoch_j']:.1f}
- 布林带: 上轨={latest['bb_upper']:.2f} 中轨={latest['bb_middle']:.2f} 下轨={latest['bb_lower']:.2f}
- RSI: {latest['rsi']:.1f}
- 均线: MA5={latest['ma5']:.2f} MA20={latest['ma20']:.2f}
""")

买卖信号识别

def detect_signals(df):
    """识别买卖信号"""
    signals = []
    latest = df.iloc[-1]
    prev = df.iloc[-2]
    
    # MACD 金叉/死叉
    if prev['macd'] < prev['macd_signal'] and latest['macd'] > latest['macd_signal']:
        signals.append("📈 MACD金叉 (买入信号)")
    elif prev['macd'] > prev['macd_signal'] and latest['macd'] < latest['macd_signal']:
        signals.append("📉 MACD死叉 (卖出信号)")
    
    # KDJ 超买超卖
    if latest['stoch_j'] > 100:
        signals.append("⚠️ KDJ超买 (J>100)")
    elif latest['stoch_j'] < 0:
        signals.append("💡 KDJ超卖 (J<0)")
    
    # RSI 超买超卖
    if latest['rsi'] > 70:
        signals.append("⚠️ RSI超买 (>70)")
    elif latest['rsi'] < 30:
        signals.append("💡 RSI超卖 (<30)")
    
    # 布林带突破
    if latest['close'] > latest['bb_upper']:
        signals.append("🚀 突破布林上轨")
    elif latest['close'] < latest['bb_lower']:
        signals.append("💰 跌破布林下轨")
    
    # 均线多头/空头
    if latest['ma5'] > latest['ma10'] > latest['ma20']:
        signals.append("🔺 均线多头排列")
    elif latest['ma5'] < latest['ma10'] < latest['ma20']:
        signals.append("🔻 均线空头排列")
    
    return signals

自动盯盘告警

import json
from datetime import datetime

def check_alerts(watchlist, thresholds=None):
    """检查自选股是否触发告警"""
    if thresholds is None:
        thresholds = {
            'pct_change_up': 5.0,    # 涨幅超过5%
            'pct_change_down': -5.0,  # 跌幅超过5%
            'volume_ratio': 3.0,      # 成交量放大3倍
        }
    
    df = ak.stock_zh_a_spot_em()
    alerts = []
    
    for ticker in watchlist:
        stock = df[df['代码'] == ticker]
        if stock.empty:
            continue
            
        stock = stock.iloc[0]
        
        # 涨跌幅告警
        pct = stock['涨跌幅']
        if pct >= thresholds['pct_change_up']:
            alerts.append({
                'ticker': ticker,
                'name': stock['名称'],
                'type': '涨幅告警',
                'message': f"🚀 {stock['名称']}({ticker}) 涨幅 {pct:.2f}%"
            })
        elif pct <= thresholds['pct_change_down']:
            alerts.append({
                'ticker': ticker,
                'name': stock['名称'],
                'type': '跌幅告警',
                'message': f"📉 {stock['名称']}({ticker}) 跌幅 {pct:.2f}%"
            })
    
    return alerts

# 使用示例
watchlist = ["000001", "600519", "000858"]  # 平安银行、茅台、五粮液
alerts = check_alerts(watchlist)
for alert in alerts:
    print(alert['message'])

每日持仓报告

def generate_daily_report(watchlist):
    """生成每日持仓报告"""
    report = []
    report.append(f"# 持仓日报 {datetime.now().strftime('%Y-%m-%d')}n")
    
    df = ak.stock_zh_a_spot_em()
    
    report.append("| 代码 | 名称 | 最新价 | 涨跌幅 | 成交量 | 技术信号 |")
    report.append("|------|------|--------|--------|--------|----------|")
    
    for ticker in watchlist:
        stock = df[df['代码'] == ticker]
        if stock.empty:
            continue
        stock = stock.iloc[0]
        
        # 获取技术信号
        try:
            indicators = calc_indicators(ticker, start_date="20240101")
            signals = detect_signals(indicators)
            signal_str = ", ".join(signals[:2]) if signals else "无明显信号"
        except:
            signal_str = "计算失败"
        
        report.append(f"| {ticker} | {stock['名称']} | {stock['最新价']} | {stock['涨跌幅']:.2f}% | {stock['成交量']} | {signal_str} |")
    
    return "n".join(report)

飞书推送配置

在 OpenClaw 的 openclaw.json 中配置定时任务:

{
  "cron": {
    "jobs": [
      {
        "id": "daily-report",
        "schedule": "0 15 * * 1-5",
        "prompt": "生成今日持仓报告并发送到飞书",
        "channel": "feishu"
      },
      {
        "id": "alert-check",
        "schedule": "*/30 9-15 * * 1-5",
        "prompt": "检查自选股告警",
        "channel": "feishu"
      }
    ]
  }
}

回测策略模板

def backtest_ma_cross(symbol, short=5, long=20, start_date="20230101"):
    """均线交叉回测"""
    df = ak.stock_zh_kline(symbol=symbol, period="daily", adjust="qfq", start_date=start_date)
    
    df['ma_short'] = df['close'].rolling(short).mean()
    df['ma_long'] = df['close'].rolling(long).mean()
    
    # 生成信号
    df['signal'] = 0
    df.loc[df['ma_short'] > df['ma_long'], 'signal'] = 1  # 买入
    df.loc[df['ma_short'] < df['ma_long'], 'signal'] = -1  # 卖出
    
    # 计算收益
    df['returns'] = df['close'].pct_change()
    df['strategy_returns'] = df['signal'].shift(1) * df['returns']
    df['cumulative'] = (1 + df['strategy_returns']).cumprod()
    
    total_return = (df['cumulative'].iloc[-1] - 1) * 100
    print(f"MA{short}/{long} 策略收益: {total_return:.2f}%")
    
    return df

# 使用示例
backtest_ma_cross("000001", short=5, long=20)

风险提示

  1. 数据来源: 公开财经网站,仅供参考
  2. 投资风险: 技术指标不构成投资建议
  3. 数据延迟: 实时数据可能有 15 分钟延迟
  4. 回测局限: 历史收益不代表未来表现
目录

热门AI工具

更多
创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

码上飞
码上飞 Hot

一款基于自然语言的AI应用开发平台,可根据用户描述自动生成应用程序,帮助个人和团队快速完成应用原型与开发。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

0

2026.11.05

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

0

2026.11.05

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

0

2026.11.04

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

0

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

0

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

0

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

0

2026.11.04

XORM框架零基础入门教程
XORM框架零基础入门教程

本专题梳理XORM框架的入门路径,从框架定位、依赖安装、连接数据库到跑通第一个增删改查示例,讲清Engine初始化、日志开启与项目目录规划,并对比GORM等同类ORM的差异,帮助Go开发者建立整体认知。

0

2026.11.04

Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

0

2026.11.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn