Closed shademurder closed 3 years ago
Архивы - это хорошо бы. Но что мешает сделать самому себе такой архивчик? Апи позволяет. За ночь много на грабит. Или лучше выходные, когда сервера не загруженные. Конкретно по проблеме вы точно указываете правильный диапазон дат?
Сервис быстро наклепал для этой цели. За выходные собирается не мало, но это реально не так много, как хотелось бы. Всего 1744 позиции и в сумме это действительно долго. Потом обновлять уже будет проще, а пока жду, когда всё соберётся. Диапазон дат точно верный, поскольку таким образом уже было получено огромное количество историй по разным позициям. Тут проблема в том, что с сервера приходит значение больше, чем int и не может смапиться.
У Apple такая же ситуация и так же только в случае попытки получить историю с шагом в день.
com.fasterxml.jackson.databind.JsonMappingException: Numeric value (2193657452) out of range of int (-2147483648 - 2147483647) at [Source: (okio.RealBufferedSource$inputStream$1); line: 1, column: 793] (through reference chain: ru.tinkoff.invest.openapi.model.rest.CandlesResponse["payload"]->ru.tinkoff.invest.openapi.model.rest.Candles["candles"]->java.util.ArrayList[5]->ru.tinkoff.invest.openapi.model.rest.Candle["v"])
Ух, настолько большой объём у кого-то! Чтож, расширим до Long.
я тоже соглашусь, что наличие архивов - это крутая идея.
Есть одно препядствие, чтобы поправить описанную проблему. Сейчас SDK генерирует классы из swagger-описания, а там объём торгов у свечи (поле v
) задано как int32
. Из-за этого генерируется Java-тип int
.
Получается, что swagger-контракт не соблюдается на стороне сервера - на самом деле это int64
. Тут стоит обратиться с этим вопросом в главный репо invest-openapi.
Когда поправится swagger-описание, то делать правки в SDK не понадобится. Достаточно будет просто перекомпилировать ваш проект, чтобы сгененрировать обновлённые классы.
При попытке получить историю свечей по дням (CandleResolution.DAY) для "Банк ВТБ" возникает следующая ошибка:
com.fasterxml.jackson.databind.JsonMappingException: Numeric value (103506240000) out of range of int (-2147483648 - 2147483647) at [Source: (okio.RealBufferedSource$inputStream$1); line: 1, column: 109] (through reference chain: ru.tinkoff.invest.openapi.model.rest.CandlesResponse["payload"]->ru.tinkoff.invest.openapi.model.rest.Candles["candles"]->java.util.ArrayList[0]->ru.tinkoff.invest.openapi.model.rest.Candle["v"])
Это не единственный случай (не только для ВТБ).
П.С. Хотелось бы в целом иметь возможность выгружать историю по всем позициям по всем шагам. Было бы классно, если бы раз в сутки обновлялся какой-нибудь архив или дамп, который можно было скачать. А то для получения всей истории по какой-нибудь позиции с шагом в 5 минут требуется приличное время из-за ограничений по максимальному числу запросов в минуту (выходит получать примерно по 240 дней информации в минуту).