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

使用tradingview_ta库时出现NoneType无summary属性的AttributeError问题

解决AttributeError: 'NoneType' object has no attribute 'summary'错误

问题场景

读取包含印度NSE市场股票代码的CSV文件,通过TA_Handler调用TradingView分析接口时,部分股票(如A2ZINFRA)触发以下错误:

AttributeError: 'NoneType' object has no attribute 'summary'

部分股票可正常返回结果,例如:

5PAISA
{'RECOMMENDATION': 'SELL', 'BUY': 6, 'SELL': 10, 'NEUTRAL': 10}
63MOONS
{'RECOMMENDATION': 'SELL', 'BUY': 3, 'SELL': 14, 'NEUTRAL': 9}

原代码如下:

import pandas as pd
from tradingview_ta import TA_Handler, Interval, Exchange

stkfilename = f"F:/Python/HistoricStockInfo/StockName.csv"
stkFile = pd.read_csv(stkfilename)
for i in range(len(stkFile)):
    #print(stkFile['Symbol'].iloc[i])
    NIFTY = TA_Handler(
    symbol=stkFile['Symbol'].iloc[i],
    #symbol = "ACE",
    screener="india",
    exchange="NSE",
    interval=Interval.INTERVAL_1_WEEK
    )

    result = NIFTY.get_analysis().summary
    if NIFTY.get_analysis().summary: 
        summary = (result.find('summary').text or '').encode('utf8')

    #if result['RECOMMENDATION']=="STRONG_BUY":
    if result is None:
        print(stkFile['Symbol'].iloc[i])
        print(result)
    else:
        print("Symbol not found")

错误原因

  1. get_analysis()方法在部分股票上会返回None(比如股票在TradingView数据库无数据、接口请求超时/失败),此时直接访问.summary会触发属性错误
  2. 重复调用get_analysis(),既浪费接口请求次数,也可能导致返回结果不一致
  3. 结果判断逻辑颠倒:当result为None时输出股票代码,但实际出错时result根本无法被赋值,且逻辑上应该是有结果时输出股票和分析,无结果时提示未找到

修复后的代码

import pandas as pd
from tradingview_ta import TA_Handler, Interval, Exchange

stkfilename = f"F:/Python/HistoricStockInfo/StockName.csv"
stkFile = pd.read_csv(stkfilename)

for i in range(len(stkFile)):
    symbol = stkFile['Symbol'].iloc[i]
    try:
        # 初始化TA_Handler
        ta_handler = TA_Handler(
            symbol=symbol,
            screener="india",
            exchange="NSE",
            interval=Interval.INTERVAL_1_WEEK
        )
        # 只调用一次get_analysis(),避免重复请求
        analysis = ta_handler.get_analysis()
        
        if analysis and hasattr(analysis, 'summary'):
            result = analysis.summary
            print(symbol)
            print(result)
            # 这里可以添加你的筛选逻辑,比如筛选STRONG_BUY
            # if result['RECOMMENDATION'] == "STRONG_BUY":
            #     print(f"符合条件: {symbol}")
        else:
            print(f"{symbol}: 未获取到有效分析结果")
            
    except Exception as e:
        print(f"{symbol}: 处理出错 - {str(e)}")

修复说明

  • 先获取analysis对象,判断其是否存在且包含summary属性,再访问summary,避免属性错误
  • 仅调用一次get_analysis(),减少接口请求开销
  • 增加try-except捕获所有可能的异常(比如网络错误、接口返回异常等),避免程序中断
  • 修正逻辑判断,正确输出有效结果和错误提示
  • 提取symbol变量,提升代码可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 21:50:20