2016-10-18 4 views
1

야후 재무 API에서 정보를 가져 오는 스크립트를 코딩하고 있습니다. API가 꽤 느려지더라도이를 사용하기 위해 작동합니다. 스크립트를 테스트하는 동안 IndexOutOfBounds 예외가 있다는 조사 결과가 나왔습니다. 야후 파이낸스 (Yahoo Finance)가 주식 중 하나에 대해 누락 된 일일 것을 제외하고는 주식에 대한 주가 정보를 반환하고 있습니다. 더 넓은 시간대를 사용하면 더 많은 시간을 사용하기 전에 예외가 발생하기 때문에 더 많은 일을 놓칠 것입니다.하지만 나중에 코드를 수정할 수 있다고 생각했습니다.Yahoo finance API 특정 날짜에 누락 된 데이터

야후 재무 API에 주식 시세 정보가 누락되어 API가 쓸모 없게되었습니다. 다른 사람이 이것을 경험 했습니까? 거기에 어떤 해결책이 있습니까? 나는 데이터를 얻기 위해 다른 방법을 사용해야 할 것이라고 생각한다.

지금은이 파이썬 모듈 https://pypi.python.org/pypi/yahoo-finance을 사용하고 있습니다.

Yahoo finance는 현재 필요한 정보가 포함되어 있으며 데이터를 쿼리해야하는 증권 거래소를 지원하는 유일한 API입니다.

업데이트 : 예, 문제가 다시 발생할 수 있습니다. 다음은 다시 생산하는 코드입니다 :

>>> import datetime as dt 
>>> import yahoo_finance as yf 
>>> 
>>> quote = yf.Share('GJF.OL') 
>>> date_from = str(dt.date.today() - dt.timedelta(days=5)) 
>>> date_to = str(dt.date.today()) 
>>> quote_his = quote.get_historical(date_from, date_to) 
>>> import pprint 
>>> pprint.pprint(quote_his) 
[{'Adj_Close': '156.50', 
    'Close': '156.50', 
    'Date': '2016-10-14', 
    'High': '156.50', 
    'Low': '153.10', 
    'Open': '153.50', 
    'Symbol': 'GJF.OL', 
    'Volume': '487600'}, 
{'Adj_Close': '153.60', 
    'Close': '153.60', 
    'Date': '2016-10-13', 
    'High': '153.60', 
    'Low': '152.50', 
    'Open': '153.30', 
    'Symbol': 'GJF.OL', 
    'Volume': '508800'}] 
>>> 

이 코드는 월요일 (2016년 10월 17일)에 대한 재고 정보를 인쇄해야합니다,하지만 그렇지 않습니다. 다른 주식을 선택하면 월요일에도 사전에 주식 정보를 얻습니다.

업데이트 2 : 나는 ystockquote라는 다른 모듈을 시험해 보았는데 같은 결과를 얻었다. 목요일과 금요일은 정보를 얻을 수 있지만 월요일은 아닙니다. 다른 견적을 요청하면 3 일 동안 정보를 얻을 수 있습니다. 내가 야후 파이낸싱 사이트에 도착했을 때 그래프 등으로 월요일부터 주식 정보를 얻었습니다.

업데이트 3 : 주가가 지연 될 가능성이있는 GJF.OL의 데이터가 발견되었습니다 API의 역사적인 테이블에 대한 답변은 아래에 나와 있습니다. 그러나 GJF.OL 주식의 주가 정보를받지 못한 날에는 다른 주식의 주가 정보를받을 수있었습니다.

현재 GJF.OL 주식에 대한 주가 정보를 받고 있지만 주식 정보의 마지막 165 일을 주식에서 얻으려고했지만 NAS에서 누락 된 1 일이 있습니다 .OL 주식 사전 다른 주식에 해당 정보가있는 동안 반환 된 날짜에는 데이터가 포함되지 않습니다. 주식은 NAS.OL이며 날짜는 2016 년 8 월 3 일 데이터가없는 곳입니다. 이 데이터가 누락 된 이유는 무엇입니까?

+1

우리는 어떤 요일과 어느 주식을 보여줄 수 있습니까?API 링크 또는 코드 스 니펫을 재현하는 것이 이상적입니다. 시장이 주말이나 휴일로 폐쇄된다면 그 사실을 설명 할 수 있습니다. –

+0

예, 답변을 업데이트했습니다. API는 사전에 주말을 포함하지 않기에 실제로 영리하여 사전에없는 빈 사전으로 표시되지 않고 사전에서 건너 뜁니다. – exceed

답변

0

이것은 아마도 Python 바인딩과는 아무런 관련이 없으며 완전히 야후의 데이터입니다. 당신이 바인딩을 읽을 경우, 실행 명령은 내가 13, 14, 17 및 18에 대한 데이터를 가지고, 나 자신을 위해 그것을 호언 장담 때 기본적으로

curl -G 'https://query.yahooapis.com/v1/public/yql' \ 
    --data-urlencode 'env=store://datatables.org/alltableswithkeys' \ 
    --data-urlencode 'format=json' \ 
    --data-urlencode 'q=select * from yahoo.finance.historicaldata where symbol = "GJF.OL" and startDate = "2016-10-13" and endDate = "2016-10-18"' 

입니다. 액세스하는 테이블의 데이터는 이므로 데이터가 표시 되려면 24 시간이 걸리는 것은 무리가 아닙니다.

해당 끝점과 Python 바인딩간에 불일치가있는 경우 뭔가있을 수 있지만 그 바인딩에 대한 code은 매우 간단하며 날짜 범위를 그냥 지나치는 것으로 보입니다.

+0

네, 그 문제가 너무 늦어서 지연 될 수 있다고 생각했는데 다른 주식 시세를 쓸 때 17 번째 가격 정보를 얻었으므로 17 번째 다른 주식에서 주식 시세 정보를받을 때 이것이 어떻게 문제가되는지 알 수 없었습니다 . 즉, 내가 지금 노력하고있을 때, 나는 그 특정 견적에 대해 17 일과 18 일에 대한 주가 정보를 얻는다. 나는 API가 다른 주식에 대한 가격 정보를 반환 하겠지만 GJF.OL 견적은 반환하지 않는다는 것을 이해할 수 없다. 어딘가에 문제가 발생했을 가능성이있다. 흠, 그래, 근본적으로 YQL – exceed

+0

아직도 이상해. 내가 지난 165 일간을 얻으 려한다면 시장이 열려있는 곳에서 117 일이 걸리 겠지만 'NAS.OL'이라는 따옴표 중 하나에 대해서는 116 일 밖에 걸리지 않습니다. 다른 주식에서는 117 일을 얻습니다. NAS.OL 주식에서 누락 된 2016 년 8 월 3 일부터 주식 정보를 확인한 후 결석 이유에 대한 아이디어가 있습니까? – exceed

+0

'curl' 명령으로'dateDate = "2016-08-01"및 endDate = "2016-08-10"'이 날짜 범위에 대해 2016-08-03을 받았습니다. 그것은 야후가 끝날 때 벌레처럼 느껴진다. 무언가가없는 경우 범위를 다시 시도하십시오. 어쩌면 그들은 기호와 시간 범위로 결과를 캐싱하고있을 것입니다. –

관련 문제