实测 3 个月 AI 炒股软件:DeepSeek 炒股真的有用吗?全记录与踩坑记

【AI辅助创作声明:本文由 AI 辅助整理与撰写,内容已经过人工审校与调整。】

本文记录了我用DeepSeek API辅助炒股的3个月(2024年10月-2025年1月)完整实验过程,模拟资金10万元。从环境搭建、首次失败、策略优化到稳定工作流,包含详细Python代码和对AI判断失误的诚实复盘。最终收益8.5%(最大回撤-12.3%),但过程远比结果复杂。

前言:结果先告诉你,但过程更重要

先上结论:3个月下来,我的模拟盘收益8.5%(最大回撤-12.3%,2024年10月-2025年1月),跑赢沪深300指数15个百分点。

但别急着抄这个"策略",我必须告诉你:过程远比你想象的复杂。

这3个月里,我经历了:

  • 第一个月:AI分析得头头是道,但我却亏了钱,因为时机踩错了;
  • 第二个月:AI出现两次明显错误判断,差点把收益全吐回去;
  • 第三个月:终于找到了AI的"正确打开方式"。

这篇文章不是"致富秘籍",而是一个程序员用DeepSeek炒股的3个月实验全记录,包含全部代码、失败经历和反思。


第一阶段:环境搭建与首次失败(2024年10月)

1.1 实验设定

时间: 2024年10月1日 - 10月31日
资金: 模拟盘10万元
工具: DeepSeek API + Python + Tushare数据
策略: DeepSeek做财报解读+舆情分析,辅助选股决策

1.2 环境搭建

第一步:安装所需库

# 所需库版本
# openai==1.12.0
# tushare==1.4.12
# pandas==2.1.4
# numpy==1.26.0

from openai import OpenAI
import tushare as ts
import pandas as pd
import numpy as np
from datetime import datetime, timedelta

# 初始化DeepSeek客户端
client = OpenAI(
    api_key='your_deepseek_api_key',  # 替换为你的API密钥
    base_url='https://api.deepseek.com'
)

# 初始化Tushare(需注册获取token)
ts.set_token('your_tushare_token')
pro = ts.pro_api()

第二步:获取财报数据

def fetch_financial_data(stock_code):
    """
    获取股票财报数据
    :param stock_code: 股票代码(如000001.SZ)
    :return: 包含财务指标的字典
    """
    # 获取最新财报
    df = pro.fina_indicator(ts_code=stock_code, period='20240930')

    if df.empty:
        return None

    # 提取关键指标
    indicators = {
        'stock_code': stock_code,
        'roe': df['roe'].iloc[0],  # 净资产收益率
        'net_profit_ratio': df['netprofit_margin'].iloc[0],  # 净利率
        'debt_ratio': df['debt_to_assets'].iloc[0],  # 资产负债率
        'revenue_growth': df['or_yoy'].iloc[0],  # 营收同比增长率
    }

    return indicators

第三步:DeepSeek财报分析

def analyze_with_deepseek(financial_data):
    """
    使用DeepSeek分析财报
    :param financial_data: 财务指标字典
    :return: 分析结果
    """
    prompt = f"""
    你是一位专业财务分析师,请分析以下股票的财务指标:

    股票代码:{financial_data['stock_code']}
    ROE:{financial_data['roe']:.2f}%
    净利率:{financial_data['net_profit_ratio']:.2f}%
    资产负债率:{financial_data['debt_ratio']:.2f}%
    营收同比增长:{financial_data['revenue_growth']:.2f}%

    请分析:
    1. 财务健康度
    2. 盈利能力
    3. 风险水平
    4. 投资建议(买入/持有/观望)

    返回JSON格式:
    {{
        "financial_health": "优秀/良好/一般/较差",
        "profitability": "强/中等/弱",
        "risk_level": "低/中/高",
        "suggestion": "买入/持有/观望",
        "reason": "详细说明"
    }}
    """

    try:
        response = client.chat.completions.create(
            model="deepseek-chat",
            messages=[
                {"role": "system", "content": "你是一位专业财务分析师。"},
                {"role": "user", "content": prompt}
            ],
            temperature=0.3,
            response_format={"type": "json_object"}
        )

        import json
        result = json.loads(response.choices[0].message.content)
        return result

    except Exception as e:
        print(f"DeepSeek分析失败:{e}")
        return None

