Гидра на CodePlex
Atom Ответить
11.09.2011


Так как Гидра теперь выложена со своими исходника в систему CodePlex, предлагаю всем неравнодушным к проекту помочь в развитие.

Навскидку видны следующие таски:


  1. (Сделано) Научить ее работать с SQL Lite, чтобы не требовалась сложная установка с Sql Server 2008.
  2. Авто обновление закаченных данных и структуры базы при новой версии.
  3. (Сделано) Научить Гидру работать со свечками. Закачивать из внешних источников, автоматически их создавать из тиков и т.д. Нужно для тех инструментов, для который просто не найти тики. Со стороны тестера S# такое можно поддержать.
  4. Сделать источники для западных площадок (IQFeed, ESignal).
  5. (Сделано) Научить Гидру сохранять не только тики и стаканы, а так же волатильность, открытый интерес.
  6. (Сделано) Выводить ошибки через MonitorWindow (переделав предварительно все логи на ILogSource).


Желающих прощу высказываться в этом топике.

Теги:


Спасибо:



Скидка 15% на все обучение до 5 апреля (осталось 3 дней).

77 Ответов
< 1 2 3 4  >
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 28.12.2011
Ответить


Graliur Перейти
Подправил CandlesCompressWindow - добавил метод ShowChart() для отображения графика свечей, и его вызов в CandlesCompressWindow.UpdateCandlesList().


На КодеПлексе уже?
Автор топика
Спасибо:

Graliur

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


Нет - пока на полку выложил
UPD: Я некорректно сформулировал - создал pending changes.
UPD: Делать Shelving на сервер?
UPD: Сделал Shelve
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 29.12.2011
Ответить


Graliur Перейти
https://translate.google.ru/translate?hl=ru&sl=en&tl=ru&u=http%3A%2F%2Fosdir.com%2Fml%2Fsqlite-users%2F2010-01%2Fmsg00151.html&anno=2


Из переписки я так понял, что по умолчанию СКЛайт не тридсейф. И нужно его пересобрать. Мда.
Автор топика
Спасибо:

Graliur

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


http://www.sqlite.org/threadsafe.html

Видимо SQLite нужно специально собирать для многопоточной модели и при использовании для каждого потока открывать свое соединение.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 29.12.2011
Ответить


Graliur Перейти
https://www.sqlite.org/threadsafe.html

Видимо SQLite нужно специально собирать для многопоточной модели и при использовании для каждого потока открывать свое соединение.


Самое интересное, что в Гидре идет работа идет в одном потоке с HydraStorage в один момент времени. А просто при запуске такая ошибка проявляется?
Автор топика
Спасибо:

Graliur

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


А Smart сейчас в Гидре работать должен? А то он у меня плагин загружать не хочет - ругается:

Цитата:
Гидра 17:14:26.2232990 System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileNotFoundException: Could not load file or assembly 'StockSharp.Smart, Version=4.0.12.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
at StockSharp.Hydra.Smart.SmartTraderSource.ApplySettings(MarketDataSourceSettings settings, Boolean isNew)
...
Спасибо:

Graliur

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


Первая ошибка 21 в SQLite вылезает при обращении к _storage.Exchanges.Count в конструкторе MainWindow:


Цитата:
Шаг с заходом: обход метода без символов "StockSharp.Algo.Storages.TradingStorage.Exchanges.get"
Шаг с заходом: обход метода без символов "Ecng.Serialization.RelationManyList<StockSharp.BusinessEntities.Exchange>.Count.get"
"Hydra.vshost.exe" (Управляемый (v4.0.30319)): Загружен "C:\Windows\Microsoft.Net\assembly\GAC_64\System.EnterpriseServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.dll"
"Hydra.vshost.exe" (Управляемый (v4.0.30319)): Загружен "C:\Windows\Microsoft.Net\assembly\GAC_64\System.EnterpriseServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.Wrapper.dll"
SQLite error (21): misuse at line 110832 of [a499ae3835]
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 29.12.2011
Ответить


Graliur Перейти
Первая ошибка 21 в SQLite вылезает при обращении к _storage.Exchanges.Count в конструкторе MainWindow:


Хм, так точно 1 поток - GUI.
Автор топика
Спасибо:

Alexander

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


