Страница 2 из 2

Re: описание API для С++

Добавлено: 24 окт 2022, 07:50
GVP
Спасибо.
Скорость не нужна. Подписку на котировки и чтение сделал, но есть сомнения по синхронизации потоков. По позициям и балансам есть локер. По котировкам не увидел средств синхронизации.

При заборе балансов, возникает исключение на нул по переменным по субаккаунту. Похоже, не провел инициализацию. Есть идеи что не так?

Re: описание API для С++

Добавлено: 24 окт 2022, 09:46
ensh
Балансы, зло, расчитываются по позициям. Не нужны так то.
Наверно надо подписаться на субаккаунты, чтобы балансы могли считаться или что то доинициализировать там.

Re: описание API для С++

Добавлено: 26 окт 2022, 07:43
GVP
Не могу прорваться через получение идентификатора инструмента по наименованию тикера. Примеры в основной ветке не получилось реализовать.
int idFI = Core.DataStorageShared.GetIdFI(vTicker, "МБ ЦК");
Прошерстил хелперы и менеджеры. В топку. Наверно, не хватает навыка разбора библиотек или структуры ПО.

Заранее благодарю.

Re: описание API для С++

Добавлено: 27 окт 2022, 19:53
ensh
Там специальный механизм для этого))))
Грузится справочник интрументов, а потом инструменты миксируются с бордой.
Сам по себе тикер без борды (режима торгов) смысла не имеет.

Re: описание API для С++

Добавлено: 28 окт 2022, 12:53
ensh
Получение инструментов
смотреть InstrumentsTabControl

суть - создаем запрос с типом инструмента (акции, облиг, валюта, фьючи, опционы) и пустым или заполненым списком тикеров,
запускаем запрос и перехватываем ответ от фронтенда по типу ответа, и там список того, что запросили

Код: Выделить всё

         FrontEndConnection frontEndConnection;
         if (!ConnectionManager.Instance.FrontEnds.TryGetValue(FrontEndType.BirzArchAndMediaServer, out frontEndConnection))
         {
            return;
         }
         if (frontEndConnection.Status != ConnectionStatus.Authorized)
         {
            return;
         }
         _topVolumeInstrumetsRequest.RequestId = key.GetHashCode();
         _topVolumeInstrumetsRequest.ObjectGroup = objectGroup;
         _topVolumeInstrumetsRequest.NamePattern = search;
         frontEndConnection.NewPacket += (type, packet, time, newPacket) =>
         {
            Packer.UnpackEntityList<IADSerializable>(e =>
            {
               var topVolumeInstrumetsResponse = e as TopVolumeInstrumetsResponseEntity;
               if (topVolumeInstrumetsResponse == null)
               {
                  return true;
               }
               LastSearchList = _cacheTopInstruments.AddOrUpdate(topVolumeInstrumetsResponse.RequestId, topVolumeInstrumetsResponse.Instruments,
                  (i, ints) => topVolumeInstrumetsResponse.Instruments);
               return true;
            }, packet);
         };
         frontEndConnection.SendPacketToFrontEnd(_topVolumeInstrumetsRequest);

Re: описание API для С++

Добавлено: 28 окт 2022, 14:39
GVP
Огромное спасибо. Постараюсь тоже быть полезным