Как скачать котировки акций в Excel: от ручного ввода до автоматического обновления

Зачем трейдерам и инвесторам котировки в Excel?

Работа с биржевыми данными в Microsoft Excel или Google Таблицах открывает возможности для глубокого анализа, которых нет в стандартных терминалах брокеров. Здесь вы можете строить кастомные графики, применять сложные формулы для расчёта волатильности, корреляций между активами или тестировать собственные торговые стратегии на исторических данных. Например, комбинация функций СМЕЩ и ТЕНДЕНЦИЯ позволяет прогнозировать ценовые каналы, а сводные таблицы помогают выявлять сезонные паттерны.

Но главное преимущество Excel — автоматизация. Вместо того чтобы вручную переписывать котировки с сайта брокера, можно настроить ежедневное обновление данных через API или веб-запросы, сэкономив часы времени. Это особенно ценно для портфельных инвесторов, которые отслеживают десятки бумаг одновременно. Однако не все способы импорта одинаково надёжны: некоторые требуют знания программирования, другие ограничены лимитами бесплатных запросов.

В этой статье мы разберём 5 методов — от простейшего копирования данных до профессиональных решений с Power Query и VBA, — а также покажем, как избежать типичных ошибок при работе с финансовыми данными в Excel.

Способ 1: Ручной ввод и копирование с биржевых сайтов

Самый очевидный, но и самый трудоёмкий способ — скопировать котировки с сайта брокера или финансового портала (например, Investing.com, TradingView или Finam.ru) и вставить их в Excel. Этот метод подходит для разовых задач, когда нужны данные по 1–2 акциям за ограниченный период.

Как это сделать:

  • 📊 Перейдите на сайт с котировками (например, Investing.com), найдите нужную бумагу через поиск.
  • 📋 Выделите таблицу с историческими данными (дату, цены открытия/закрытия, объёмы). Для этого кликните по первой ячейке, зажмите Shift и выделите последнюю.
  • 🖱️ Скопируйте данные (Ctrl+C) и вставьте в Excel (Ctrl+V). Используйте Специальная вставка → Текст, чтобы избежать проблем с форматом.
  • 🔄 Если данные вставляются в одну ячейку, воспользуйтесь инструментом Текст по столбцам (вкладка Данные).

Преимущества метода: не требует технических навыков и работает даже без интернета (после копирования). Однако у него есть критические недостатки:

⚠️ Внимание: При ручном копировании высок риск ошибок — пропущенные строки, неверные форматы дат или чисел (например, десятичные разделители в виде запятых вместо точек). Всегда проверяйте первые 10–20 строк на корректность!

Для регулярного анализа этот способ не подходит: обновление данных займёт слишком много времени. Но его можно оптимизировать с помощью горячих клавиш:

Способ 2: Импорт через Google Finance (бесплатно и без API)

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

Синтаксис функции:

=GOOGLEFINANCE("ТИКЕР"; ["АТРИБУТ"]; [НАЧАЛЬНАЯ_ДАТА]; [КОНЕЧНАЯ_ДАТА]; [ИНТЕРВАЛ])

Примеры:

  • 📈 Текущая цена акции Газпрома: =GOOGLEFINANCE("GAZP:MCX")
  • 📊 Исторические данные Сбербанка за месяц: =GOOGLEFINANCE("SBER:MCX"; "price"; TODAY()-30; TODAY())
  • 💱 Курс доллара к рублю: =GOOGLEFINANCE("CURRENCY:USDRUB")

Преимущества:

  • ✅ Данные обновляются автоматически при открытии файла.
  • ✅ Поддерживаются не только акции, но и ETF, облигации, валюты.
  • ✅ Можно тянуть данные за период до 20 лет (с дневным интервалом).

Ограничения:

  • ❌ Работает только в Google Таблицах, а не в десктопном Excel.
  • ❌ Для российских акций (MOEX) может потребоваться указывать биржу явно (например, "SBER:MCX" вместо "SBER").
  • ❌ Интервал обновления — раз в 20 минут (для бесплатных аккаунтов).

