Как можно получить график акций, используя API MOEX?

Как мне получить данные о российских ценных бумагах в виде таблицы свечей (двумерный массив или с использованием SQL, pandas)? В начале я пытался использовать Yfinanse, но он подходит только для иностранных бумаг. В качестве альтернативы нашёл библиотеку <b>apimoex</b> ( <a href="https://pypi.org/project/apimoex/" rel="nofollow">https://pypi.org/project/apimoex/</a> ), но не смог разобраться с документацией, несмотря на то что нашёл упоминания о необходимой функции. Как я могу получить нужную информацию о конкретной бумаге за определённый срок и в заданном размере свечи?
  • 22 сентября 2024 г. 15:03
Ответы на вопрос 2
Для получения графиков акций и данных о российских ценных бумагах с использованием API MOEX, вы можете воспользоваться библиотекой `apimoex`. Ниже я приведу пример, как можно получить данные в формате свечей (OHLC - Open, High, Low, Close) для конкретной ценной бумаги за определенный срок.

1. **Установка библиотеки**:
   Убедитесь, что библиотека `apimoex` установлена. Вы можете установить её с помощью pip:
   ```bash
   pip install apimoex
   ```

2. **Использование библиотеки**:
   Вот пример кода, который показывает, как можно получить исторические данные в виде свечей для конкретной акции. В этом примере мы будем использовать акцию "SBER" (Сбербанк):

```python
import pandas as pd
from apimoex import Market

# Создаем экземпляр клиента API MOEX
market = Market()

# Задаем параметры
ticker = 'SBER'  # тикер ценной бумаги
start_date = '2023-01-01'  # начальная дата
end_date = '2023-10-01'  # конечная дата
interval = '1d'  # размер свечи (дневные свечи)

# Получаем исторические данные
data = market.get_candles(ticker, start=start_date, end=end_date, interval=interval)

# Преобразуем данные в DataFrame
df = pd.DataFrame(data)

# Переименуем колонки для удобства, если необходимо
df.columns = ['timestamp', 'open', 'high', 'low', 'close', 'volume']

# Преобразуем timestamp в DateTime
df['timestamp'] = pd.to_datetime(df['timestamp'])

# Устанавливаем индекс
df.set_index('timestamp', inplace=True)

# Выводим полученные данные
print(df)
```

### Объяснение параметров:
- `ticker` — это тикер интересующей вас акции.
- `start_date` и `end_date` — это диапазон дат для получения исторических данных.
- `interval` — размер свечи, например, '1d' для дневных свече́й.

### Дополнительные параметры:
Вы можете изменять интервалы для получения других типов свечей, таких как:
- '1m' — минутные свечи
- '5m' — 5-минутные свечи
- '1h' — часовые свечи

Другие параметры описаны в документации библиотеки `apimoex`.

### Примечание:
API MOEX может иметь ограничения по запросам и доступным данным, поэтому убедитесь, что вы соблюдаете условия использования API.

Теперь у вас есть базовый пример того, как получить исторические данные в виде свечей для российского ценной бумаги, используя библиотеку `apimoex`! Если у вас возникнут дополнительные вопросы или нужна помощь с другими аспектами, не стесняйтесь спрашивать.
Чтобы получить данные акций с помощью apimoex, можно воспользоваться функцией get_candles. Вот пример, как это сделать, используя pandas для удобной работы с данными. 

import pandas as pd
from apimoex import MOEX

# Инициализируем API
moex = MOEX()

# Задаем параметры для получения свечей
ticker = 'SBER'  # Здесь укажите нужный тикер
start_date = '2023-01-01'  # Начальная дата
end_date = '2023-09-01'    # Конечная дата
interval = '1d'            # Интервал: '1d', '1h', '30m' и т.д.

# Получаем данные
candles = moex.get_candles(ticker, start=start_date, end=end_date, interval=interval)

# Преобразуем в DataFrame
df = pd.DataFrame(candles)

# Выводим данные
print(df)
Похожие вопросы