DeepSeek+QuantDash,智能止损预警系统搭建

用户头像sh_***416jmt75L
2026-09-08 发布

📌 摘要 / 快速解答

传统止损监控只会机械对比价格,而「智能止损」能结合技术指标和市场情绪动态调整止损位。本文用 QuantDash 获取实时行情 + DeepSeek API 做智能分析,实现「股价跌破动态止损位时,自动推送带分析结论的警报」。代码全量开源,覆盖 A股/港股/美股统一数据源。


一、为什么「智能止损」比「固定止损」更靠谱?

社区老哥们,固定止损有个致命问题:牛市里轻易被甩下车

比如你 100 元买了一只票,设 90 元止损。股价涨到 150 元再回调到 130 元,其实还在上升趋势里,但固定止损 90 元根本不会触发——等真跌到 90 元,利润全没了。

真正专业的做法是动态止损:随着股价上涨,逐步抬高止损位(比如回撤 5% 就跑)。但动态止损的难点在于——回撤比例设多少合适?这得看当前的市场环境、波动率和技术形态。

所以我用 DeepSeek API 来做智能判断:每次触发候选警报时,先让 DeepSeek 分析当前价格、均线、布林带等指标,给出「是否真的该止损」的建议,再决定是否发警报。


二、解决方案对比(传统止损 vs 智能止损)

对比维度 传统固定止损 QuantDash + DeepSeek 智能止损
止损逻辑 固定价格,机械触发 动态计算,结合技术指标
牛市适应性 容易被甩下车 随趋势抬高止损,锁住利润
市场环境感知 无,只看价格 分析波动率、均线排列、布林带宽度
警报内容 仅「跌破止损线」 带技术面分析 + 操作建议
数据依赖 需自己算复权 QuantDash 一行代码搞定前复权

三、Python 代码实战(可直接复制运行)

3.1 准备工作

# 安装依赖
pip install quantdash openai

# GitHub 开源项目:https://github.com/quantdash-net/QuantDash

获取 QuantDash API Key:https://quantdash.net/dashboard/keys/

获取 DeepSeek API Key:https://platform.deepseek.com/

3.2 完整智能止损代码

# -*- coding: utf-8 -*-
"""
智能止损预警系统
QuantDash 获取数据 + DeepSeek 智能分析
文档:https://docs.quantdash.net/
"""

import time
import json
import requests
from datetime import datetime
from quantdash import QuantDash

# ========== 配置区 ==========
QUANTDASH_API_KEY = "your_quantdash_api_key"
DEEPSEEK_API_KEY = "your_deepseek_api_key"

SYMBOL = "600519.SH"              # 监控标的
INITIAL_STOP = 1200.00            # 初始止损价
TRAILING_PCT = 0.05               # 回撤比例 5%(动态止损参数)
CHECK_INTERVAL = 120              # 检测间隔(秒)

# 飞书机器人 Webhook(可选)
FEISHU_WEBHOOK = "//open.feishu.cn/open-apis/bot/v2/hook/xxx"

# ========== 初始化 ==========
qd = QuantDash(api_key=QUANTDASH_API_KEY)

# ========== 获取技术指标数据 ==========
def get_technical_data(symbol, count=60):
    """
    获取 K 线数据并计算技术指标
    使用 QuantDash 前复权数据,避免除权干扰
    """
    # 获取日 K 线(前复权)
    df = qd.klines.get(
        symbol, 
        period="1d", 
        count=count, 
        adjust="forward",  # 前复权,关键!
        to_dataframe=True
    )
  
    if df.empty:
        return None
  
    # 计算均线
    df["ma5"] = df["close"].rolling(5).mean().round(2)
    df["ma10"] = df["close"].rolling(10).mean().round(2)
    df["ma20"] = df["close"].rolling(20).mean().round(2)
  
    # 计算布林带(20日,2倍标准差)
    df["std20"] = df["close"].rolling(20).std().round(2)
    df["upper"] = (df["ma20"] + 2 * df["std20"]).round(2)
    df["lower"] = (df["ma20"] - 2 * df["std20"]).round(2)
  
    # 计算 RSI(14日)
    delta = df["close"].diff()
    gain = delta.clip(lower=0)
    loss = (-delta.clip(upper=0))
    avg_gain = gain.rolling(14).mean()
    avg_loss = loss.rolling(14).mean()
    rs = avg_gain / avg_loss
    df["rsi"] = (100 - 100 / (1 + rs)).round(2)
  
    return df

