HydraServer - получение списка инструментов
Atom
24.07.2017


Добрый день!

Не получается получить список инструментов из Гидры через HydraServer.
Пример, взятый из официальной документации (http://doc.stocksharp.ru/html/f...64-9b01-18117183cc7a.htm) не работает.
Вот он:
Code

var storageRegistry = new StorageRegistry();
client.Refresh(storageRegistry.GetSecurityStorage(), new Security(), s => { }, () => false);
var allSecurity = storageRegistry.GetSecurityStorage().Lookup(new Security());

А именно: в примере не совпадает количество параметров, которое реальное требуется в client.Refresh. В примере их 4, а нужно 5.

Пробую свой код, вот такой:
Code

var imnis = new InMemoryNativeIdStorage(); //не понимаю, что это такое, но переменную данного типа надо передать, чтобы программа скомпилировалась
var storageRegistry = new StorageRegistry();
client.Refresh(
storageRegistry.GetSecurityStorage(),
imnis,
new Security(),
s => { },
() => false);
var allSecurity = storageRegistry.GetSecurityStorage().Lookup(new Security());

Этот код тоже не работает - в allSecurity ничего не передается (0 элементов),
хотя в client.AvailableSecurities есть элементы, и я могу их получить так
var securityIds = new List<SecurityId>(client.AvailableSecurities);

Подскажите пожалуйста, как все-таки получить все инструменты из Гидры?
Спасибо!

Теги:


Спасибо:



Скидка 10% на все обучение до 22 октября (осталось 2 дней).

13 Ответов
Support

Фотография
Дата: 25.07.2017
Ответить


В Гидре при этом что-то пишется в лог? Есть ли ошибки на клиентской стороне?
Спасибо:

Simen

Фотография
Курсы
Дата: 25.07.2017
Ответить


В логе Гидры ошибок нет:

Создание для юзера...,
Поиск инструментов,
Получение инструментов.
222.jpg (0)
Автор топика
Спасибо:

Support

Фотография
Дата: 25.07.2017
Ответить


Отслеживайте обработчик s => { }
Спасибо:

Simen

Фотография
Курсы
Дата: 25.07.2017
Ответить


Я не понимаю, что это значит и как его отслеживать.
Можно работающий пример?
Автор топика
Спасибо:

Support

Фотография
Дата: 25.07.2017
Ответить


Code
var imnis = new InMemoryNativeIdStorage(); //не понимаю, что это такое, но переменную данного типа надо передать, чтобы программа скомпилировалась
var storageRegistry = new StorageRegistry();
client.Refresh(
storageRegistry.GetSecurityStorage(),
imnis,
new Security(),
s => Console.WriteLine(s.Id),
() => false);
var allSecurity = storageRegistry.GetSecurityStorage().Lookup(new Security());
Спасибо:

Simen

Фотография
Курсы
Дата: 25.07.2017
Ответить


Спасибо, но, к сожалению, все равно не работает.
Вот полный код программы:


До черты должен выводиться список всех инструментов, но он пуст.
А после черты- проверка, что инструменты все-таки присутствуют в хранилище.
У меня результат выглядит как на картинке.
Автор топика
Спасибо:

Support

Фотография
Дата: 26.07.2017
Ответить


У вас выводится 1 инструмент.
Спасибо:

Simen

Фотография
Курсы
Дата: 26.07.2017
Ответить


Разумеется выводится, я специально сделал этот вывод, чтобы показать, что инструмент существует.
НО! Это вывод через переменную типа RemoteStorageClient, которая предназначена только для коннекта и с которой нельзя дальше работать.
А вот через переменную типа StorageRegistry ничего не выводится. Хотя именно она предназначена для дальнейшей работы с данными.

Пожалуйста покажите, как мне получить список инструментов через StorageRegistry.
Как мне их поместить в переменную allSecurity?
Автор топика
Спасибо:

Simen

Фотография
Курсы
Дата: 28.07.2017
Ответить


Добрый день!
Решением моего вопроса кто-нибудь занимается?
Автор топика
Спасибо:

Support

Фотография
Дата: 28.07.2017
Ответить


Да, занимаемся.
Спасибо:

Support

Фотография
Дата: 31.07.2017
Ответить


В документации 4 параметра, так как в последнем релизе их 4. Обновите API.

Спасибо: Simen

Иван З.

Фотография
Курсы Автор статей
Дата: 31.07.2017
Ответить


На версии 4.3.25 у меня все работает как описано в документации. Полный код


1) В первый раз он получает инструменты достаточно долго, если у вас много инструментов то может занять минут 5 или больше. При последующих подключениях практически сразу. Если у вас в гидре периодически появляется сообщение
Quote:
HydraServer 07/31/2017 23:19:34 +10:00 Info Сессия 484f979e-6806-4d6e-84d5-52f1da98ba10. Получение инструментов.

Все хорошо, просто подождите еще минут 5, вы на правильном пути.
2) Возможно у вас старая версия API или Гидры.
3) Вы не настроили Гидру. В примере документации подключение к локальному юзеру. Как настроить описано тут http://doc.stocksharp.ru...e-b7f4-059be0438894.htm
У меня 4 параметра тоже, от куда вы взяли 5...
Спасибо: Simen

Simen

Фотография
Курсы
Дата: 01.08.2017
Ответить


Да, спасибо, обновление API помогло.
Теперь действительно 4 параметра и пример из справки компилируется и работает!
Автор топика
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy