wlm1ke / apimoex Goto Github PK
View Code? Open in Web Editor NEWСlient for MOEX ISS
Home Page: https://wlm1ke.github.io/apimoex/
License: The Unlicense
Сlient for MOEX ISS
Home Page: https://wlm1ke.github.io/apimoex/
License: The Unlicense
Перестал работать метод apimoex.get_board_candles
При вызове
data = apimoex.get_board_candles(session, 'SNGSP', 1, '2022-04-28') # Statistics by intervals 1 minute
TimeoutError: [Errno 110] Connection timed out
During handling of the above exception, another exception occurred:
NewConnectionError Traceback (most recent call last)
NewConnectionError: <urllib3.connection.VerifiedHTTPSConnection object at 0x7fabb815de90>: Failed to establish a new connection: [Errno 110] Connection timed out
During handling of the above exception, another exception occurred:
MaxRetryError Traceback (most recent call last)
MaxRetryError: HTTPSConnectionPool(host='iss.moex.com', port=443): Max retries exceeded with url: /iss/engines/stock/markets/shares/boards/TQBR/securities/SNGSP/candles.json?iss.json=extended&iss.meta=off&interval=1&from=2022-04-28&iss.only=candles%2Chistory.cursor&candles.columns=begin%2Copen%2Cclose%2Chigh%2Clow%2Cvalue (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7fabb815de90>: Failed to establish a new connection: [Errno 110] Connection timed out'))
Здравствуйте.
Прошу прощения - вопрос не по коду и это, собственно, не issue, но все же спрошу:
Интересуют, допустим, только акции и облигации.
Чтобы получить сначала общие сведенья об этих инструментах (чтобы впоследствии получить большую деталлизацию: историю, рыночные данные), насколько корректно делать первоначально запросы так:
https://iss.moex.com/iss/securities.json?engine=stock&market=shares - акции
https://iss.moex.com/iss/securities.json?engine=stock&market=bonds - облигации
?
Напрпимер вот такой запрос по облигациям выдает больше записей (включая записи из предыдущего):
https://iss.moex.com/iss/securities.json?group_by=group&group_by_filter=stock_bonds
С чего правильно начинать?
Приветствую. А пользуясь Вашей библиотекой минутки до 2012 года я так понимаю не выкачать?
Спасибо
Добрый день.
Пожалуйста, подскажите возможно ли из MOEX API достать информацию о том, какие акции можно шортить? Не могу найти эту инормацию у них в описании. Там нет полей, которые бы намекали на возможность шортов:
http://iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.json
Или это, например, другой режим торгов, а не TQBR? Или операция относится к срочному рынку futures?
Здравствуйте. У меня есть список тикеров (Акции и облигации). Мне необходимо получить две вещи: цена актива и список дивидендов. Можете помочь? как это сделать меньшим количеством телодвижений? :)
Привет! Попробовал апишку и запрос https://iss.moex.com/iss/engines/futures/markets/forts/securities/SiZ2/candles.json?from=2022-11-24&interval=1&iss.reverse=true
отдает свечи с отставанием на 10 минут, т.е., например, в 19:00, я получаю последнюю свечу за 18:50. Может в курсе это баг или фича? Читал в доке что можно как-то делать подписку, но не написано как именно. Завел аккаунт и попробовал тот же запрос с Basic Auth как в доке, но эффект тот же. По вашей доке тоже не осознал есть ли возможность получать запросы в реальном времени
Приветствую! Подскажите, а можно ли с помощью вашего решения выкачать котировки фьючерса, например, на индекс RTS или BRENT? Просто уже всё перепробовал, но ничего не получается...
Здравствуйте.
Через асинхронные запросы (aiomoex) работает быстрее.
Но не является ли испльзование асинхронных запросов некоторым "злоупотреблением" и, в том числе, поэтому был создан apimoex?
Добрый день!
Вчера все прекрасно работало, а сегодня столкнулся с ошибкой сервера:
ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
Хотя в браузере при этом ссылки запросов открываются.
В чем может быть проблема и каковы пути решения?
Спасибо
https://www.youtube.com/watch?v=2ZWYnSryU9c
Можно использовать как дополнительную информацию в документации
котировки выдаёт, но нет объёма, пример:
apimoex.get_board_candles(session, 'crh3', interval=10, start='2022-09-01', end=end_date, market = "forts", engine = "futures")
subj, example session
In [2]: import requests
...:
...: import apimoex
...: import pandas as pd
...:
...:
...: with requests.Session() as session:
...: data = apimoex.get_board_history(session, "ELFV", start="2022-11-11")
...: df = pd.DataFrame(data)
...: df.set_index("TRADEDATE", inplace=True)
...: print(df.head(), "\n")
...: print(df.tail(), "\n")
...: df.info()
...:
BOARDID CLOSE VOLUME VALUE
TRADEDATE
2023-03-29 TQBR 0.5780 46962000 27123294.2
2023-03-30 TQBR 0.5786 42819000 24588504.0
2023-03-31 TQBR 0.5728 40085000 22954267.2
2023-04-03 TQBR 0.5730 21679000 12413827.0
2023-04-04 TQBR 0.5736 40381000 23370760.0
BOARDID CLOSE VOLUME VALUE
TRADEDATE
2023-05-15 TQBR 0.5750 34106000 19551351.6
2023-05-16 TQBR 0.5830 88548000 51675290.8
2023-05-17 TQBR 0.5834 35239000 20645430.4
2023-05-18 TQBR 0.5702 67872000 38880258.8
2023-05-19 TQBR 0.5620 31954000 18153188.6
<class 'pandas.core.frame.DataFrame'>
Index: 36 entries, 2023-03-29 to 2023-05-19
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 BOARDID 36 non-null object
1 CLOSE 36 non-null float64
2 VOLUME 36 non-null int64
3 VALUE 36 non-null float64
dtypes: float64(2), int64(1), object(1)
memory usage: 1.4+ KB
Line 73 in 1aa33b7
Если columns=('слово'), то ",".join(columns) = 'с,л,о,в,о'
Стоит написать что-то вроде:
query[f"{table}.columns"] = ",".join(columns) if isinstance(columns, tuple) and len(columns)>1 else str(columns)
Добрый день!
Вопрос: как можно проверить факт текущей активности торгов для акций (TQBR) ?
Это необходимо, чтобы в ночью/выходные/праздники не делать лишних запросов к бирже.
Смотрю документацию:
https://iss.moex.com/iss/reference/28
Подставляю нужное:
https://iss.moex.com/iss/engines/stock/markets/shares/boards.xml
Тут есть флаг "is_traded". Это он отвечает за активность? Или путаю его с чем-то?
Пожалуйста, поделитесь, если есть другие решения для проверки активности?
Не работает на google colab. Локально работает.
Сделал по примеру:
import requests
import apimoex
import pandas as pd
with requests.Session() as session:
data = apimoex.get_board_history(session, 'VIPS-RM')
df = pd.DataFrame(data)
df.set_index('TRADEDATE', inplace=True)
print(df.head(), '\n')
print(df.tail(), '\n')
df.info()
Но увы не работает.
subj
Добрый день.
Пожалуйста, подскажите можно ли приспособить какой-нибудь метод для получения данных по дивидендам?
Адрес: https://iss.moex.com/iss/securities/PHOR/dividends.xml
Добрый день!
Можно ли подправить функционал, чтобы можно было по ISIN/тикеру автоматически определять плейсхолдеры [engine], [market], чтобы затем их использовать для загрузки котировок?
Не хочется городить справочники. Насколько понимаю, стоит ограничение в requests.py -> def find_security_description -> table = "description". Там есть вторая таблица "boards".
Есть ли возможность вытаскивать состав индекса и доли бумаг в нем?
Например imoex?
Реализовано несколько функций-запросов информации о торгуемых акциях и их исторических котировках, результаты которых напрямую конвертируются в pandas.DataFrame.
Реализованы функции для получения информации о торгуемых акциях и их исторических котировках в виде pandas.DataFrame
.
Мне кажется "несколько" сбивает.
В первой строке "Реализация части запросов" -> "Реализация запросов"
Спасибо за библиотеку.
Было бы круто иметь возможность купить акции.
Видел статья на Хабре:
https://habr.com/ru/post/533016/
думаю как средствами apimoex собрать данные по облигациям. Если кто-то собрал - дайте знать пожалуйтса
Для индекса (IMOEX) на 1 минутной свече задержки почти нет в +-1 минута (что норм!)
ticker=IMOEX, interval =1, start_date=2023-03-02, end_date=2023-03-03
data = apimoex.get_market_candles(session, ticker, interval, start_date, end_date, ('begin', 'open', 'high', 'low', 'close', 'value'), 'index', 'stock')
Для индекса (IMOEX) на 10 минутной свече задержки +-10 минут в рамках 10 минутного интервала (что норм!)
ticker=IMOEX, interval =10, start_date=2023-03-02, end_date=2023-03-03
Для акции, например "IRAO" на 1 минутной свече задержка порядка +-16 минут (что НЕ норм!)
ticker=IMOEX, interval =1, start_date=2023-03-02, end_date=2023-03-03
data = apimoex.get_board_candles(session, ticker, interval, start_date, end_date, ('begin', 'open', 'high', 'low', 'close', 'value'))
Для акции, например "IRAO" на 10 минутной свече задержка более 30 минут (что НЕ норм!)
ticker=IRAO, interval =10, start_date=2023-03-02, end_date=2023-03-03
data = apimoex.get_board_candles(session, ticker, interval, start_date, end_date, ('begin', 'open', 'high', 'low', 'close', 'value'))
Вопросы:
Traceback (most recent call last):
at block 1, line 17
at /var/datalore/manager/.pip/apimoex/requests.py, line 377, in get_board_candles(session, security, interval, start, end, columns, board, market, engine)
at /var/datalore/manager/.pip/apimoex/requests.py, line 126, in _get_long_data(session, url, table, query)
at /var/datalore/manager/.pip/apimoex/client.py, line 124, in get_all(self)
at /var/datalore/manager/.pip/apimoex/client.py, line 62, in iter(self)
at /var/datalore/manager/.pip/apimoex/client.py, line 97, in get(self, start)
at /var/datalore/manager/.pip/requests/sessions.py, line 600, in get(self, url, **kwargs)
at /var/datalore/manager/.pip/requests/sessions.py, line 587, in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
at /var/datalore/manager/.pip/requests/sessions.py, line 701, in send(self, request, **kwargs)
at /var/datalore/manager/.pip/requests/adapters.py, line 565, in send(self, request, stream, timeout, verify, cert, proxies)
ConnectionError: HTTPSConnectionPool(host='iss.moex.com', port=443): Max retries exceeded with url: /iss/engines/stock/markets/shares/boards/TQBR/securities/MGNT/candles.json?iss.json=extended&iss.meta=off&interval=10&from=2022-08-01&till=2023-01-26&iss.only=candles%2Chistory.cursor&candles.columns=begin%2Copen%2Cclose%2Chigh%2Clow%2Cvalue (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f9b62e6dd90>: Failed to establish a new connection: [Errno 110] Connection timed out'))
subj
Разобрался как получить инфу по акциям, облигациям, индексам, а вот с валютой (USDRUB_TOD) и фьючерсами (например Si-6.22 / SiM2) проблема. В документации тоже не инфы.
Подскажите с какими параметрами нужно вызвать apimoex.get_board_candles что бы получить инфу по валюте и фьючерсам?
=== так получаю инфу по акциям, облигациям и индексам
print("== Shares GAZP ==")
data = apimoex.get_board_candles(session, 'GAZP', 1, '2022-05-18', None,
('begin', 'open', 'high', 'low', 'close', 'value')) # Statistics by intervals 1 minute
print("== Bond RU000A100881 ==")
data = apimoex.get_market_candles(session, 'RU000A100881', 1, '2022-05-18', None, ('begin', 'open', 'high', 'low', 'close', 'value'),
'bonds', 'stock')
print("== index IMOEX ==")
data = apimoex.get_market_candles(session, 'IMOEX', 1, '2022-05-18', None, ('begin', 'open', 'high', 'low', 'close', 'value'),
'index', 'stock')
Можно идею опишу - для целей упрощения обучения (в вузе) и упрощения использования в целом?
У @WLM1ke - супербиблиотека, позволяющая вытащить, все что угодно, если знаешь, где лежит. Когда мы рассказываем что-то простое студентам - типа возьмите цену акции или облигации, скорее всего студенту / пользователю нужно:
tickers = get_stock_tickers()
assert "AFLT" in tickers
a = Stock("AFLT")
df1 = a.get_quotes(start="2021-01-15")
df2 = a.get_quotes_ytd()
# or:
df3 = get_quotes_ytd(stock="AFLT")
Есть польза в такой обертке? Может API обертки должно быть какое-то другое?
Добрый день! Не подскажите, а есть вариант через ваше решение получить доступ к акциям иностранных компаний?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.