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

如何让函数遍历股票列表时遇错误仍继续执行剩余元素?

股票筛选器异常处理改造方案

需求说明

开发技术分析股票筛选器时,遍历股票列表的filter_technical函数遇到错误股票代码(如J&KBANK,TradingView正确代码为J_KBANK)或数据获取异常(连接超时、无数据)时,会直接终止运行。需要改造函数,实现:

  • 单个股票处理失败时,不中断整个循环,继续处理剩余股票
  • 按规则打印提示:
    • 符合买入条件:Buy AXISBANK
    • 不符合买入条件:Don't Buy MAHABANK
    • 数据获取失败:J&KBANK data does not exist

改造后代码示例

from tvDatafeed import TvDatafeed, Interval

def filter_technical(stock_list):
    tv = TvDatafeed()  # 初始化tvDatafeed客户端
    for stock in stock_list:
        try:
            # 尝试获取股票历史数据,可根据需求调整交易所、时间周期、数据量
            df = tv.get_hist(symbol=stock, exchange='NSE', interval=Interval.in_daily, n_bars=100)
            
            # 替换为你的技术分析判断逻辑
            if df is not None and not df.empty:
                # 示例:判断最新收盘价是否高于5日均线
                df['MA5'] = df['close'].rolling(5).mean()
                if df['close'].iloc[-1] > df['MA5'].iloc[-1]:
                    print(f'Buy {stock}')
                else:
                    print(f"Don't Buy {stock}")
            else:
                print(f'{stock} data does not exist')
                
        except Exception as e:
            # 捕获连接超时、无数据等所有异常
            print(f'{stock} data does not exist')
            # 调试时可开启:打印错误详情
            # print(f"错误信息:{str(e)}")

# 测试用例
stock_list = ['AXISBANK', 'MAHABANK', 'J&KBANK', 'J_KBANK']
filter_technical(stock_list)

关键改造点

  • 单股票逻辑包裹try/except:把单只股票的数据获取、分析逻辑放在try块内,确保单只股票的错误不会中断整个遍历循环
  • 异常兜底处理:except块捕获所有可能的异常(连接超时、无数据等),直接输出对应股票的数据异常提示
  • 空数据额外判断:即使get_hist未抛出异常,也可能返回空DataFrame,需额外判断避免后续分析报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:02:12