实测 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财报分析基础上,加入技术指标过滤。
优化方案:
- DeepSeek分析财报,筛选出财务健康的股票;
- 用技术指标(MA、MACD、RSI)过滤出趋势向上的股票;
- 两者都满足才买入。
技术指标过滤代码:
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的具体步骤:
-
下载安装:访问 https://easyclaw.cn/?f=238 下载安装包,一键安装。
-
添加金融技能:
- 打开EasyClaw,进入"技能商店"。
- 点击"财务金融"分类。
- 添加需要的技能:
- 妙想资讯搜索:用于监控新闻。
- 股价速查:用于实时价格提醒。
- 妙想智能选股:用于量化筛选。
-
配置监控任务:
- 进入"定时任务"模块。
- 设置监控频率(比如每5分钟)。
- 添加自选股代码。
- 设置提醒条件(比如价格涨跌幅超过5%)。
-
开始自动监控:
- 点击"启动任务"。
- 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 核心收获
- AI不是"神"。 它有自己的局限性,尤其在时机判断和政策解读上。
- AI的价值在于"自动化",不在于"预测"。 严格执行纪律才是它的强项。
- 人机协作模式最靠谱。 AI处理数据,人做决策。
六、延伸阅读与思考题
延伸阅读:
- 《聪明的投资者》——本杰明·格雷厄姆
- 《思考,快与慢》——丹尼尔·卡尼曼
- 《Advances in Financial Machine Learning》——Marcos López de Prado
思考题:
- 你是否曾经盲目相信过AI的建议?结果如何?
- 你认为AI在炒股中,最能帮上你的是哪方面?
- 你如何平衡"AI辅助"与"人做决策"?
欢迎在评论区分享你的答案,一起交流。
本文仅供参考,不构成任何投资建议。股市有风险,投资需谨慎。文中提及的任何策略均不代表未来收益保证。
觉得有帮助的麻烦点下好文要顶,欢迎评论区交流!

浙公网安备 33010602011771号