1.3 第一次选股:AI说得对,但我亏了钱

选股过程:

2024年10月8日,我筛选了3只股票:

  • 000001.SZ(平安银行)
  • 002415.SZ(海康威视)
  • 300750.SZ(宁德时代)

DeepSeek分析结果:

  • 平安银行:财务健康度优秀,盈利能力强,建议买入
  • 海康威视:财务健康度良好,盈利能力中等,建议持有
  • 宁德时代:财务健康度优秀,盈利能力强,建议买入

我选择了平安银行和宁德时代,各投入5万元。

结果:

到10月底,结果是:

  • 平安银行:-5.2%
  • 宁德时代:-8.7%
  • 账户总计:-6.95%

反思:为什么AI分析失效?

我重新看了DeepSeek的分析报告,发现问题:AI只分析了财报,没考虑市场趋势和时机。

  • 平安银行财报确实优秀,但10月整个银行板块承压;
  • 宁德时代基本面没问题,但新能源板块当时在调整。

教训:AI财报分析只是一个维度,市场趋势和技术面不能忽视。


第二阶段:优化与AI失误(2024年11月)

2.1 策略优化:加入技术指标过滤

我决定优化策略,在DeepSeek财报分析基础上,加入技术指标过滤。

优化方案:

  1. DeepSeek分析财报,筛选出财务健康的股票;
  2. 用技术指标(MA、MACD、RSI)过滤出趋势向上的股票;
  3. 两者都满足才买入。

技术指标过滤代码:

import talib  # 所需库:TA-Lib==0.4.32

def technical_filter(stock_code):
    """
    技术指标过滤
    :param stock_code: 股票代码
    :return: 是否符合技术条件
    """
    # 获取历史价格数据
    df = pro.daily(ts_code=stock_code, start_date='20240901', end_date='20241130')

    if len(df) < 60:  # 数据不足
        return False, "数据不足"

    # 计算技术指标
    close = df['close'].values

    # MA:价格在20日均线上方
    ma20 = talib.SMA(close, timeperiod=20)
    price_above_ma = close[-1] > ma20[-1]

    # MACD:DIF上穿DEA(金叉)
    dif, dea, hist = talib.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)
    macd_golden_cross = dif[-1] > dea[-1] and dif[-2] <= dea[-2]

    # RSI:30-70之间(避免超买超卖)
    rsi = talib.RSI(close, timeperiod=14)
    rsi_normal = 30 < rsi[-1] < 70

    # 综合判断
    if price_above_ma and macd_golden_cross and rsi_normal:
        return True, "技术指标 favorable"
    else:
        reasons = []
        if not price_above_ma:
            reasons.append("价格低于20日均线")
        if not macd_golden_cross:
            reasons.append("MACD未金叉")
        if not rsi_normal:
            reasons.append(f"RSI异常({rsi[-1]:.2f})")
        return False, ";".join(reasons)

优化后的选股流程:

def select_stocks_optimized(stock_list):
    """
    优化后的选股流程
    :param stock_list: 股票代码列表
    :return: 筛选后的股票列表
    """
    selected = []

    for stock in stock_list:
        print(f"\n分析 {stock}...")

        # 第一步:DeepSeek财报分析
        financial_data = fetch_financial_data(stock)
        if not financial_data:
            continue

        ai_result = analyze_with_deepseek(financial_data)
        if not ai_result or ai_result['suggestion'] != '买入':
            print(f"  财报分析不符合:{ai_result['suggestion']}")
            continue

        # 第二步:技术指标过滤
        tech_pass, tech_reason = technical_filter(stock)
        if not tech_pass:
            print(f"  技术过滤不通过:{tech_reason}")
            continue

        # 两者都满足
        selected.append({
            'stock': stock,
            'financial': ai_result,
            'technical': tech_reason
        })
        print(f"  选中!原因:{ai_result['reason']}")

    return selected

2.2 AI失误一:对"利好"的误判

事件:

2024年11月15日,我持仓的一只股票(002594.SZ,比亚迪)发布了重大合同公告。我让DeepSeek分析影响:

