Проблема с использованием файла Python для "получения внутридневных биржевых данных из Google Finance".

Как видно из названия, у меня возникли проблемы с использованием скрипта Python, который я нашел на GitHub, который должен извлекать внутридневные биржевые данные Теперь я не уверен, что я просто не понимаю код или у меня огромный пердеть, но я не могу понять вывод этого кода на всю жизнь. Когда я запускаю его, используя "AAPL" в качестве примера, вывод, который я получаю, не имеет смысла для меня. Все, что я хочу, - это возможность извлекать цену акции в определенное время дня (например, я хочу, чтобы торговая цена AAPL была в 13:26 EST).

Код можно найти здесь ( https://gist.github.com/lebedov/f09030b865c4cb142af1), но я просто опубликую здесь код автора:


#!/usr/bin/env python 
"""
Retrieve intraday stock data from Google Finance.
"""

import csv
import datetime
import re

import pandas as pd
import requests

def get_google_finance_intraday(ticker, period=60, days=1):
    """
    Retrieve intraday stock data from Google Finance.

    Parameters
    ----------
    ticker : str
        Company ticker symbol.
    period : int
        Interval between stock values in seconds.
    days : int
        Number of days of data to retrieve.

    Returns
    -------
    df : pandas.DataFrame
        DataFrame containing the opening price, high price, low price,
        closing price, and volume. The index contains the times associated
        with the retrieved price values.
    """

    uri = 'http://www.google.com/finance/getprices' \
          '?i={period}&p={days}d&f=d,o,h,l,c,v&df=cpct&q={ticker}'.format    (ticker=ticker,
                                                                               period=period,
                                                                                days=days)
    page = requests.get(uri)
    reader = csv.reader(codecs.iterdecode(page.content.splitlin(), "utf-8"))
    columns = ['Close', 'High', 'Low', 'Open', 'Volume']
    rows = []
    times = []
    for row in reader:
        if re.match('^[a\d]', row[0]):
            if row[0].startswith('a'):
                start = datetime.datetime.fromtimestamp(int(row[0][1:]))
                times.append(start)
            else:
                times.append(start+datetime.timedelta(seconds=period*int(row
                [0])))
            rows.append(map(float, row[1:]))
    if len(rows):
       return pd.DataFrame(rows, index=pd.DatetimeIndex(times, name='Date'),
                           columns=columns)
    else:
        return pd.DataFrame(rows, index=pd.DatetimeIndex(times,
                           name='Date'))

Например, если я позвоню по коду:

data = get_google_finance_intraday('AAPL',60,1)

Я ожидаю, что данные будут ценой AAPL в каждую минуту за прошедший день, но вместо этого я просто получаю:

                     Close    High    Low    Open      Volume
Date
2017-11-16 16:00:00  171.1  171.87  170.3  171.18  23590444.0

Не только это, хотя, когда я вызываю код так:

data = get_google_finance_intraday('AAPL',60,5)

Я получил:

                      Close      High     Low    Open      Volume
Date
2017-11-10 16:00:00  174.67  175.3800  174.27  175.11  25145500.0
2017-11-10 16:03:00  173.97  174.5000  173.40  173.50  16982080.0
2017-11-10 16:04:00  171.34  173.4800  171.18  173.04  24782487.0
2017-11-10 16:05:00  169.08  170.3197  168.38  169.97  29158070.0
2017-11-10 16:06:00  171.10  171.8700  170.30  171.18  23590444.0

Который, насколько я понимаю, это цена AAPL 10 ноября в 4:00,4:03,4:04,4:05,4:06... которая не имеет смысла для меня.

Если бы кто-то мог объяснить мне, где ошибка в моем понимании, я был бы очень признателен.

0 ответов

Другие вопросы по тегам