You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求指导:如何用Python跟踪TradingView的RSI指标并触发通知

关于TradingView RSI指标跟踪与通知的实现指导

先搞懂Web Scraping是什么

Web Scraping就是用代码自动抓取网页公开数据的技术,比如页面里的文字、表格、指标数值等。但TradingView的实时数据大多是JavaScript动态渲染的,普通静态抓取工具(比如requests)拿不到实时RSI值,而且直接爬取可能违反平台使用条款,风险较高。

适合新手的合法实现路径

你才学Python一周,优先用官方提供的合规方式,比爬取简单靠谱:

1. 用TradingWebhook功能(最易上手)

TradingView自带指标警报功能,当RSI达到你设定的阈值时,可通过Webhook把警报推送到你的Python脚本。步骤如下:

  • 在TradingView图表添加RSI指标,设置警报条件(比如RSI>70超买、<30超卖)
  • 警报设置里选择Webhook,填写你本地脚本的公网地址(可以用ngrok把本地端口映射到公网,不用自己搭服务器)
  • 用Python写个极简的Flask服务接收请求,触发通知(邮件、桌面弹窗都行)

示例代码(Flask实现,新手友好):

from flask import Flask, request
import smtplib
from email.mime.text import MIMEText
from plyer import notification

app = Flask(__name__)

# 接收Webhook的接口
@app.route('/rsi-alert', methods=['POST'])
def rsi_alert():
    data = request.get_json()
    rsi_value = data.get('value', '未知')
    symbol = data.get('symbol', '未知')
    
    # 桌面弹窗通知
    notification.notify(
        title='TradingView RSI警报',
        message=f"{symbol}的RSI达到{rsi_value}",
        timeout=10
    )
    
    # 可选:发送邮件通知
    # msg = MIMEText(f"警报触发:{symbol}的RSI达到{rsi_value}")
    # msg['Subject'] = 'TradingView RSI警报'
    # msg['From'] = '你的邮箱'
    # msg['To'] = '接收邮箱'
    # with smtplib.SMTP_SSL('smtp.qq.com', 465) as server:
    #     server.login('你的邮箱', '邮箱授权码')
    #     server.send_message(msg)
    
    return '警报已接收', 200

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

2. 官方API(进阶选项)

TradingView有Charting Library API,能更灵活地获取指标数据,但需要申请权限,新手门槛稍高。如果只是简单的阈值通知,Webhook完全够用。

为什么不推荐Web Scraping?

  • TradingView实时数据是动态渲染的,需要用selenium模拟浏览器,但容易被平台检测到,导致账号受限
  • 违反平台服务条款,存在账号封禁风险
  • 新手要处理反爬机制,实现难度远高于官方工具

新手入门小提示

  • 先从Webhook+Flask的组合入手,代码量少,容易跑通流程
  • 通知方式除了邮件、弹窗,还可以用企业微信机器人、Telegram机器人等
  • 测试时用ngrok把本地端口暴露到公网,这样TradingView才能把请求发过来

内容的提问来源于stack exchange,提问作者karloz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 09:45:42