Чтобы перенести данные из Google Таблиц в Excel, экспортируйте файл в формате .xlsx через меню Файл → Скачать → Microsoft Excel.

📊 Какой источник котировок вы используете чаще?
Брокерский терминал
Google Finance
TradingView
Свой скрипт на Python
Другой

Способ 3: Веб-запросы через Power Query (Excel 2016 и новее)

Power Query — это инструмент ETL (Extract, Transform, Load), встроенный в современные версии Excel. Он позволяет подключаться к веб-страницам, API и базам данных, преобразовывать данные и загружать их в таблицу. Для котировок это один из самых гибких методов.

Пошаговая инструкция:

  1. Перейдите на вкладку ДанныеПолучить данныеИз других источниковИз веб.
  2. Вставьте URL страницы с котировками. Например, для Yahoo Finance это может быть:
    https://finance.yahoo.com/quote/AAPL/history?period1=0&period2=9999999999&interval=1d&filter=history&frequency=1d
  3. В открывшемся окне Power Query выберите таблицу с данными (обычно она одна).
  4. Нажмите Преобразовать данные, чтобы очистить лишние столбцы, исправить форматы дат и т. д.
  5. Сохраните запрос и загрузите данные в Excel.

Преимущества Power Query:

  • 🔄 Возможность настроить автоматическое обновление при открытии файла или по расписанию.
  • 🛠️ Гибкая обработка данных: удаление пустых строк, замена текста, добавление вычисляемых столбцов.
  • 🌍 Поддержка множества источников: от Yahoo Finance до Alpha Vantage API.

Типичные ошибки и их решения:

Проблема Причина Решение
Данные не загружаются Сайт блокирует веб-запросы Используйте API или прокси
Неверный формат даты Региональные настройки Excel В Power Query замените тип данных на Дата
Пустые ячейки в столбцах На сайте отсутствуют данные за выходные Добавьте шаг фильтрации: Удалить строки → Удалить пустые

Для российских акций лучше использовать источники, поддерживающие MOEX, например:

https://iss.moex.com/iss/engines/stock/markets/shares/boardgroups/57/securities/{ТИКЕР}/candles.json?from={ДАТА_НАЧАЛА}&till={ДАТА_КОНЦА}&interval=24

Где {ТИКЕР} — это код акции (например, SBER), а даты указываются в формате YYYY-MM-DD.

Установить Excel 2016 или новее|Скачать пример файла с запросом к MOEX|Заменить {ТИКЕР} на нужную акцию|Настроить обновление по расписанию-->

Способ 4: Автоматизация через API (Yahoo Finance, Alpha Vantage, MOEX)

Для профессионального анализа ручные методы не подходят — нужны API (Application Programming Interface). Они позволяют получать данные в структурированном виде (JSON/CSV) и обновлять их по расписанию. Рассмотрим три популярных API:

1. Yahoo Finance API (неофициальный)

Хотя официального API у Yahoo Finance нет, можно использовать неофициальные обёртки, такие как библиотека yfinance для Python. Пример кода:

import yfinance as yf

data = yf.download("AAPL", start="2023-01-01", end="2023-12-31")

data.to_excel("AAPL_data.xlsx")

Чтобы запустить этот скрипт, установите Python и библиотеку yfinance через команду pip install yfinance.

2. Alpha Vantage (бесплатный тариф)

Alpha Vantage предоставляет бесплатный API с лимитом 5 запросов в минуту. Для начала работы:

  1. Зарегистрируйтесь на alphavantage.co и получите ключ API.
  2. Используйте URL вида:
    https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=IBM&apikey=YOUR_API_KEY
  3. Импортируйте данные в Excel через Power Query (как в Способе 3) или парсите ответ с помощью VBA.

3. MOEX ISS API (для российских акций)

Московская биржа предоставляет бесплатный API для исторических данных. Пример запроса для акций Сбербанка:

https://iss.moex.com/iss/history/engines/stock/markets/shares/boards/TQBR/securities/SBER.json?from=2023-01-01

Ответ приходит в формате JSON, который можно преобразовать в таблицу с помощью Power Query или скрипта на Python.

⚠️ Внимание: Бесплатные API часто имеют ограничения по количеству запросов. Например, Alpha Vantage разрешает 500 запросов в день на бесплатном тарифе. Превышение лимита приведёт к блокировке ключа на 24 часа.

Для автоматизации обновления в Excel можно использовать VBA-скрипты. Пример макроса для загрузки данных с Alpha Vantage:

Пример VBA-кода для Alpha Vantage

Sub GetStockData()

Dim apiKey As String, symbol As String, url As String

apiKey = "YOUR_API_KEY" ' Замените на ваш ключ

symbol = "SBER"

url = "https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=" & symbol & "&apikey=" & apiKey

With ActiveSheet.QueryTables.Add(Connection:="URL;" & url, Destination:=Range("A1"))

.RefreshStyle = xlOverwriteCells

.WebSelectionType = xlAllTables

.Refresh

End With

End Sub

Чтобы запустить макрос, нажмите Alt+F11, вставьте код в модуль и выполните его через F5.

Способ 5: Готовые надстройки для Excel (TradingView, Bloomberg)

Если вы не хотите разбираться в API или Power Query, можно воспользоваться готовыми надстройками. Они платные, но экономят время и предлагают расширенную функциональность.

Популярные решения:

  • 📉 TradingView Excel Add-in: Подключается к аккаунту TradingView и позволяет экспортировать данные с графиков прямо в Excel. Стоимость — от $15/месяц.
  • 💼 Bloomberg Excel Add-in (BDP): Профессиональный инструмент с данными по акциям, облигациям и макроэкономическим показателям. Требует подписку на Bloomberg Terminal (от $24 000/год).
  • 📊 Excel Price Feed: Надстройка для загрузки котировок с Yahoo Finance, Alpha Vantage и других источников. Единоразовая покупка — ~$50.

Преимущества надстроек:

  • Реальное время: Данные обновляются с задержкой в несколько секунд (в отличие от ручного копирования).
  • 📈 Технический анализ: Встроенные функции для расчёта скользящих средних, RSI, Bollinger Bands.
  • 🔄 Автоматизация: Настройка триггеров для обновления при изменении цены на заданный процент.

Недостатки:

  • 💰 Платное использование (кроме пробных периодов).
  • 🔌 Требует установки дополнительного ПО.
  • 🛡️ Возможны ограничения по количеству запрашиваемых тикеров.

Пример работы с Excel Price Feed:

  1. Установите надстройку через Файл → Параметры → Надстройки → Управление надстройками Excel.
  2. Вставьте функцию вида: =EPF.Yahoo.Historical("AAPL", "2023-01-01", "2023-12-31", "daily").
  3. Настройте автоматическое обновление в параметрах надстройки.

Типичные ошибки и как их избежать

Даже опытные пользователи Excel сталкиваются с проблемами при работе с биржевыми данными. Вот самые распространённые ошибки и способы их решения:

1. Неверный формат даты

Excel может воспринимать даты как текст (например, 01.12.2023 вместо 01-дек-2023). Это приводит к ошибкам в формулах и графиках.

  • 🔹 Решение: Выделите столбец с датами → Главная → Формат → Формат ячеек → Дата.
  • 🔹 В Power Query: измените тип данных на Дата на этапе преобразования.

2. Разделители дробных чисел

В российской версии Excel дробные числа разделяются запятой (1 234,56), а в американской — точкой (1,234.56). При импорте данных с зарубежных сайтов это вызывает ошибки в формулах.

  • 🔹 Решение: Замените запятые на точки через Найти и заменить (Ctrl+H) или в Power Query добавьте шаг Заменить значения.

3. Пропущенные данные (выходные/праздники)

