鼎盛网

 找回密码
 注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

关于DeepSeek R1本地部署转发2个帖子:1个是ollama安装及deepseek模型或其它模型的安装,1个是web-ui界面的安装(本地部署目前不支持联网搜索),示例为让几个模型参考模仿新年贺词的内容和结构重写一篇的结果。

[复制链接]
跳转到指定楼层
楼主
发表于 2025-1-28 13:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 中年机器猫 于 2025-1-28 13:41 编辑

ollama安装及deepseek R1模型或其它模型的安装
https://www.1ai.net/27856.htmlweb-ui可视界面安装
https://blog.csdn.net/xianfianpan/article/details/143441456
目前ollama除deepseek R1外,还有deepseek v2.5/v3/code、零一万物Y1.5、通义千问1/2/2.5、微软Phi-3、Meta Llama 3.3等多个模型,
最终效果,可以选择多个模型后同时提问
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2
回复

使用道具 举报

沙发
发表于 2025-1-28 13:45 | 只看该作者

https://www.1ai.net/27856.htmlweb-ui可视界面安装 已经404

回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2025-1-28 14:01 | 只看该作者

打不开是因为网址错了https://www.1ai.net/27856.html,我有安装部分的截图

本帖最后由 中年机器猫 于 2025-1-28 14:02 编辑

回复

使用道具 举报

地板
发表于 2025-1-28 14:07 | 只看该作者

如何安装,可以直接问DeepSeek或者其它AI助手,都可以,但试过之后,还是要几百G的模型才行,小的只能玩玩,干不了什么事。

本帖最后由 isaac 于 2025-1-28 14:09 编辑

回复 支持 反对

使用道具 举报

51
 楼主| 发表于 2025-1-28 14:16 | 只看该作者

关键是看硬盘空间,以及电脑配置。硬盘有地儿就可以随意装大空间模型。

回复

使用道具 举报

61
发表于 2025-1-28 14:19 | 只看该作者

显卡差的就不要考虑了,有着功夫还是用官网版吧,

回复

使用道具 举报

71
发表于 2025-1-28 14:24 | 只看该作者

是,设备需要更新了。

回复

使用道具 举报

81
发表于 2025-1-28 14:25 | 只看该作者
本地模型的分析:
投资建议
<think> 好的,我现在要帮用户生成一份详细的投资建议。首先,我需要仔细阅读和理解用户提供的所有信息,包括股价的数据、K线形态分析、网格位、黄金分割位以及枢轴位的分析,还有新闻情感和股票未来走势预测。
首先,我会回顾股价的收盘价601818.SH,是3.4839%,显示出支撑位。接着,K线显示持续上涨,但近期波动较大。接下来,看看网格位是否在当前趋势中,没有明显突破。黄金分割位在7.7265,虽然接近支持位,但目前股价还没到。枢轴位在0.1104,同样处于支撑位下方。

然后,成交量方面,显示有上涨的迹象,但需要看是否超过阈值。新闻情感分析中,大部分是正的,包括资金流入和市场乐观,但也有部分负面新闻影响。

未来走势预测时,考虑到多日上涨趋势,加上K线持续上升,以及网格位、黄金分割位的位置,可能会继续上涨。操作建议方面,我会建议买入,持有并关注支撑位变化,同时卖出在关键位附近。

最后,整合所有分析,形成一份结构清晰的投资建议,包括技术指标、形态、位置分析、成交量和情感预测,并给出具体的买入、持保留其他策略和卖出建议。 </think>

以下是一份基于您提供的信息的详细投资建议:

一、股票技术指标分析
1. 股价技术指标
收盘价:601818(光大银行)
当前股价:3.4839% (支撑位)
价格趋势:连续上涨,但近期呈现显著波动
短期趋势:受市场情绪影响,可能延续或加速上涨
2. K线形态分析
价格走势:连续上涨,多日呈现持续上升趋势,但近期有较大波动
技术指标:未出现突破位(如7.7265或0.1104)的迹象
支撑位/阻力位:股价未突破关键位
3. 网格位、黄金分割位与枢轴位分析
网格位:6.0980(支撑位),未突破
黄金分割位:7.7265,未突破
枢轴位:0.1104,未突破
4. 成交量与价格水平分析
成交量:显示连续上涨趋势,但需关注是否突破大振幅 threshold(通常建议关注1x、3x或5x)
短期信号:多日上涨模式,可能继续突破
长期信号:结合K线形态和技术指标,支持未来走势
二、对K线形态的分析
当前趋势:连续上涨,但近期有较大波动
支撑位/阻力位:股价未突破关键位(网格位或黄金分割位)
形态特征:持续上升且无明显反转迹象
三、对网格位、黄金分割位与枢轴位的分析
网格位(6.0980):当前处于支撑位,但未突破
建议:如果股价有机会突破或延续上涨趋势,则可能继续突破至7.7265
黄金分割位(7.7265):上方,可能成为新的支撑位或阻力位
建议:若股价有机会突破,需密切关注是否回到关键位置
枢轴位(0.1104):下方,但未突破
四、对成交量与价格水平的分析
成交量:显示持续上涨趋势,且多日上涨模式
短期信号:可能继续突破
长期信号:结合K线形态和技术指标,支持未来走势
成交金额:685.41万元,显示出资金流入为主
五、对新闻情感的分析
当前情感:多日正面消息推动股价上涨(如资金流入)
主要观点:市场乐观,资金流向支持股价上涨
潜在风险:负面消息尚未出现(如“武剑任中国银行副行长”可能影响股价)
六、对股票未来走势的预测
技术趋势:多日上涨模式,结合K线形态和网格位/黄金分割位位置
情感支持:市场乐观,短期资金流入为主
短期信号:继续突破关键位(网格位至7.7265或枢轴位至0.1104)
长期信号:结合多日上涨趋势,预计未来走势将延续
七、对股价的买入建议
1. 买入
购买该股票,在市场情绪逐步转向后,当股价突破或接近关键位(7.7265或0.1104)时进行布局
同时关注短期资金流入情况,避免因短期波动影响投资决策
2. 持保留其他策略
保持持有的位置,等待价格继续上涨并突破关键位
定期检查股价的位置和趋势,及时调整仓位
八、对股价的建议
买入价:6.0980(支撑位)
提供投资机会,当股价继续突破或接近关键位时
卖出价:7.7265(上方)或0.1104(下方)
根据市场情绪调整仓位
总结
结合技术指标、K线形态和情感分析,建议买入该股票,并保持持有的位置。长期来看,结合多日上涨趋势和关键位的位置支持未来走势。
回复 支持 反对

使用道具 举报

91
发表于 2025-1-28 14:26 | 只看该作者
回复

使用道具 举报

101
发表于 2025-1-28 14:30 | 只看该作者
DeepSeek网站给的分析,提示词与本地模型一样。
### 投资建议:股票代码 601818(光大银行)

---

#### **1. 技术指标分析**
- **均线系统(MA)**:  
  - **5日均线**(3.808)持续上行,且股价(3.87)站稳5日、10日、20日均线,短期趋势偏强。  
  - **20日均线**(3.7490)逐步抬升,中期支撑稳固,但需关注能否突破布林带上轨(3.9157)。  
- **RSI(59.83)**:处于中性偏强区间,未超买(70以上),仍有上行空间。  
- **MACD**:  
  - **MACD线**(0.030)上穿信号线(0.0156),柱状图持续扩大(0.0146),显示多头动能增强。  
  - 但MACD仍处于低位,需观察后续是否形成金叉确认趋势。  
- **布林带**:股价贴近中轨(3.7490),上轨(3.9157)与下轨(3.5823)开口扩大,预示波动性可能增加。  
- **ATR(0.1027)**:波动率中等,近期振幅稳定,无明显单边行情信号。

---

#### **2. K线形态分析**
- 近期无显著单根K线形态(如腰带持有、纺锤顶等),但需关注以下组合形态:  
  - **1月23日长阳线**(涨幅6.03%,成交量显著放大),显示短期多头强势。  
  - **1月27日小阳线**(收盘价持平),成交量缩量,表明高位多空分歧,需警惕回调风险。

---