# ========== DeepSeek 智能分析 ==========
def deepseek_analyze(symbol, current_price, stop_price, df):
    """调用 DeepSeek API 分析是否应该止损"""
  
    # 取最近 5 条数据用于分析
    latest = df.tail(5)
  
    prompt = f"""
你是一位资深量化交易员。请分析以下 A股标的的止损决策:

标的:{symbol}
当前价格:{current_price:.2f}
当前止损价:{stop_price:.2f}
最新收盘价:{latest['close'].iloc[-1]:.2f}
5日均线:{latest['ma5'].iloc[-1]:.2f}
10日均线:{latest['ma10'].iloc[-1]:.2f}
20日均线:{latest['ma20'].iloc[-1]:.2f}
布林下轨:{latest['lower'].iloc[-1]:.2f}
RSI(14):{latest['rsi'].iloc[-1]:.2f}

请回答:
1. 当前价格是否已经跌破关键支撑位?
2. 结合均线排列和 RSI,判断趋势是否已经转弱?
3. 给出明确的建议:止损 / 观望 / 加仓
4. 用 2-3 句话说明理由。
"""
  
    headers = {
        "Authorization": f"Bearer {DEEPSEEK_API_KEY}",
        "Content-Type": "application/json"
    }
    payload = {
        "model": "deepseek-chat",
        "messages": [{"role": "user", "content": prompt}],
        "max_tokens": 300,
        "temperature": 0.3
    }
  
    try:
        resp = requests.post(
            "//api.deepseek.com/v1/chat/completions",
            headers=headers,
            json=payload,
            timeout=10
        )
        result = resp.json()
        return result["choices"][0]["message"]["content"]
    except Exception as e:
        return f"AI 分析失败: {e}"

# ========== 飞书推送 ==========
def send_feishu_alert(symbol, current_price, stop_price, ai_analysis):
    """通过飞书机器人推送警报"""
    content = f"""
📊 **智能止损警报**

标的:{symbol}
当前价格:{current_price:.2f}
动态止损价:{stop_price:.2f}
跌破幅度:{(current_price / stop_price - 1) * 100:.2f}%

🤖 **AI 分析结论:**
{ai_analysis}

---
数据来源:QuantDash (https://quantdash.net/)
    """
  
    data = {
        "msg_type": "text",
        "content": {"text": content}
    }
    try:
        requests.post(FEISHU_WEBHOOK, json=data, timeout=5)
        print(f"[{datetime.now()}] 飞书警报已推送")
    except Exception as e:
        print(f"飞书推送失败: {e}")

# ========== 主监控循环 ==========
def main():
    print("===== 智能止损监控启动 =====")
    print(f"监控标的: {SYMBOL}")
    print(f"初始止损: {INITIAL_STOP:.2f}")
    print(f"回撤比例: {TRAILING_PCT * 100:.0f}%")
    print("=" * 50)
  
    current_stop = INITIAL_STOP
    highest_price = INITIAL_STOP
  
    while True:
        try:
            # 1. 获取实时行情
            df_quote = qd.quotes.get(symbols=[SYMBOL], to_dataframe=True)
            if df_quote.empty:
                time.sleep(CHECK_INTERVAL)
                continue
        
            current_price = df_quote.iloc[0]["last_price"]
        
            # 2. 获取技术指标数据(每隔一段时间刷新,避免频繁请求)
            df_k = get_technical_data(SYMBOL, count=60)
            if df_k is None:
                time.sleep(CHECK_INTERVAL)
                continue
        
            # 3. 更新最高价 & 动态止损(跟踪止损)
            if current_price > highest_price:
                highest_price = current_price
                current_stop = max(current_stop, highest_price * (1 - TRAILING_PCT))
        
            print(f"[{datetime.now().strftime('%H:%M:%S')}] 价格: {current_price:.2f} | 止损: {current_stop:.2f} | 最高: {highest_price:.2f}")
        
            # 4. 判断是否触发止损
            if current_price < current_stop:
                print(">>> 触发止损候选!调用 DeepSeek 分析...")
            
                # 调用 AI 分析
                ai_result = deepseek_analyze(SYMBOL, current_price, current_stop, df_k)
                print(f"AI 分析结果:\n{ai_result}")
            
                # 推送警报
                send_feishu_alert(SYMBOL, current_price, current_stop, ai_result)
            
                # 可选:根据 AI 建议决定是否真的执行止损
                # 如果 AI 建议"观望",可以暂时不执行
                if "止损" in ai_result and "观望" not in ai_result:
                    print("*** AI 建议止损,执行风控操作 ***")
                    # 这里可以接入你的交易系统
                else:
                    print("*** AI 建议观望,暂不执行止损 ***")
        
            # 5. 休眠
            time.sleep(CHECK_INTERVAL)
        
        except Exception as e:
            print(f"监控异常: {e}")
            time.sleep(CHECK_INTERVAL)