Graliur Перейти
А Smart сейчас в Гидре работать должен? А то он у меня плагин загружать не хочет - ругается:

Цитата:
Гидра 17:14:26.2232990 System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileNotFoundException: Could not load file or assembly 'StockSharp.Smart, Version=4.0.12.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
at StockSharp.Hydra.Smart.SmartTraderSource.ApplySettings(MarketDataSourceSettings settings, Boolean isNew)
...


Гидра не работает со смарткомом под 64х, т.к. смартком - 32х.
Необходимо перекомпилировать не под AnyCPU, а под 32x.

В 4.0.13 будет фикс и мессадж бокс с ошибкой.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 29.12.2011
Ответить


Вы в С++ разбираетесь? http://system.data.sqlit...trunk/www/downloads.wiki В чем отличие bundle от static bundle?
Автор топика
Спасибо:

Graliur

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


Отличие между static bundle и bundle релизами SQLite в типе линковки библиотеки The Visual C++ 2008 SP1/2010 runtime, например:
- в sqlite-netFx35-static-binary-bundle-Win32-2008-1.0.77.0.zip:
Цитата:
The Visual C++ 2008 SP1 runtime for x86 is statically linked.

- в sqlite-netFx35-setup-bundle-x86-2008-1.0.77.0.exe :
Цитата:
The Visual C++ 2008 SP1 runtime for x86 is included.

В общем случае далеко не всегда можно использовать статическую и динамическую линковку для одного и того же проекта - это связано с тем, что линковщик может не понять какую динамическую или статическую библиотеку грузить в случае совпадающих имен переменных/функций/классов/пространств имен.
Для Stock# я бы использовал вариант с динамической библиотекой без префикса static.

upd: корректнее будет сказать, что различные по версии библиотеки могут иметь одинаковые имена переменных/функций/классов/пространств имен. Так как линковщик C++ не проверяет версий и в основном отдает предпочтение динамическим библиотекам, то в проектах со статически прилинкованными библиотеками могут быть функции с одинаковыми названиями и разными функциональными частями.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 29.12.2011
Ответить


Graliur Перейти
upd: корректнее будет сказать, что различные по версии библиотеки могут иметь одинаковые имена переменных/функций/классов/пространств имен. Так как линковщик C++ не проверяет версий и в основном отдает предпочтение динамическим библиотекам, то в проектах со статически прилинкованными библиотеками могут быть функции с одинаковыми названиями и разными функциональными частями.


C++ Runtime всегда есть на машине или он когда то может отсутствовать?
Автор топика
Спасибо:

Graliur

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


Visual Studio runtime может отсутствовать, но его всегда можно бесплатно скачать с сайта Microsoft.
Спасибо:

Graliur

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


Сегодня весь вечер сражался со SmartCom'ом(v2.2) - Гидра инструменты из него получает, а котировки получить не может, ругается в вывод visual studio:
Цитата:
Первый этап обработки исключения типа "System.ComponentModel.Win32Exception" в приложении System.dll
Первый этап обработки исключения типа "System.NullReferenceException" в приложении StockSharp.Smart.dll
...
Первый этап обработки исключения типа "System.Runtime.InteropServices.COMException" в приложении StockSharp.Smart.dll
...
Первый этап обработки исключения типа "System.NullReferenceException" в приложении StockSharp.Smart.dll

Настройки плагина Smart:
Спасибо:

Alexander

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


Полный Stack Trace покажите.
Система x64 или x86?

Если x64 - то дело в этом, смартком только под x86 работает.
Спасибо:

Graliur

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


Сегодня с помощью Reflector'а добрался до места первого появления ошибки SQLite 21. Ошибка появляется при 2-м вызове метода DatabaseProvider.CreateConnection сразу после выполнения первой строчки кода :
Цитата:
DbConnection connection = this.Factory.CreateConnection();

Распечатка стека:
stackTrace.txt 12KB (0)
Спасибо:

Graliur

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


Получить котировки через SmartCOM так и не удалось. Откомпилировал все проекты Гидры под x86, получил список инструментов через SmartCom. При запуске импорта котировок программа вызывает исключение, описание исключения и stacktrace из логов :
log_2012_01_02.txt 5,2KB (0)
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 01.01.2012
Ответить