#### **3. 关键位置分析**
- **网格位**:  
  - **小网格**:支撑位3.115(25%)、3.40(50%);阻力位3.685(75%)。当前股价(3.87)高于小网格阻力,需关注能否站稳。  
  - **黄金分割位**:38.2%(3.5345)与50%(3.40)为关键支撑,若回调至3.68(75%)可能提供阻力。  
  - **枢轴位**:当前股价接近枢轴点(3.8733),突破阻力位1(3.9067)可看高至3.9433;若跌破支撑位1(3.8367),可能下探3.8033。

---

#### **4. 成交量与价格水平分析**
- **成交量**:  
  - **1月23日放量上涨**(363万手)验证多头动能,但后续成交量萎缩(1月27日132万手),需警惕量价背离。  
  - **30日天量**(363万手)与地量(108万手)差距较大,显示市场情绪波动。  
- **价格水平**:  
  - **近期高价3.97**(120日天价)为重要阻力,当前股价(3.87)距离阻力位仅2.5%,突破后上行空间打开。  
  - **支撑位**:短期关注3.80(枢轴支撑1),中期关注3.59(唐奇安下轨)。

---

#### **5. 新闻情感分析**
- **中性新闻主导**:  
  - 股东质押(1月27日)、高管变动(1月24日)对股价影响有限。  
  - **1月23日银行板块走强**:光大银行当日涨5.75%,带动短期情绪,但新闻情感得分均为0,市场未形成强烈共识。  
- **风险提示**:需关注后续银行板块整体表现及政策动向。

---

#### **6. 未来走势预测**
- **短期(1-5日)**:  
  - 若突破3.9067(枢轴阻力1),可能挑战3.97(历史高点);若回调,支撑位3.80(枢轴支撑1)和3.68(黄金分割75%)。  
  - RSI与MACD支持震荡上行,但成交量缩量或限制涨幅。  
- **中期(1-3个月)**:  
  - 若站稳3.87并突破3.97,目标看向4.10(斐波那契扩展位);若跌破3.59,可能回踩3.40(黄金分割50%)。

---

#### **7. 操作建议**
- **买入策略**:  
  - **激进型**:现价3.87轻仓试多,止损设3.80(枢轴支撑1),目标3.97。  
  - **稳健型**:等待回调至3.80附近(支撑位)建仓,止损3.75。  
- **持有策略**:  
  - 若持仓成本低于3.80,可继续持有,目标3.97。  
- **卖出策略**:  
  - 若未能突破3.97且出现放量下跌,建议止盈或减仓。  
  - 跌破3.80需严格止损。

---

### **总结**  
光大银行(601818)短期技术面偏多,但需警惕高位缩量回调风险。建议关注3.90-3.97阻力区间的突破情况,结合银行板块整体动向灵活操作。中期若突破历史高点,上行空间打开;若回调,3.40-3.59区间为重要支撑。
回复 支持 反对

使用道具 举报

111
发表于 2025-1-28 14:40 | 只看该作者

DeepSeek生成的大模型投顾代码,可运行本地模型,生成的提示词可用于DeepSeek官网,如需要可添加DeepSeek APIKey,访问官网。

本帖最后由 isaac 于 2025-1-28 14:42 编辑

import json
import requests
from datetime import datetime, timedelta
from textblob import TextBlob  # 用于情感分析

import akshare as ak
import pandas as pd
import talib  # 用于计算技术指标和K线形态
import streamlit as st
import plotly.graph_objs as go
from plotly.subplots import make_subplots

# 辅助函数
def validate_stock_code(symbol):
    """验证股票代码是否有效。"""
    if not symbol.isdigit() or len(symbol) != 6:
        return False
    return True

def get_stock_basic_info(symbol):
    """获取股票基本信息。"""
    stock_info = ak.stock_individual_info_em(symbol=symbol)
    return stock_info

