Giter VIP home page Giter VIP logo

apimoex's People

Contributors

alekseygur avatar crueltytanya avatar epogrebnyak avatar wlm1ke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

apimoex's Issues

Перестал работать метод apimoex.get_board_candles

Перестал работать метод 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 года

Приветствую. А пользуясь Вашей библиотекой минутки до 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 как в доке, но эффект тот же. По вашей доке тоже не осознал есть ли возможность получать запросы в реальном времени

apimoex vs aiomoex

Здравствуйте.

Через асинхронные запросы (aiomoex) работает быстрее.

Но не является ли испльзование асинхронных запросов некоторым "злоупотреблением" и, в том числе, поэтому был создан apimoex?

[Errno 104] Connection reset by peer

Добрый день!

Вчера все прекрасно работало, а сегодня столкнулся с ошибкой сервера:
ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))

Хотя в браузере при этом ссылки запросов открываются.
В чем может быть проблема и каковы пути решения?

Спасибо

get_board_history for ELFV always returs latest 36 entries

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

Проверка факта активности торгов на бирже

Добрый день!

Вопрос: как можно проверить факт текущей активности торгов для акций (TQBR) ?
Это необходимо, чтобы в ночью/выходные/праздники не делать лишних запросов к бирже.

Смотрю документацию:
https://iss.moex.com/iss/reference/28

Подставляю нужное:
https://iss.moex.com/iss/engines/stock/markets/shares/boards.xml

Тут есть флаг "is_traded". Это он отвечает за активность? Или путаю его с чем-то?

Пожалуйста, поделитесь, если есть другие решения для проверки активности?

Добавить определение [engine], [market]...

Добрый день!

Можно ли подправить функционал, чтобы можно было по ISIN/тикеру автоматически определять плейсхолдеры [engine], [market], чтобы затем их использовать для загрузки котировок?

Не хочется городить справочники. Насколько понимаю, стоит ограничение в requests.py -> def find_security_description -> table = "description". Там есть вторая таблица "boards".

Упростить описание пакета

Реализовано несколько функций-запросов информации о торгуемых акциях и их исторических котировках, результаты которых напрямую конвертируются в pandas.DataFrame.

Реализованы функции для получения информации о торгуемых акциях и их исторических котировках в виде pandas.DataFrame.

Мне кажется "несколько" сбивает.

В первой строке "Реализация части запросов" -> "Реализация запросов"

Купить акции

Спасибо за библиотеку.
Было бы круто иметь возможность купить акции.

Есть возможность уменьшить задержку получения данных?

  1. Для индекса (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')

  2. Для индекса (IMOEX) на 10 минутной свече задержки +-10 минут в рамках 10 минутного интервала (что норм!)
    ticker=IMOEX, interval =10, start_date=2023-03-02, end_date=2023-03-03

  3. Для акции, например "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'))

  4. Для акции, например "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'))

Вопросы:

  1. С чем связана такая задержка данных по индексу и акции?
  2. Может не с теми параметрами вызываю?
  3. Платный доступ к данным по акции хотябы как по индексу?

Такая ошибка при соединении

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'))

Не могу понять как получить стастику по валютам и по фьючерсам

Разобрался как получить инфу по акциям, облигациям, индексам, а вот с валютой (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')

примеры/help для типовых запросов

Можно идею опишу - для целей упрощения обучения (в вузе) и упрощения использования в целом?

У @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 обертки должно быть какое-то другое?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.