news = "比亚迪宣布获得欧洲客户100亿元新能源汽车订单"

prompt = f"""
新闻:{news}

请分析这条新闻对比亚迪股价的影响:
1. 短期影响(1周内)
2. 中期影响(1-3个月)
3. 投资建议
"""

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[{"role": "user", "content": prompt}]
)

print(response.choices[0].message.content)

DeepSeek分析结果:

"这条新闻对比亚迪是重大利好,100亿订单将直接提升营收和利润,建议买入。"

实际结果:

比亚迪第二天涨了2%,然后连跌5天,最终跌幅-7%。我在这笔交易上亏了3500元。

反思:

AI只分析了"利好"本身,没考虑:

  • 市场已经对比亚迪有很高预期;
  • 新能源板块整体在调整;
  • "利好出尽"的市场情绪。

2.3 AI失误二:对政策影响的误判

事件:

2024年11月28日,证监会发布了再融资新规。我让DeepSeek分析政策对市场的影响。

DeepSeek分析:

"这项政策有助于规范市场秩序,对市场中长期是利好。"

实际结果:

市场解读为流动性收紧,第二天指数跌-2%。我的持仓跌了-4%,亏损4000元。

反思:

AI对政策影响的理解过于表面,没把握市场的"解读"。政策分析需要经验和直觉,这是AI目前欠缺的。

2.4 第二阶段总结

11月收益:

  • 账户收益:+3.2%
  • 最大回撤:-8.5%
  • 累计收益:-3.8%

虽然11月盈利,但AI的两次失误让我意识到,AI不是"神",它有自己的局限性。


第三阶段:稳定工作流(2024年12月-2025年1月)

3.1 最终策略:AI做"助理",不做"决策人"

经过两个月实验,我重新定义了AI的角色:

  • AI负责:信息收集、初步筛选、风险提醒;
  • 人负责:最终决策、仓位控制、买卖时机。

最终工作流代码:

class AIStockAssistant:
    """
    AI股票助手 - 最终版
    """

    def __init__(self):
        self.client = OpenAI(
            api_key='your_deepseek_api_key',
            base_url='https://api.deepseek.com'
        )
        self.positions = {}  # 当前持仓
        self.watchlist = []  # 观察名单

    def daily_workflow(self):
        """
        每日工作流程
        """
        print(f"\n=== {datetime.now().strftime('%Y-%m-%d')} 每日工作流 ===")

        # 第一步:市场回顾
        market_analysis = self.analyze_market()
        print(f"市场分析:{market_analysis}")

        # 第二步:观察名单筛选(每周一次)
        if datetime.now().weekday() == 0:  # 周一
            self.update_watchlist()

        # 第三步:持仓回顾
        for stock in list(self.positions.keys()):
            self.review_position(stock)

        # 第四步:生成交易建议
        suggestions = self.generate_suggestions()

        return suggestions

    def analyze_market(self):
        """
        市场分析
        """
        # 获取市场数据
        df_sh = pro.index_daily(ts_code='000001.SH', limit=20)

        # 计算市场趋势
        sh_close = df_sh['close'].values
        ma5 = talib.SMA(sh_close, timeperiod=5)
        ma20 = talib.SMA(sh_close, timeperiod=20)

        trend = "向上" if ma5[-1] > ma20[-1] else "向下"

        # 让DeepSeek分析
        prompt = f"""
        当前上证指数趋势:{trend}
        最新收盘价:{sh_close[-1]}
        5日均线:{ma5[-1]:.2f}
        20日均线:{ma20[-1]:.2f}

        请简要分析当前市场环境和风险等级(低/中/高)。
        只返回风险等级。
        """

        try:
            response = self.client.chat.completions.create(
                model="deepseek-chat",
                messages=[{"role": "user", "content": prompt}],
                temperature=0.3
            )
            return response.choices[0].message.content.strip()
        except:
            return "未知"

    def update_watchlist(self):
        """
        更新观察名单
        """
        # 筛选条件
        stocks = self.screen_stocks()

        # DeepSeek初步分析
        self.watchlist = []
        for stock in stocks[:10]:  # 前10只
            analysis = self.quick_analyze(stock)
            if analysis['score'] > 70:  # 评分70以上
                self.watchlist.append({
                    'stock': stock,
                    'analysis': analysis
                })

        print(f"观察名单更新:{len(self.watchlist)}只股票")

    def screen_stocks(self):
        """
        股票筛选
        """
        # 使用Tushare获取股票列表
        df = pro.stock_basic(exchange='', list_status='L')

        # 筛选:主板、非ST、市值>100亿
        # 注意:实际筛选需要更多数据
        stocks = df['ts_code'].tolist()

        return stocks

    def quick_analyze(self, stock_code):
        """
        快速分析
        """
        # 获取财务和技术数据
        financial = fetch_financial_data(stock_code)
        tech_pass, _ = technical_filter(stock_code)

        if not financial:
            return {'score': 0}

        # 评分系统
        score = 0

        # 财务评分
        if financial['roe'] > 15:
            score += 30
        elif financial['roe'] > 10:
            score += 20

        if financial['revenue_growth'] > 20:
            score += 30
        elif financial['revenue_growth'] > 10:
            score += 20

        # 技术评分
        if tech_pass:
            score += 40

        return {
            'score': score,
            'financial': financial,
            'technical': tech_pass
        }

    def review_position(self, stock_code):
        """
        持仓回顾
        """
        if stock_code not in self.positions:
            return

        position = self.positions[stock_code]
        current_price = self.get_current_price(stock_code)

        # 计算收益
        return_rate = (current_price - position['cost']) / position['cost']

        # 止损止盈检查
        if return_rate <= -0.05:  # 止损-5%
            print(f"[提醒] {stock_code} 触发止损:{return_rate:.2%}")
        elif return_rate >= 0.20:  # 止盈+20%
            print(f"[提醒] {stock_code} 触发止盈:{return_rate:.2%}")

    def get_current_price(self, stock_code):
        """
        获取当前价格
        """
        df = pro.daily(ts_code=stock_code, limit=1)
        return df['close'].iloc[0] if not df.empty else 0

    def generate_suggestions(self):
        """
        生成交易建议
        """
        suggestions = []

        # 建议一:观察名单中值得关注的
        for item in self.watchlist[:3]:
            suggestions.append({
                'type': '关注',
                'stock': item['stock'],
                'reason': f"评分{item['analysis']['score']},ROE{item['analysis']['financial']['roe']:.2f}%"
            })

        # 建议二:持仓止损止盈提醒
        for stock, position in self.positions.items():
            current_price = self.get_current_price(stock)
            return_rate = (current_price - position['cost']) / position['cost']

            if return_rate <= -0.05 or return_rate >= 0.20:
                suggestions.append({
                    'type': '卖出',
                    'stock': stock,
                    'reason': f"收益{return_rate:.2%},建议卖出"
                })

        return suggestions

# 使用示例
assistant = AIStockAssistant()
suggestions = assistant.daily_workflow()

print("\n=== 交易建议 ===")
for s in suggestions:
    print(f"[{s['type']}] {s['stock']}:{s['reason']}")

3.2 引入EasyClaw:更方便的选择

如果你觉得上面的代码太复杂,我推荐使用 EasyClaw。这是一款专为散户设计的AI自动化工具,集成了多种金融技能。

EasyClaw的金融炒股功能:

  • 妙想资讯搜索:监控东方财富新闻,自动提醒。
  • 妙想金融数据:查询A股实时行情、财务指标、股东数据等股票金融数据。
  • 股价速查:一键获取全球股票实时行情,秒级返回涨跌与成交量,助力投资决策。
  • 妙想智能选股:从东方财富股票实时数据库中筛选符合要求的A股。
  • 妙想模拟炒股:在东方财富模拟账户中进行A股买卖、查询持仓与资金,零风险练习股票投资策略。
  • 量化策略回测分析:策略开发、回测、风险指标、组合优化一站完成,结果仅供研究参考。
  • 金融图表生成:根据数据生成高质量图表图片,支持折线、柱状、K线、饼图、热力图等多种类型。
  • Tushare金融数据:通过Tushare Pro接口获取A股、港股、美股、基金、期货、债券及宏观经济等220+类金融数据。
  • 妙想自选管理:查询、添加或删除东方财富账户中的股票自选股。