Биржи не работают по выходным, поэтому в исторических данных будут пропуски. Это искажает расчёты скользящих средних или волатильности.

  • 🔹 Решение: Используйте функцию ЕСЛИОШИБКА для заполнения пропусков. Например:
    =ЕСЛИОШИБКА(СМЕЩ(B2;-1);B2)

    где B2 — ячейка с ценой закрытия.

4. Ограничения API

Бесплатные API (например, Alpha Vantage) ограничивают количество запросов. При превышении лимита вы получите ошибку 429 Too Many Requests.

  • 🔹 Решение: Разбивайте запросы на пакеты (например, по 5 тикеров за раз) или используйте платные тарифы.

5. Несовпадение временных зон

Данные с NYSE приходят в формате UTC-5, а MOEX работает по UTC+3. Это важно для интрадей-трейдеров.

  • 🔹 Решение: Добавляйте/вычитайте разницу во времени в Excel. Например, для перевода из UTC в MSK:
    =A2 + (3/24)

    где A2 — ячейка с временем в формате Excel.

FAQ: Частые вопросы по загрузке котировок в Excel

Можно ли загрузить котировки в Excel с сайта брокера (Тинькофф, ВТБ, Сбербанк)?

Да, но не все брокеры предоставляют такой функционал. Например, Тинькофф Инвестиции позволяет экспортировать историю сделок в CSV, но не котировки. Для загрузки ценовых данных придётся использовать API (например, MOEX ISS) или парсить веб-страницы через Power Query.

Исключение — Quik (терминал для торговли на MOEX). В нём можно сохранить исторические данные в CSV и затем импортировать в Excel.

Как обновить котировки в Excel автоматически без моего участия?

Есть три способа:

  1. Power Query: Настройте запрос и включите Свойства → Обновлять каждые X минут.
  2. VBA-скрипт: Напишите макрос с таймером, который будет запускать обновление. Пример:
    Application.OnTime Now + TimeValue("00:30:00"), "UpdateData"
  3. Надстройки: Например, Excel Price Feed поддерживает фоновое обновление.

Важно: Автоматическое обновление работает только при открытом файле Excel. Для фоновой работы нужен сервер (например, Python-скрипт на VPS).

Почему в Excel не отображаются русские названия акций (Сбербанк, Газпром)?

Это связано с кодировкой данных. При импорте из API или CSV кириллические символы могут отображаться как ??????. Решения:

  • В Power Query: на этапе загрузки выберите кодировку Windows-1251 или UTF-8.
  • В VBA: используйте ADODB.Stream с указанием charset:
    stream.CharSet = "windows-1251"
  • При ручном копировании: вставляйте данные через Специальная вставка → Текст.
Можно ли в Excel построить график котировок с несколькими временными рамками (дневной, недельный, месячный)?

Да, но для этого нужно:

  1. Загрузить данные с разными интервалами (например, через Alpha Vantage с параметром interval=daily|weekly|monthly).
  2. Создать отдельные таблицы для каждого интервала.
  3. Построить график с вторичной осью:
    • Выделите данные → Вставка → График.
    • Кликните правой кнопкой по ряду данных → Формат ряда данных → Построить на вторичной оси.

Пример формулы для агрегации дневных данных в недельные:

=СРЗНАЧ(ЕСЛИ(НЕДЕЛЯ(B2:B100)=НЕДЕЛЯ(B2);C2:C100))

(вводится как CTRL+SHIFT+ENTER).

Как в Excel рассчитать доходность портфеля акций с учётом дивидендов?

Для этого нужно:

  1. Загрузить исторические цены и даты дивидендов (например, с Dividend.com или через API MOEX).
  2. Добавить столбец с начисленными дивидендами. Пример:
    =ЕСЛИ(A2=дата_дивиденда;размер_дивиденда;0)
  3. Рассчитать совокупную доходность:
    =((Последняя_цена - Первая_цена + СУММ(Дивиденды)) / Первая_цена) - 1

Для автоматизации можно использовать Power Query для слияния таблиц с ценами и дивидендами по столбцу с датой.