Code Monkey home page Code Monkey logo

tinkoff-invest-openapi-dart-sdk's People

Contributors

greymag avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

tinkoff-invest-openapi-dart-sdk's Issues

Сложности при работе с PlacedLimitOrder и PlacedMarketOrder

В данной реализации типы данных PlacedLimitOrder и PlacedMarketOrder разнесены по двум раздельным классам, хотя содержимое один в один совпадает. Это вызывает сложность, например, если есть потребность поместить их в единую типизированную коллекцию и комфортно работать без приведения типов.

Предлагаемые вырианты решения:

  1. Оставить один тип данных и добавить признак ордера.
  2. Унаследовать одно от другого.
  3. Унаследовать от единого интерфейса.

Хотелось бы услышать причины разнесения этих ответов на несвязанные между собой типы и на сколько предложение №1 или №3 целесообразны.

Failed to parse error response

Заведу такой баг, так как повторился второй раз.
Для обработки истории операций был написан следующий метод:

Future<void> loadOperations() async {
    final to = DateTime.now();
    final from = DateTime.fromMillisecondsSinceEpoch(to.millisecondsSinceEpoch - 86400000);
    final response =
        await api.operations.load(from, to, brokerAccountId: properties.brokerAccountId);
    if (response.isValue) {
      final list = response.asValue!.value.payload;
      for (var operation in list.operations) {
        state.updateOperation(operation);
      }
    } else {
      error('Load operations failed: ${response.asError!.error}');
    }
  }

Лог выводит сообщение:

[E] Load operations failed: Failed to parse error response

Предположу что парсер умер при получении незнакомых данных.

productionRestUrl

Я попробовал сделать новое приложение и получить состояние портфеля, но получаю ошибку

*** DioError ***:
uri: https://api-invest.tinkoff.ru/openapi/portfolio
DioError [DioErrorType.response]: Http status error [403]
uri: https://api-invest.tinkoff.ru/openapi/portfolio
statusCode: 403

токен свежеполученный. Заметил, что URL отличается от того, что указан в документации (https://tinkoff.github.io/investAPI/).

Все вызовы продового сервиса выполняются по адресу invest-public-api.tinkoff.ru:443.

Все вызовы сервиса песочницы выполняются по адресу sandbox-invest-public-api.tinkoff.ru:443.

403 ошибка может быть результатом того, что поменялся URL для доступа к данным?

Exception: Null check operator used on a null value

version: tinkoff_invest: ^0.1.0+1
debug: true

StreamingTradeStatus convert(String value) => _data[value]!;

...
[streaming] Event: {"payload":{"figi":"BBG004730N88","trade_status":"opening_auction","min_price_increment":0.01,"lot":10},"event":"instrument_info","time":"2021-08-06T16:00:03.178466459Z"}
...
Unhandled exception:
Null check operator used on a null value
#0      StreamingTradeStatusConverter.convert (package:tinkoff_invest/src/models/streaming/streaming_trade_status.dart:47:61)
#1      StreamingTradeStatusConverter.fromJson (package:tinkoff_invest/src/models/streaming/streaming_trade_status.dart:51:7)
#2      StreamingTradeStatusFromJsonExtension.requireStreamingTradeStatus (package:tinkoff_invest/src/models/streaming/streaming_trade_status.dart:64:45)
#3      new StreamingInstrumentInfo.fromJson (package:tinkoff_invest/src/models/streaming/streaming_instrument_info.dart:40:11)
#4      new StreamingInstrumentInfoEvent.fromJson (package:tinkoff_invest/src/models/event/streaming_instrument_info_event.dart:15:33)
#5      TIInstrumentInfoStreamingImpl.fromMap (package:tinkoff_invest/src/streaming/ti_instrument_info_streaming.dart:62:36)
#6      TIStreamingChannelImpl.eventReceived (package:tinkoff_invest/src/streaming/ti_streaming_channel.dart:33:21)
#7      TIStreamingImpl._onEvent.<anonymous closure> (package:tinkoff_invest/src/streaming/ti_streaming.dart:111:48)
...

[streaming] Done

Для моего решения нужна непрерывная работа потока данных, но сейчас подписки на поток завершаются выводом [streaming] Done в первые 10-50 минут работы приложения (чаще 50 минут, но бывает как меньше так и больше промежуток до завершения).
Я предпологаю что на это влияет серверная часть брокера, мне бы пригодилась возможность иметь доступ к методу Done, чтобы в нужный момент попробовать переподписаться на поток. Придется делать форк и проверять теорию, но может знаете почему так происходит и какие есть еще способы предотвратить остановку потока. Второе предложение задействовать pingInterval, но тоже нужно проверить.

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.