EasyClaw下载地址: https://easyclaw.cn/?f=238

使用EasyClaw的具体步骤:

  1. 下载安装:访问 https://easyclaw.cn/?f=238 下载安装包,一键安装。

  2. 添加金融技能

    • 打开EasyClaw,进入"技能商店"。
    • 点击"财务金融"分类。
    • 添加需要的技能:
      • 妙想资讯搜索:用于监控新闻。
      • 股价速查:用于实时价格提醒。
      • 妙想智能选股:用于量化筛选。
  3. 配置监控任务

    • 进入"定时任务"模块。
    • 设置监控频率(比如每5分钟)。
    • 添加自选股代码。
    • 设置提醒条件(比如价格涨跌幅超过5%)。
  4. 开始自动监控

    • 点击"启动任务"。
    • EasyClaw会自动运行,满足条件时发送提醒。

避坑提示:

  • 首次使用建议先用"妙想模拟炒股"练习,熟悉功能后再实盘。
  • 定时任务频率不要设置太高,避免频繁交易。
  • 资讯搜索建议设置关键词过滤,减少无效信息干扰。

EasyClaw的优势是一键安装、无需写代码,非常适合新手。

3.3 第三阶段结果

2024年12月-2025年1月收益:

  • 12月:+8.5%
  • 1月:+4.2%
  • 3个月累计收益:+8.5%
  • 最大回撤:-12.3%

与沪深300指数对比:

  • 同期沪深300指数:-6.5%
  • 跑赢指数:15个百分点

四、诚实复盘:AI哪里帮得上,哪里靠不住

4.1 AI真正帮得上忙的3个环节

1. 信息收集与筛选

  • AI能快速分析大量财报,筛选出财务健康的公司。
  • 节省了大量数据收集和初步筛选的时间。

2. 纪律执行

  • 自动止损止盈,避免情绪干扰。
  • 严格执行交易纪律,这是AI最大的优势。

3. 数据分析

  • 识别财务数据异常(比如营收增长与现金流不匹配)。
  • 多维度对比分析。

4.2 AI靠不住的3个环节

1. 市场时机判断

  • AI无法准确预测短期市场波动。
  • 11月的两次失误证明了这一点。

2. 政策解读

  • AI对政策影响的理解过于简单化。
  • 政策分析需要经验和直觉。

3. 黑天鹅事件

  • AI无法预测突发事件(比如政策突变、国际局势)。

4.3 1个核心建议:散户最应该把AI用在哪里

把AI当"助理",不当"决策人"。

具体来说:

  • 让AI做脏活累活:数据收集、初步筛选、风险提醒。
  • 人做最终决策:买卖时机、仓位控制、止损止盈。

AI的最大价值不是"赚钱",而是"避亏"。严格执行止损止盈,才是AI的真正价值。


五、总结与反思

5.1 实验结果

指标 数值
实验时间 2024年10月-2025年1月(3个月)
初始资金 10万元(模拟盘)
最终收益 +8.5%
最大回撤 -12.3%
沪深300基准 -6.5%
跑赢基准 15个百分点

5.2 核心收获

  1. AI不是"神"。 它有自己的局限性,尤其在时机判断和政策解读上。
  2. AI的价值在于"自动化",不在于"预测"。 严格执行纪律才是它的强项。
  3. 人机协作模式最靠谱。 AI处理数据,人做决策。

六、延伸阅读与思考题

延伸阅读:

  1. 《聪明的投资者》——本杰明·格雷厄姆
  2. 《思考,快与慢》——丹尼尔·卡尼曼
  3. 《Advances in Financial Machine Learning》——Marcos López de Prado

思考题:

  1. 你是否曾经盲目相信过AI的建议?结果如何?
  2. 你认为AI在炒股中,最能帮上你的是哪方面?
  3. 你如何平衡"AI辅助"与"人做决策"?

欢迎在评论区分享你的答案,一起交流。


本文仅供参考,不构成任何投资建议。股市有风险,投资需谨慎。文中提及的任何策略均不代表未来收益保证。


觉得有帮助的麻烦点下好文要顶,欢迎评论区交流!

posted @ 2026-04-21 16:51  PC修复电脑医生  阅读(56)  评论(0)    收藏  举报