def calculate_technical_indicators(kline_data):
    """计算技术指标。"""
    kline_data['MA_5' = talib.SMA(kline_data['收盘'], timeperiod=5)  # 5日均线
    kline_data['MA_10' = talib.SMA(kline_data['收盘'], timeperiod=10)  # 10日均线
    kline_data['MA_20' = talib.SMA(kline_data['收盘'], timeperiod=20)  # 20日均线
    kline_data['RSI' = talib.RSI(kline_data['收盘'], timeperiod=14)  # 14日RSI
    kline_data['MACD'], kline_data['MACD_signal'], kline_data['MACD_hist' = talib.MACD(
        kline_data['收盘'], fastperiod=12, slowperiod=26, signalperiod=9
    )
    kline_data['VWAP' = (kline_data['收盘' * kline_data['成交量']).cumsum() / kline_data['成交量'].cumsum()
    kline_data['Upper_Band'], kline_data['Middle_Band'], kline_data['Lower_Band' = talib.BBANDS(
        kline_data['收盘'], timeperiod=20, nbdevup=2, nbdevdn=2, matype=0
    )
    kline_data['ATR' = talib.ATR(
        kline_data['最高'], kline_data['最低'], kline_data['收盘'], timeperiod=14
    )
    kline_data['Donchian_High' = kline_data['最高'].rolling(window=20).max()  # 20日最高
    kline_data['Donchian_Low' = kline_data['最低'].rolling(window=20).min()  # 20日最低
    return kline_data

def calculate_grid_levels(kline_data):
    """计算大中小网格位。"""
    high = kline_data['最高'].max()  # 最高价
    low = kline_data['最低'].min()   # 最低价
    price_range = high - low         # 价格区间
    large_grid = {'大网格_50%': low + price_range * 0.5}
    medium_grid = {
        '中网格_33.33%': low + price_range * 0.3333,
        '中网格_66.67%': low + price_range * 0.6667
    }
    small_grid = {
        '小网格_25%': low + price_range * 0.25,
        '小网格_50%': low + price_range * 0.5,
        '小网格_75%': low + price_range * 0.75
    }
    return large_grid, medium_grid, small_grid

def calculate_fibonacci_levels(kline_data):
    """计算黄金分割位。"""
    high = kline_data['最高'].max()  # 最高价
    low = kline_data['最低'].min()   # 最低价
    price_range = high - low         # 价格区间
    fibonacci_levels = {
        '黄金分割_23.6%': high - price_range * 0.236,
        '黄金分割_38.2%': high - price_range * 0.382,
        '黄金分割_50%': high - price_range * 0.5,
        '黄金分割_61.8%': high - price_range * 0.618,
        '黄金分割_78.6%': high - price_range * 0.786
    }
    return fibonacci_levels

def calculate_pivot_points(kline_data):
    """计算枢轴位。"""
    prev_day = kline_data.iloc[-1
    high = prev_day['最高'
    low = prev_day['最低'
    close = prev_day['收盘'
    pivot_point = (high + low + close) / 3
    pivot_levels = {
        '枢轴点': pivot_point,
        '阻力位1': 2 * pivot_point - low,
        '支撑位1': 2 * pivot_point - high,
        '阻力位2': pivot_point + (high - low),
        '支撑位2': pivot_point - (high - low)
    }
    return pivot_levels

def calculate_volume_and_price_levels(kline_data):
    """计算成交量、天量、地量、天价、低价。"""
    today_volume = kline_data['成交量'].iloc[-1
    volume_105_high = kline_data['成交量'].rolling(window=105).max().iloc[-1
    volume_105_low = kline_data['成交量'].rolling(window=105).min().iloc[-1
    price_120_high = kline_data['最高'].rolling(window=120).max().iloc[-1
    price_120_low = kline_data['最低'].rolling(window=120).min().iloc[-1
    periods = [30, 60, 90, 120, 255
    volume_and_price_levels = {}
    for period in periods:
        volume_and_price_levels[f'{period}日天量' = kline_data['成交量'].rolling(window=period).max().iloc[-1
        volume_and_price_levels[f'{period}日地量' = kline_data['成交量'].rolling(window=period).min().iloc[-1
        volume_and_price_levels[f'{period}日天价' = kline_data['最高'].rolling(window=period).max().iloc[-1
        volume_and_price_levels[f'{period}日地价' = kline_data['最低'].rolling(window=period).min().iloc[-1
    return {
        '今日成交量': today_volume,
        '105日天量': volume_105_high,
        '105日地量': volume_105_low,
        '120日天价': price_120_high,
        '120日低价': price_120_low,
        **volume_and_price_levels
    }

def scan_candlestick_patterns(kline_data):
    """扫描最近5天的K线形态。"""
    pattern_functions = {
        'CDL2CROWS': '两只乌鸦',
        'CDL3BLACKCROWS': '三只乌鸦',
        'CDL3INSIDE': '三内部上涨/下跌',
        'CDL3LINESTRIKE': '三线打击',
        'CDL3OUTSIDE': '三外部上涨/下跌',
        'CDL3STARSINSOUTH': '南方三星',
        'CDL3WHITESOLDIERS': '三个白兵',
        'CDLABANDONEDBABY': '弃婴',
        'CDLADVANCEBLOCK': '推进块',
        'CDLBELTHOLD': '腰带持有',
        'CDLBREAKAWAY': '脱离',
        'CDLCLOSINGMARUBOZU': '收盘光头光脚',
        'CDLCONCEALBABYSWALL': '隐藏婴儿吞没',
        'CDLCOUNTERATTACK': '反击线',
        'CDLDARKCLOUDCOVER': '乌云盖顶',
        'CDLDOJI': '十字星',
        'CDLDOJISTAR': '十字星',
        'CDLDRAGONFLYDOJI': '蜻蜓十字星',
        'CDLENGULFING': '吞没形态',
        'CDLEVENINGDOJISTAR': '黄昏十字星',
        'CDLEVENINGSTAR': '黄昏之星',
        'CDLGAPSIDESIDEWHITE': '侧翼白线',
        'CDLGRAVESTONEDOJI': '墓碑十字星',
        'CDLHAMMER': '锤子线',
        'CDLHANGINGMAN': '上吊线',
        'CDLHARAMI': '母子线',
        'CDLHARAMICROSS': '十字母子线',
        'CDLHIGHWAVE': '高浪线',
        'CDLHIKKAKE': '陷阱',
        'CDLHIKKAKEMOD': '修正陷阱',
        'CDLHOMINGPIGEON': '归巢鸽',
        'CDLIDENTICAL3CROWS': '相同三乌鸦',
        'CDLINNECK': '颈内线',
        'CDLINVERTEDHAMMER': '倒锤子线',
        'CDLKICKING': '反冲',
        'CDLKICKINGBYLENGTH': '反冲(按长度)',
        'CDLLADDERBOTTOM': '梯底',
        'CDLLONGLEGGEDDOJI': '长腿十字星',
        'CDLLONGLINE': '长线',
        'CDLMARUBOZU': '光头光脚',
        'CDLMATCHINGLOW': '匹配低点',
        'CDLMATHOLD': '数学持有',
        'CDLMORNINGDOJISTAR': '早晨十字星',
        'CDLMORNINGSTAR': '早晨之星',
        'CDLONNECK': '颈上线',
        'CDLPIERCING': '刺透形态',
        'CDLRICKSHAWMAN': '黄包车夫',
        'CDLRISEFALL3METHODS': '上升/下降三法',
        'CDLSEPARATINGLINES': '分离线',
        'CDLSHOOTINGSTAR': '射击之星',
        'CDLSHORTLINE': '短线',
        'CDLSPINNINGTOP': '纺锤顶',
        'CDLSTALLEDPATTERN': '停滞形态',
        'CDLSTICKSANDWICH': '三明治',
        'CDLTAKURI': '探水竿',
        'CDLTASUKIGAP': '跳空缺口',
        'CDLTHRUSTING': '插入',
        'CDLTRISTAR': '三星',
        'CDLUNIQUE3RIVER': '独特三河',
        'CDLUPSIDEGAP2CROWS': '向上跳空两只乌鸦',
        'CDLXSIDEGAP3METHODS': '侧翼跳空三法',
    }
    patterns = []
    for pattern_name, pattern_label in pattern_functions.items():
        pattern_func = getattr(talib, pattern_name)
        pattern_values = pattern_func(kline_data['开盘'], kline_data['最高'], kline_data['最低'], kline_data['收盘'])
        if pattern_values.iloc[-5:].any():
            patterns.append(f"{pattern_label} ({pattern_values.iloc[-1})")
    return patterns

def get_latest_news(symbol):
    """获取与股票相关的最新新闻。"""
    news = ak.stock_news_em(symbol=symbol)
    return news

def analyze_sentiment(news):
    """对新闻进行情感分析。"""
    sentiments = []
    for _, row in news.iterrows():
        text = row['新闻标题' + " " + row['新闻内容'
        blob = TextBlob(text)
        sentiment = blob.sentiment.polarity
        sentiments.append(sentiment)
    news['情感得分' = sentiments
    return news

def generate_investment_advice_with_deepseek(symbol, basic_info, kline_data, news, patterns, grid_levels, fibonacci_levels, pivot_levels, volume_and_price_levels):
    """使用 DeepSeek-R1 生成投资建议。"""
    prompt = f"""
    股票基本信息:
    - 公司名称:{basic_info.get('公司名称', '未知')}
    - 行业:{basic_info.get('行业', '未知')}
    - 市值:{basic_info.get('市值', '未知')}

    K线图数据(最近5个交易日):
    {kline_data.tail(5).to_string()}

    技术指标(最近5个交易日):
    - 5日均线:{kline_data['MA_5'].tail(5).to_string()}
    - 10日均线:{kline_data['MA_10'].tail(5).to_string()}
    - 20日均线:{kline_data['MA_20'].tail(5).to_string()}
    - RSI:{kline_data['RSI'].tail(5).to_string()}
    - MACD:{kline_data['MACD'].tail(5).to_string()}
    - MACD Signal:{kline_data['MACD_signal'].tail(5).to_string()}
    - MACD Histogram:{kline_data['MACD_hist'].tail(5).to_string()}
    - VWAP:{kline_data['VWAP'].tail(5).to_string()}
    - 布林带上轨:{kline_data['Upper_Band'].tail(5).to_string()}
    - 布林带中轨:{kline_data['Middle_Band'].tail(5).to_string()}
    - 布林带下轨:{kline_data['Lower_Band'].tail(5).to_string()}
    - ATR:{kline_data['ATR'].tail(5).to_string()}
    - 唐奇安上轨:{kline_data['Donchian_High'].tail(5).to_string()}
    - 唐奇安下轨:{kline_data['Donchian_Low'].tail(5).to_string()}

    当天K线形态:
    {", ".join(patterns) if patterns else "无显著形态"}

    网格位:
    - 大网格位:{grid_levels[0}
    - 中网格位:{grid_levels[1}
    - 小网格位:{grid_levels[2}

    黄金分割位:
    {fibonacci_levels}

    枢轴位:
    {pivot_levels}

    成交量与价格水平:
    - 今日成交量:{volume_and_price_levels['今日成交量'}
    - 105日天量:{volume_and_price_levels['105日天量'}
    - 105日地量:{volume_and_price_levels['105日地量'}
    - 120日天价:{volume_and_price_levels['120日天价'}
    - 120日低价:{volume_and_price_levels['120日低价'}
    - 30日天量:{volume_and_price_levels['30日天量'}
    - 30日地量:{volume_and_price_levels['30日地量'}
    - 30日天价:{volume_and_price_levels['30日天价'}
    - 30日地价:{volume_and_price_levels['30日地价'}
    - 60日天量:{volume_and_price_levels['60日天量'}
    - 60日地量:{volume_and_price_levels['60日地量'}
    - 60日天价:{volume_and_price_levels['60日天价'}
    - 60日地价:{volume_and_price_levels['60日地价'}
    - 90日天量:{volume_and_price_levels['90日天量'}
    - 90日地量:{volume_and_price_levels['90日地量'}
    - 90日天价:{volume_and_price_levels['90日天价'}
    - 90日地价:{volume_and_price_levels['90日地价'}
    - 120日天量:{volume_and_price_levels['120日天量'}
    - 120日地量:{volume_and_price_levels['120日地量'}
    - 120日天价:{volume_and_price_levels['120日天价'}
    - 120日地价:{volume_and_price_levels['120日地价'}
    - 255日天量:{volume_and_price_levels['255日天量'}
    - 255日地量:{volume_and_price_levels['255日地量'}
    - 255日天价:{volume_and_price_levels['255日天价'}
    - 255日地价:{volume_and_price_levels['255日地价'}

    最新新闻(情感分析):
    {news.head(5).to_string()}

    请根据以上信息,生成一份详细的投资建议,包括:
    1. 对股票技术指标的分析。
    2. 对K线形态的分析。
    3. 对网格位、黄金分割位和枢轴位的分析。
    4. 对成交量与价格水平的分析。
    5. 对新闻情感的分析。
    6. 对股票未来走势的预测。
    7. 具体的操作建议(买入、持有、卖出)。
    """
    with open(f"prompt_{symbol}.txt", "w", encoding="utf-8") as file:
        file.write(prompt)
    payload = {
        "model": "deepseek-r1:1.5b",
        "prompt": prompt,
        "stream": False
    }
    response = requests.post("http://localhost:11434/api/generate", json=payload)
    if response.status_code == 200:
        advice = response.json()['response'
        return advice
    else:
        return f"请求失败,状态码:{response.status_code},错误信息:{response.text}"

def plot_kline(symbol):
    """获取K线图数据并绘制,分析时间为过去2年到今日。"""
    # 计算过去2年的日期
    end_date = datetime.now().strftime("%Y%m%d")  # 今日日期
    start_date = (datetime.now() - timedelta(days=2 * 365)).strftime("%Y%m%d")  # 过去2年的日期

    # 获取K线图数据
    stock_kline = ak.stock_zh_a_hist(
        symbol=symbol, period="daily", start_date=start_date, end_date=end_date
    )
    stock_kline['date' = pd.to_datetime(stock_kline['日期'])
    stock_kline.set_index('date', inplace=True)

    # 计算技术指标
    stock_kline = calculate_technical_indicators(stock_kline)

    # 创建子图
    fig = make_subplots(rows=4, cols=1, shared_xaxes=True, vertical_spacing=0.1,
                        subplot_titles=('K线图与移动平均线', '布林带', '相对强弱指数 (RSI)', '平均真实波幅 (ATR)'))

    # 绘制收盘价和移动平均线
    fig.add_trace(go.Scatter(x=stock_kline.index, y=stock_kline['收盘'], mode='lines', name='收盘价', line=dict(color='black')), row=1, col=1)
    fig.add_trace(go.Scatter(x=stock_kline.index, y=stock_kline['MA_5'], mode='lines', name='5日均线', line=dict(color='blue')), row=1, col=1)
    fig.add_trace(go.Scatter(x=stock_kline.index, y=stock_kline['MA_10'], mode='lines', name='10日均线', line=dict(color='green')), row=1, col=1)
    fig.add_trace(go.Scatter(x=stock_kline.index, y=stock_kline['MA_20'], mode='lines', name='20日均线', line=dict(color='red')), row=1, col=1)
    fig.add_trace(go.Scatter(x=stock_kline.index, y=stock_kline['VWAP'], mode='lines', name='VWAP', line=dict(color='purple')), row=1, col=1)

    # 绘制布林带
    fig.add_trace(go.Scatter(x=stock_kline.index, y=stock_kline['收盘'], mode='lines', name='收盘价', line=dict(color='black')), row=2, col=1)
    fig.add_trace(go.Scatter(x=stock_kline.index, y=stock_kline['Upper_Band'], mode='lines', name='上轨', line=dict(color='red')), row=2, col=1)
    fig.add_trace(go.Scatter(x=stock_kline.index, y=stock_kline['Middle_Band'], mode='lines', name='中轨', line=dict(color='blue')), row=2, col=1)
    fig.add_trace(go.Scatter(x=stock_kline.index, y=stock_kline['Lower_Band'], mode='lines', name='下轨', line=dict(color='green')), row=2, col=1)

    # 绘制RSI
    fig.add_trace(go.Scatter(x=stock_kline.index, y=stock_kline['RSI'], mode='lines', name='RSI', line=dict(color='orange')), row=3, col=1)
    fig.add_hline(y=70, line_dash="dash", line_color="red", annotation_text="超买 (70)", row=3, col=1)
    fig.add_hline(y=30, line_dash="dash", line_color="green", annotation_text="超卖 (30)", row=3, col=1)

    # 绘制ATR
    fig.add_trace(go.Scatter(x=stock_kline.index, y=stock_kline['ATR'], mode='lines', name='ATR', line=dict(color='blue')), row=4, col=1)

    # 更新布局
    fig.update_layout(
        font=dict(family="SimHei", size=12, color="black"),  # 设置字体为黑体
        height=1200,
        width=1000,
        title_text=f'{symbol} K线图与技术指标({start_date} 至 {end_date})',
        showlegend=True
    )
    fig.update_xaxes(title_text='日期', row=4, col=1)
    fig.update_yaxes(title_text='价格', row=1, col=1)
    fig.update_yaxes(title_text='价格', row=2, col=1)
    fig.update_yaxes(title_text='RSI', row=3, col=1)
    fig.update_yaxes(title_text='ATR', row=4, col=1)

    # 显示图表
    st.plotly_chart(fig)

    return stock_kline

# Streamlit 应用
st.title("股票分析仪表盘")

# 输入股票代码
symbol = st.text_input("请输入股票代码(例如:601658 代表邮储银行):", value="601658")

if st.button("分析"):
    if not validate_stock_code(symbol):
        st.error("股票代码无效")
    else:
        # 获取股票基本信息
        try:
            basic_info = get_stock_basic_info(symbol)
        except KeyError:
            st.error("股票代码无效或未找到")
            st.stop()

        # 获取K线图数据并绘制
        kline_data = plot_kline(symbol)

        # 扫描当天的K线形态
        patterns = scan_candlestick_patterns(kline_data)

        # 计算网格位
        large_grid, medium_grid, small_grid = calculate_grid_levels(kline_data)

        # 计算黄金分割位
        fibonacci_levels = calculate_fibonacci_levels(kline_data)

        # 计算枢轴位
        pivot_levels = calculate_pivot_points(kline_data)

        # 计算成交量与价格水平
        volume_and_price_levels = calculate_volume_and_price_levels(kline_data)

        # 获取最新新闻
        news = get_latest_news(symbol)

        # 对新闻进行情感分析
        news = analyze_sentiment(news)

        # 使用 DeepSeek-R1 生成投资建议
        advice = generate_investment_advice_with_deepseek(
            symbol, basic_info, kline_data, news, patterns, (large_grid, medium_grid, small_grid), fibonacci_levels, pivot_levels, volume_and_price_levels
        )

        # 显示技术指标
        st.subheader("技术指标")
        st.write(kline_data.tail(5))

        # 显示K线形态
        st.subheader("K线形态")
        st.write(", ".join(patterns) if patterns else "无显著形态")

        # 显示网格位
        st.subheader("网格位")
        st.write(f"大网格位: {large_grid}\n中网格位: {medium_grid}\n小网格位: {small_grid}")

        # 显示黄金分割位
        st.subheader("黄金分割位")
        st.write(fibonacci_levels)

        # 显示枢轴位
        st.subheader("枢轴位")
        st.write(pivot_levels)

        # 显示成交量与价格水平
        st.subheader("成交量与价格水平")
        st.write(volume_and_price_levels)

        # 显示最新新闻
        st.subheader("最新新闻")
        st.write(news.head(5))

        # 显示新闻情感分析
        st.subheader("新闻情感分析")
        st.write(news[['新闻标题', '情感得分']].head(5))

        # 显示投资建议
        st.subheader("投资建议")
        st.write(advice)
回复 支持 反对

使用道具 举报

121
发表于 2025-1-28 14:47 | 只看该作者

运行界面是基于streamlit

回复 支持 反对

使用道具 举报

Smilies [点此填写标题]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|黑木崖|鼎盛网 ( 浙ICP备10200450号-3 ) 

GMT+8, 2026-10-19 12:26

Powered by Discuz! X3.1 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表