Graliur Перейти
Сегодня с помощью Reflector'а добрался до места первого появления ошибки SQLite 21. Ошибка появляется при 2-м вызове метода DatabaseProvider.CreateConnection сразу после выполнения первой строчки кода :
Цитата:
DbConnection connection = this.Factory.CreateConnection();

Распечатка стека:


Стек трейс только подтверждает, что никакого другого потока нет. Могу дать исходники Ecng для продолжения инвестигейшена.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 01.01.2012
Ответить


Graliur Перейти
Получить котировки через SmartCOM так и не удалось. Откомпилировал все проекты Гидры под x86, получил список инструментов через SmartCom. При запуске импорта котировок программа вызывает исключение, описание исключения и stacktrace из логов :


Все просто. SmartTrader сделан так, что при старте он грохает процесс со СмартКом. Это сделано из-за особенностей последнего к зависанию. Пути два, или выключить в Гидре эту особенность, или дать побольше прав Гидре.

Сообщение Oops, data manager call failed.. меня просто убило. По такому сообщению сразу можно определить возрастной уровень создателей.

upd. Посмотрел код SmartTrader.OnConnected

Код
protected override void OnConnect()
{
	try
	{
		KillSmartComProcess();
	}
	catch (Exception ex)
	{
		RaiseProcessDataError(ex);
	}

	Wrapper.Connect();
}


Так что эта ошибка не должна влиять работоспособность. Почему падает дальше - СмартКом новый? Сервер боевой? Может там что выключили до 3-го?
Автор топика
Спасибо:

Graliur

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


Мне кажется c 21-ой ошибкой именно очередность операций соединения и запросов к базе данных играет роль. Так как SQLite выдает эту ошибку приблизительно на каждый второй вызов DatabaseProvider.CreateConnection. Исходники конечно помогли бы в дальнейших изысканиях - в Reflector'е приходится через кракозябры вместо осмысленных имен пробираться.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 01.01.2012
Ответить


Graliur Перейти
Мне кажется c 21-ой ошибкой именно очередность операций соединения и запросов к базе данных играет роль. Так как SQLite выдает эту ошибку приблизительно на каждый второй вызов DatabaseProvider.CreateConnection. Исходники конечно помогли бы в дальнейших изысканиях - в Reflector'е приходится через кракозябры вместо осмысленных имен пробираться.


Исходники обфусцированы только у СтокШарп и их я могу дать только за особые заслугиSmile А вот ецнг с легкость. Могу подключить к TFS. Или по почте архивом. Как проще?
Автор топика
Спасибо:

Graliur

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


Лучше,наверное, к TFS - возможно еще чего подправить смогу ;) Ведь идеология с полками там тоже работает?
Спасибо:

Graliur

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


SmartCom версии 2.2, сервер демо, но вроде боеспособный - SmartX с ним работает. Сейчас попробовал запустить Гидру от Администратора - котировки опять через SmartCom не пошли, но уже без Ooops'ов в логах:

upd. Может действительно во времени дело, так как новые инструменты через SmartCom, судя по логам, он получает. С другой стороны запись
Цитата:
Smart 02:51:47.7616877 System.ArgumentException: Минимальный шаг цены 2 не соответствует самой цене 99,14.
Parameter name: minStepSize

меня несколько удивляет - минимального шага цены 2 я нигде не указывал, видимо что-то не так срабатывает по умолчанию.
log_2012_01_02.txt 147,1KB (0)
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 01.01.2012
Ответить


Graliur Перейти
SmartCom версии 2.2, сервер демо, но вроде боеспособный - SmartX с ним работает.


Начнем с простого - с SampleSmart.
Автор топика
Спасибо:

Graliur

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


SampleSmart Подключается и получает список инструментов, портфели. Торговля сейчас не идет, поэтому оценить работоспособность остальных функций проблематично. При нажатии клавиши "Вид-Оффер" в окне Инструменты выпадает с ошибкой:

ссылка на картинку: http://saveimg.ru/show-i...bb0ebfa6caf5f76f34b05127


UPD: Указанное поведение с ошибкой проявлялось только на инструменте "Аэрофлот", на Фьючерсе RTS-3.12 окно просто не выводится, но текущий стакан отображается. Скорее всего дело в неторговом времени.4-го числа еще раз проверю.
Спасибо:
< 1 2 3 4  >

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

loading
clippy