WLM1ke / apimoex

Сlient for MOEX ISS
https://wlm1ke.github.io/apimoex/
The Unlicense
101 stars 28 forks source link

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

Open darkcorpd opened 2 years ago

darkcorpd commented 2 years ago

Добрый день!

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

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

WLM1ke commented 2 years ago

Не очень понимаю вашу идею.

У функций загрузки котировок и так есть дефолтные параметры для загрузки котировок акций в основном режиме торгов.

Для каких-то других задач/бумаг не нужен какой-то развесистый справочник - обычно достаточно один раз узнать набор плейсхолдеров и потом грузишь нужные бумаги. Как-то это автоматизировать достаточно сложно, так как в указанной вами таблице обычно несколько десятков доступных вариантов, и угадать, что вам нужно априори невозможно.

darkcorpd commented 2 years ago

Поясню. Я загружаю динамику котировок списком, пробегаясь функцией apimoex.get_board_history по списку тикеров. В списке как акции, так и фьючерсы. Соответственно, для них нужно отдельно определить и указать engine, market. Хотелось бы автоматизировать эти действия, т.к. пока для акций и фьючерсов у меня отдельные функции получаются.

WLM1ke commented 2 years ago

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

В вашем случае нужен справочник всего из двух вариантов - один набор для фьючерсов, а другой для акций. Какой-то сложности с помощью одно if это сделать я не вижу. И у вас конкретная частная задача и мне кажется, ее стоит решать в отдельном порядке.

Что бы вы поняли, таких частных задач очень много и под все пилить какие-то решения в рамках этой библиотеки ИМХО нет большого смысла - текущий код могут использовать многие, а вашу или другую задачу решает один человек.

У других людей другие задачи - я например склеиваю котировки акций из нескольких режимов, чтобы получить максимально глубокую историю котировок, так как текущий режим TQBR не существовал до 2014 года, а мне нужны котировки с начала 2000. Тут совсем другой принцип выбора "правильных плейсходеров".

Кто-то берет курсы, а там есть несколько режимов расчета работающих сейчас и они все нужны. И т.д.

WLM1ke commented 2 years ago

Как вариант других задач - одному пользователю хотелось это все в классы обернуть, при этом его интересовал ограниченный перечень инструментов, и он написал целую библиотеку поверх этой https://github.com/epogrebnyak/finec

epogrebnyak commented 2 years ago

Один пользователь подтверждает:

from finec.moex import whoami, traded_boards

# General information about ticker
whoami("YNDX")

# What boards does a security trade at?
traded_boards("MTSS")
epogrebnyak commented 2 years ago

Поясню. Я загружаю динамику котировок списком, пробегаясь функцией apimoex.get_board_history по списку тикеров. В списке как акции, так и фьючерсы. Соответственно, для них нужно отдельно определить и указать engine, market. Хотелось бы автоматизировать эти действия, т.к. пока для акций и фьючерсов у меня отдельные функции получаются.

В библиотеке finec для акций есть класс Stock , в котором записаны engine и дефолтная борда, можно добавить фьючерсы, если дадите код как вы сейчас информацию по ним достаете. Можно открыть ишью тут: https://github.com/epogrebnyak/finec/issues

apimoex - более низкоуровневая библиотека с клиентом для доступа к данным Мосбиржи, finec - библиотека для более высокоуровневого доступа, использует apimoex как клиент.