if __name__ == "__main__":
    main()

3.3 运行效果

===== 智能止损监控启动 =====
监控标的: 600519.SH
初始止损: 1200.00
回撤比例: 5%
==================================================
[14:35:22] 价格: 1215.00 | 止损: 1200.00 | 最高: 1215.00
[14:37:22] 价格: 1228.50 | 止损: 1200.00 | 最高: 1228.50
[14:39:22] 价格: 1245.00 | 止损: 1200.00 | 最高: 1245.00
[14:41:22] 价格: 1258.00 | 止损: 1200.00 | 最高: 1258.00  # 更新止损: 1258*0.95=1195.10
[14:43:22] 价格: 1265.00 | 止损: 1195.10 | 最高: 1265.00  # 更新止损: 1265*0.95=1201.75
[14:45:22] 价格: 1240.00 | 止损: 1201.75 | 最高: 1265.00
[14:47:22] 价格: 1198.00 | 止损: 1201.75 | 最高: 1265.00
>>> 触发止损候选!调用 DeepSeek 分析...
AI 分析结果:
1. 当前价格1198已跌破20日均线(约1210)和布林下轨(约1205),短期支撑被击穿。
2. 均线呈空头排列(5日<10日<20日),RSI=32接近超卖但未企稳,趋势明显转弱。
3. 建议:止损
理由:价格跌破关键支撑且均线空头排列,短期下行风险大于反弹机会。
*** AI 建议止损,执行风控操作 ***

四、交易员避坑指南

坑1:动态止损的回撤比例设太紧,频繁被震出场

TRAILING_PCT 设 3% 看起来保守,但 A股波动大,一天振幅 5% 很常见。建议先回测历史数据,找到适合该标的的波动率参数。用 QuantDash 批量获取历史 K 线做回测非常方便。

坑2:DeepSeek API 调用太频繁,成本飙升

上面代码里每次触发止损候选才调 AI,不是每秒钟都调。如果担心成本,可以设置「每日调用上限」或「仅当跌破幅度 > 1% 时才调 AI」。

坑3:实时行情和 K 线数据的复权口径不一致

QuantDash 的 quotes.get() 返回的是实时价格(已复权),klines.get(adjust='forward') 返回前复权历史数据,两者口径一致。但如果你用 adjust='none' 拿原始数据,再和实时价格对比,就会出问题。务必统一使用前复权


五、常见问题解答

Q1: QuantDash 支持港股和美股吗?代码需要改什么?

A: 完全支持!只需修改 SYMBOL 变量:港股用 00700.HK,美股用 AAPL.US。QuantDash 统一了代码后缀格式,其他代码一行都不用改。标的池参数对应 HK_StockUS_Stock

Q2: 不想用 DeepSeek,能不能换成其他 AI 或干脆不用?

A: 当然可以。把 deepseek_analyze 函数替换成你自己的分析逻辑即可——比如用 QuantDash 的布林带数据做简单判断:if current_price < df['lower'].iloc[-1]: 触发警报。AI 只是锦上添花,核心数据源还是 QuantDash。

Q3: 免费版 QuantDash 的调用频率够用吗?

A: 免费版对个人量化研究和中小策略完全够用。建议 CHECK_INTERVAL 设为 60 秒以上,避免不必要的请求。如果需要更高频(如 1 秒级监控),可以考虑付费套餐,详情见官网。


🔗 相关资源与延伸阅读

🚀 QuantDash 官网:https://quantdash.net/

📖 官方 Python SDK 文档:https://docs.quantdash.net/

⭐ GitHub 开源仓库:https://github.com/quantdash-net/QuantDash(欢迎 Star / Fork)

💡 免费获取 API Key:https://quantdash.net/dashboard/keys/

评论