В статье на прошлой неделе я поделился с вами своими мыслями о том, почему я решил создать торговый алгоритм. Вы можете прочитать это на https://medium.com/@acs.chaitanya35/design-automated-trading-system-attempt-zero-fc90ac168bc2.

Теперь для создания торгового алгоритма мне нужны данные, более конкретные данные фондового рынка. Итак, сегодня мы изучаем мой опыт получения данных фондового рынка за последнюю неделю.

Есть несколько способов получить данные фондового рынка, давайте рассмотрим один за другим, и, наконец, я расскажу вам, как я использую каждый сервис. В этой статье я расскажу вам, как получить первичные данные фондового рынка, такие как открытие, закрытие, максимум, минимум и объем для любых публично торгуемых акций. Я добавлю, как получить более продвинутые данные, такие как данные технических индикаторов, торговые данные и т. д., в будущей статье.

  1. Использование pandas_datareader

Одним из основных способов получения данных фондового рынка является использование Pandas DataReader. Теперь вы можете использовать DataReader без API_KEY и с API_KEY. Ибо без API_KEY вы можете получать данные из yahoo, google или Morning Star API. Давайте посмотрим, как это получить.

Давайте импортируем некоторые библиотеки Python:

import datetime as datetime
import pandas_datareader.data as web

Давайте напишем функцию для получения данных для одной компании:

def get_single_ticker_data(ticker: str):
    ticker = ticker.upper()
    try:
        start_date = datetime.datetime(2016, 1, 1)
        end_date = datetime.datetime.now()
        df = web.DataReader(ticker, “yahoo”, start_date, end_date)
        df.reset_index(inplace=True)
        return df
    except Exception as e:
        print(‘Error Retrieving Data.’)
        print(e)
        return

Запустим функцию и посмотрим данные:

df = get_single_ticker_data(‘AAPL’)
df.head()

Если Yahoo не работает, попробуйте заменить «yahoo» на «google» или «morningstar».

Одним из наиболее существенных ограничений для получения данных таким способом является то, что он предоставляет мне ежедневные данные, и отсутствует так много другой информации, как данные технических индикаторов и т. д. Для лучшего прогнозирования фондового рынка мне нужно гораздо больше, чем просто существенный максимум. , низкий, открытый, закрытый, объем. Мне нужны данные о разделенных акциях, дивидендах на акции, данные о компаниях-конкурентах, новостная информация и т. д., которых я не получаю.

Чтобы получить эту информацию, вам нужно использовать данные на основе API_KEY, такие как Tiingo, Alpha Vantage и Quandl. Каждый предлагает некоторую дополнительную информацию, но вам необходимо иметь учетную запись в каждой службе; некоторые услуги бесплатны; некоторые платные. Если у вас есть API_KEY, вы можете получать данные с помощью pandas_datareader с очень небольшими изменениями в приведенной выше функции.

Вы можете получить больше информации о каждом на https://pandas-datareader.readthedocs.io/en/latest/remote_data.html

Эти службы API превосходны, если вам нужны ежедневные данные к концу дня. Но для данных в реальном времени это бесполезно.

2. Использование альпаки

Для оперативных данных вы можете использовать Alpaca для получения данных до 1 минуты, для этого вам необходимо создать учетную запись в Alpaca, и это бесплатно. Они также предлагают API для торговли, а также предоставляют бумажную торговлю для тестирования вашего алгоритма. Для получения дополнительной информации: https://alpaca.markets/docs/

Я планирую использовать Alpaca в качестве своей торговой платформы.

Когда вы открываете счет, вы можете получить 2 API_KEY, один для реальной торговли и один для бумажной торговли. У Alpaca также есть библиотека Python для всех API, поэтому вам не нужно писать интерфейс API.

Давайте получим ежедневные данные с помощью Alpaca. Вы можете заменить «1D» на «1Min», чтобы получить минутные данные.

import alpaca_trade_api as trade_api
def get_data(symbol: str, time_frame: str, days: int):
    api = trade_api.REST(<API_KEY>, <API_SECRET_KEY>)
    bars = api.get_barset(symbol, time_frame, days)
    bar_set = bars.df
    bar_set.index.name = “DateTime”
    bar_set.reset_index(inplace=True)
    dataset = pd.DataFrame({‘DateTime’: bar_set[‘DateTime’],
                            ‘Open’: bar_set[symbol][‘open’],
                            ‘High’: bar_set[symbol][‘high’],
                            ‘Low’: bar_set[symbol][‘low’],
                            ‘Close’: bar_set[symbol][‘close’],
                            ‘Volume’: bar_set[symbol][‘volume’]})
    return dataset

Запустим функцию:

df = get_data(“AAPL”, “1D”, 1000)
print(df.head())

Ограничение заключается в том, что вы не можете получить данные более чем за последние 1000 дней в случае ежедневных данных или за последние 1000 минут в случае минутных данных.

3. Использование многоугольника

Теперь давайте рассмотрим одно из моих любимых решений для получения данных с помощью Polygon API. Этот API не является бесплатным; чтобы использовать этот API, вы должны платить 199 долларов в месяц, но он предоставляет API не только для получения данных бара, но и для получения информации о новостях, финансовой информации компаний и многого другого. Вы можете изучить все API на https://polygon.io/docs/

Polygon также предоставляет API для данных Forex, а также для данных Crypto. Он имеет WebSockets для получения данных в реальном времени, поэтому вы также можете получать данные за считанные секунды.

Поскольку это сервис на основе API, вам нужно написать свой класс Python для получения данных и выполнить некоторые базовые аналитические действия, но это того стоит.

Как я использую каждый API?

Большую часть времени я использую Polygon, потому что это универсальное средство для сбора всех видов данных. Если мне нужны какие-то другие данные, такие как данные технического индикатора, которые я не могу рассчитать, я буду использовать Alpha Vantage или Quandl.

Вывод:

В заключение, есть несколько способов получить данные фондового рынка; независимо от того, являетесь ли вы новичком или продвинутым, вы можете использовать различные API в соответствии с вашими потребностями.

Пожалуйста, закомментируйте свой любимый API для получения данных об акциях и оставайтесь с нами в моем новом увлекательном путешествии по торговле акциями. А пока, до встречи и спасибо.

Я не профессиональный финансовый консультант; пожалуйста, сделайте свое исследование, прежде чем делать инвестиции.