将股票代吗放mystock.txt文件中,一个股票代码一行。也可在程序界面中录入股票代码,点保存将股票存入mystock.txt中。
大家讲api-key替换成自己的申请的。ai分析结果仅供参考,后果自行负责。
[Python] 纯文本查看 复制代码import tkinter as tk
from tkinter import ttk, messagebox, scrolledtext
import akshare as ak
import pandas as pd
import datetime
import os
from docx import Document
from openai import OpenAI
import json
# 设置OpenAI API配置
client = OpenAI(
base_url="https://api.deepseek.com/v1",
api_key="sk-000000000000"
)
def load_stock_codes():
if os.path.exists('mystock.txt'):
with open('mystock.txt', 'r') as f:
return f.read().strip().split('\n')
return []
def save_stock_codes(codes):
with open('mystock.txt', 'w') as f:
f.write('\n'.join(codes))
def prepare_stock_data(df, code):
# 获取股票名称
stock_info = ak.stock_info_a_code_name()
stock_name = stock_info[stock_info['code'] == code]['name'].iloc[0] if not stock_info[stock_info['code'] == code].empty else '未知'
# 计算技术指标
ma5 = df['收盘'].rolling(5).mean()
ma10 = df['收盘'].rolling(10).mean()
ma20 = df['收盘'].rolling(20).mean()
ma60 = df['收盘'].rolling(60).mean()
# 计算RSI
delta = df['收盘'].diff()
gain = (delta.where(delta > 0, 0)).rolling(window=14).mean()
loss = (-delta.where(delta 0:
# 准备分析数据
analysis_data = prepare_stock_data(df, code)
# 构建提示词
prompt = f"""请分析以下股票数据,给出详细的分析报告和投资建议:
{json.dumps(analysis_data, ensure_ascii=False, indent=2)}
请从以下几个方面进行分析:
1. 基本面分析
2. 技术面分析
3. 市场情绪分析
4. 风险提示
5. 投资建议
6. 预测下一个交易日涨幅
请用专业、客观的语言进行分析,并给出具体的操作建议。"""
# 调用deepseek-chat模型
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "你是一位专业的股票分析师,请对股票数据进行深入分析并提供投资建议。"},
{"role": "user", "content": prompt}
],
temperature=0.7,
max_tokens=2000
)
# 获取分析结果
analysis_result = response.choices[0].message.content
# 添加到文档
doc.add_heading(f'股票代码: {code} ({analysis_data["股票名称"]})', level=1)
doc.add_paragraph(analysis_result)
except Exception as e:
doc.add_heading(f'股票代码: {code}', level=1)
doc.add_paragraph(f'分析失败: {str(e)}')
doc.save(f'stock_analysis_{today}.docx')
messagebox.showinfo("分析完成", f"分析结果已保存到 stock_analysis_{today}.docx")
class StockAnalysisApp:
def __init__(self, root):
self.root = root
self.root.title("股票分析程序")
self.root.geometry("600x400")
self.stock_codes = load_stock_codes()
self.stock_text = scrolledtext.ScrolledText(root, height=10, width=50)
self.stock_text.pack(pady=10)
self.stock_text.insert(tk.END, '\n'.join(self.stock_codes))
self.save_button = tk.Button(root, text="保存股票代码", command=self.save_codes)
self.save_button.pack(pady=5)
self.analyze_button = tk.Button(root, text="分析股票", command=self.analyze)
self.analyze_button.pack(pady=5)
def save_codes(self):
codes = self.stock_text.get(1.0, tk.END).strip().split('\n')
save_stock_codes(codes)
messagebox.showinfo("保存成功", "股票代码已保存到mystock.txt")
def analyze(self):
codes = self.stock_text.get(1.0, tk.END).strip().split('\n')
if not codes:
messagebox.showerror("错误", "请先输入股票代码!")
return
analyze_stocks(codes)
if __name__ == "__main__":
root = tk.Tk()
app = StockAnalysisApp(root)
root.mainloop()