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

使用yfinance指定每日特定起始时间获股票数据时遇报错求助

解决Yahoo Finance 1分钟股票数据获取报错问题

你遇到的报错- F: Data doesn't exist for startDate = 1666286770, endDate = 1666287074,本质是请求了Yahoo Finance未存储的时间区间数据,核心原因有两个:

  1. 1分钟级股票数据仅保留最近7天内的记录,且仅能获取美股交易时段(美东时间9:30-16:00)的数据,非交易时段或超出7天范围的请求会返回无数据。
  2. 同时指定period='1d'和start参数会触发API逻辑冲突,导致时间范围计算异常,请求了不存在的时段。

解决步骤及修改后的代码

import pytz
import datetime as dt
import yfinance as yf
import pandas as pd

# 替换成你的股票代码列表
ticks = ["AAPL", "MSFT"]

def watchlist():
    timezone = pytz.timezone('US/Eastern')
    now = dt.datetime.now(timezone)
    past_time = now - dt.timedelta(minutes=5)  # 5分钟前的时间
    
    # 校验1分钟数据的时间有效性
    seven_days_ago = now - dt.timedelta(days=7)
    if past_time < seven_days_ago:
        print("请求的时间超出1分钟数据可获取范围(仅保留最近7天)")
        return
    
    # 校验是否在美股交易时段内
    market_open = dt.time(9, 30)
    market_close = dt.time(16, 0)
    if not (market_open <= now.time() <= market_close):
        print("当前非美股交易时段,无法获取实时1分钟数据")
        return

    for ticker in ticks:
        syb = yf.Ticker(ticker)
        try:
            # 获取当日全时段1分钟数据
            data = syb.history(interval="1m", period='1d')
            # 获取过去5分钟到现在的1分钟数据(仅用start/end,避免和period冲突)
            data2 = syb.history(interval="1m", start=past_time, end=now)
            
            # 先判断数据是否为空,再进行后续计算
            if not data.empty and not data2.empty:
                if data['Open'].sum() < data2['Open'].sum():
                    print(f"{ticker} 全天Open总和: {data['Open'].sum()}")
                    print(f"{ticker} 近5分钟Open总和: {data2['Open'].sum()}")
                    print(f"{ticker} 需要关注")
                else:
                    print(f"{ticker} 继续通过Robinhood卖出")
            else:
                print(f"{ticker} 无有效数据,跳过")
        except Exception as e:
            print(f"{ticker} 获取数据失败: {str(e)}")

watchlist()

关键修改说明

  • 移除参数冲突:获取data2时仅用start和end定义时间区间,避免API混淆时间范围。
  • 增加时间有效性校验:确保请求时间在最近7天内且处于美股交易时段,从根源避免无效请求。
  • 空数据与异常处理:添加数据非空判断和异常捕获,防止程序因无数据直接崩溃。
  • 变量名规范化:调整为符合Python命名习惯的格式,提升代码可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:15:50