Разбирался с тестовым примером SampleAlfaDirect. Не приходят события связанные с Portfolio и как следствие не получается определить размер открытой позиции по инструменту на момент начала торгов. Стал смотреть код и вроде бы нашел причину. В файле AlfaTables.cs есть такая функция:
public string[] GetLocalDbData(string where = null)
{
if (where == null)
where = _filtered && _activeFilter.Any() ?
"paper_no in ({0})".Put(string.Join(",", _activeFilter)) : string.Empty;
var res = _ad.GetLocalDBData(Name, _strFields, where);
Log("GetLocalDbData {0}: {1}", where, res);
// сразу после старта терминала АД может вернуть null (баг в терминале)
return res == null ? ArrayHelper.Empty<string>() : res.ToRows();
}
причем сами разработчики написали, что баг в терминале присутствует.
Мне кажется, что проще поправить баг Вам, чем ждать пока его исправят разработчики АД.
Наверное есть смысл поставить "заплатку" и если возвращается пустой res сделать еще несколько попыток, например вот так
public string[] GetLocalDbData(string where = null)
{
if (where == null)
where = _filtered && _activeFilter.Any() ?
"paper_no in ({0})".Put(string.Join(",", _activeFilter)) : string.Empty;
var res = _ad.GetLocalDBData(Name, _strFields, where);
for (int i = 0; i < 10; i++)
{
if (res != null) break;
System.Threading.Thread.Sleep(500);
res = _ad.GetLocalDBData(Name, _strFields, where);
}
Log("GetLocalDbData {0}: {1}", where, res);
// сразу после старта терминала АД может вернуть null (баг в терминале)
return res == null ? ArrayHelper.Empty<string>() : res.ToRows();
}
Поправьте, please!)
Комментарии (9)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Заплатки - не наш путь.
Плохо! Так у Вас нерабочее ПО. Ваш пример тоже соответственно не работает. Я догадываюсь, что в платной версии у Вас этот баг исправлен?!)
Если вы внимательно прочитаете комментарий разработчика, то вы поймете, что все работает, но для этого необходимо провести настройку на компьютере.
Платной версии Альфа директа не существует. Как не существует и бесплатных версий платных коннекторов.
Ваш комментарий - // сразу после старта терминала АД может вернуть null (баг в терминале)
Значит надо вызывать не сразу после старта... Вы про это хотели сказать?!
Тогда у Вас некорректно написан тестовый пример!
Какие настройки надо произвести на компьютере?! Если это некоммерческая тайна конечно!))
Во первых успокойтесь. Во вторых что не так с примером по вашему.
Да я спокоен!) Кстати, Вы так и не ответили на мой вопрос!
Вы просто напишите прямо - "Мы не настоящий Open Source... Мы не выложили все исходники, без нас Вы их поправить не сможете... Мы специально немного запутали код, чтобы Вы нам платили за поддержку и покупали платную версию. "
И ни каких вопросов у меня не будет!))
Кстати, я абсолютно не против, чтобы Вы зарабатывали деньги, в том числе и на технической поддержке. Просто напишите об это прямо! А то так сидишь, с кодом ковыряешься и совсем непонятно, то ли сам дурак, то ли это специально сделано. Судя по тому, что тестовый пример не работает - специально.
Из - за того что тестовый пример для AlfaDirect не корректно работает, а также в целом проект компилируется с ошибками (StockSharp.Quik.Lua) - появляется отношение к проекту как к чему -то сырому и что использовать его в боевом режиме преждевременно.
Т.е. в Вашем замечательном продукте на который Вы потратили кучу сил и времени есть "ложка дегтя", от которой Вы избавиться не хотите! Подумайте на эту тему!
Это паранойя. Извините но дальше нет желания с вами общаться.
А в чем паранойя?! Напишите что-нибудь конкретное! Вам вопросы задаешь, Вы не отвечаете! Если я неправ, я извинюсь!