FullOrderLog не работает с RevisionManager?
Atom Ответить
30.08.2012


Обнаружил, что в примере SampleGUI (версия 4.1.3) в RevisionManager не добавлена таблица TableRegistry.AnonymousOrdersLog, очень странно, учитывая какой обьем данных идет через эту таблицу. Сам добавил, не работает, пример вылетает со странными ошибками. Пробовал в своего робота запилить, та же история.

Теги:


Спасибо:




16 Ответов
Alexander

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


Может стоит ошибки указать с каким-то логом?
А то догадаться что за странные ошибки повылетали у вас не удалось.
Спасибо:

FiNick

Фотография
Благотворитель
Дата: 30.08.2012
Ответить


SampleGUI, файл MainWindow.xaml.cs в строке 159 (+-1):
Trader.ProcessDataError += error => this.GuiAsync(() => MessageBox.Show(this, error.ToString(), "Ошибка обработки данных"));
на этой строке вылетает ошибка "An unhandled exception of type 'System.StackOverflowException' occurred in mscorlib.dll"
А иногда тупо падает svchost.

Предлагаю в примере в код:
Код
if (IsOrderLog.IsChecked == true)
	{
		Trader.Tables.Add(Trader.TableRegistry.AnonymousOrdersLog);
		Trader.CreateDepthFromOrdersLog = true;
	}

добавить строку revisionManager.Tables.Add(Trader.TableRegistry.AnonymousOrdersLog); и посмотреть что получится.
Автор топика
Спасибо:

Mikhail Sukhov

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


FiNick Перейти
добавить строку revisionManager.Tables.Add(Trader.TableRegistry.AnonymousOrdersLog); и посмотреть что получится.


У меня работает.
Спасибо:

FiNick

Фотография
Благотворитель
Дата: 30.08.2012
Ответить


Mikhail Sukhov Перейти
FiNick Перейти
добавить строку revisionManager.Tables.Add(Trader.TableRegistry.AnonymousOrdersLog); и посмотреть что получится.


У меня работает.


Очень странно. Тогда залей этот вариант SampleGUI на codeplex, я скачаю и еще раз попробую запустить
Автор топика
Спасибо:

Mikhail Sukhov

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


FiNick Перейти
Mikhail Sukhov Перейти
FiNick Перейти
добавить строку revisionManager.Tables.Add(Trader.TableRegistry.AnonymousOrdersLog); и посмотреть что получится.


У меня работает.


Очень странно. Тогда залей этот вариант SampleGUI на codeplex, я скачаю и еще раз попробую запустить


Это то, что залито. Добавил всего одну строчку.
Спасибо:

FiNick

Фотография
Благотворитель
Дата: 31.08.2012
Ответить


Короче, провожу такой эксперимент:
Добавляю AnonymousOrdersLog в revisionManager, удаляю файлы ревизий, запускаю, все работает нормально, стакан строится, появляются новые файлы ревизий.
Отключаюсь, перезапускаю приложение.
Ставлю брейкпоинт на событие Trader.ProcessDataError, подключаюсь, сыпется куча ошибок типа:

Котировка для заданной цены не была найдена.
Parameter name: price
Actual value was 33157.

а также

Объем котировки Бид 15564 1 меньше требуемого объёма для удаления.
Parameter name: volume
Actual value was 3.

все это в

at StockSharp.BusinessEntities.MarketDepth.Remove(OrderDirections direction, Decimal price, Decimal volume, DateTime lastChangeTime)
at StockSharp.Algo.OrderLogMarketDepthBuilder.Update(OrderLogItem item)
at StockSharp.Algo.OrderLogHelper.Update(MarketDepth depth, OrderLogItem item)


UPD. Скачал с codeplex последнюю версию stocksharp-18932, проверил примеры с dev и trunk, та же фигня.
Такое ощущение, что прога пытается смёржить ордерлог получаемый по сохраненным ревизиям со старыми стаканами (которые у меня не сохраняются?) и потому возникают ошибки.
Автор топика
Спасибо:

FiNick

Фотография
Благотворитель
Дата: 04.09.2012
Ответить


Есть идеи?

Может все таки зальем revisionManager.Tables.Add(Trader.TableRegistry.AnonymousOrdersLog); в релизный и trunk пример SampleGUI? Тогда больше народу смогут сказать работает или нет.
Я вот из-за этой проблемы тупо не могу использовать OrderLog (за который 4тыщи в месяц плачу), потому что если в середине дня у меня робот отвалится, то при перезапуске он будет стартовать целый час, пока весь ордер лог с прошлой вечерки подгрузит=(
Более того, из-за подключенного ордерлога мне обычные стаканы не шлются, я теперь вообще без стаканов вынужден играть
Автор топика
Спасибо:

Mikhail Sukhov

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


FiNick Перейти
Есть идеи?


Неправильно понимаете, что такое ОЛ и как из него получаются стаканы.
Спасибо:

FiNick

Фотография
Благотворитель
Дата: 04.09.2012
Ответить


Mikhail Sukhov Перейти
FiNick Перейти
Есть идеи?


Неправильно понимаете, что такое ОЛ и как из него получаются стаканы.


Да вроде понимаю неплохо. Ордерлог - последовательность постановок/снятий/исполнений ордеров. Эти данные агрегируются в стаканы. Стакан в текущий момент времени может зависеть от ордерлог итемов пришедших еще на прошлой вечерке, потому "нельзя просто так взять и"(с) запихать AnonymousOrdersLog в ревижнменеджер. Нужно как-то запоминать состояние стакана вместе с ревизией, чтобы потом можно было стартовать с последней ревизии и все корректно мёржилось. И, я так понял, это все реализовано, раз у вас все хорошо работает.
Собственно, вопрос номер раз: почему у меня не работает в точности та же программа, что у вас работает?
Вопрос номер два: у меня ли одного не работает, может просто никто больше не проверил?
Отсюда просьба залить изменения в пример, чтобы я и другие смогли проверить.
Автор топика
Спасибо:

Garic

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


FiNick Перейти
Нужно как-то запоминать состояние стакана вместе с ревизией, чтобы потом можно было стартовать с последней ревизии и все корректно мёржилось. И, я так понял, это все реализовано, раз у вас все хорошо работает.


Не нужно ничего запоминать, оно транслируется раз в 2 минуты. Дока по плазе - "Особенности использования шлюза" -> восстановление и поздний вход.

Не уверен, но помоему такой поздний старт со снапшота не реализован в S#.
Спасибо:

Mikhail Sukhov

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


Garic Перейти
Не уверен, но помоему такой поздний старт со снапшота не реализован в S#.


Не сделано. Пока решаем более приоритетные задачи. Но в планах стоит.
Спасибо:

FiNick

Фотография
Благотворитель
Дата: 05.09.2012
Ответить


То есть сейчас быстро стартовать с подключенным ордер логом нельзя?
У меня вот "медленный" старт под конец дня около 1-1.5 часа занимает, при чем GUI подвисает на все это время, это ппц
Автор топика
Спасибо:

Alexander

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


FiNick Перейти
при чем GUI подвисает на все это время, это ппц


Запрограммируйте так, чтоб не подвисал. Или вы принципиально все расчёты делаете в гуёвом треде?

Спасибо:

FiNick

Фотография
Благотворитель
Дата: 05.09.2012
Ответить


Цитата:
Запрограммируйте так, чтоб не подвисал. Или вы принципиально все расчёты делаете в гуёвом треде?

Я пока так не умею=) Я могу запустить одну функцию в другом потоке, но сделать так чтобы сам обьект plazaTrader и все обработчики его событий работали автоматически в другом потоке не могу. Но проблема не в этом. Проблема в том, что стакан придет в актуальное состояние только через час-полтора, пока по сети загрузятся все данные ордерлога, а это пару гигабайт.
Автор топика
Спасибо:

Mikhail Sukhov

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


FiNick Перейти

Я пока так не умею=) Я могу запустить одну функцию в другом потоке, но сделать так чтобы сам обьект plazaTrader и все обработчики его событий работали автоматически в другом потоке не могу. Но проблема не в этом. Проблема в том, что стакан придет в актуальное состояние только через час-полтора, пока по сети загрузятся все данные ордерлога, а это пару гигабайт.


1. В ГУИ у вас дружбы нет, и вы его неправильно пишите без относительно ОЛ это или нет.
2. Про снэпшот в ОЛ я писал, что есть такая задача. Стоит. Но так как людей, кто им пользуется мало, то не самая первоочередная задача.
Спасибо:

FiNick

Фотография
Благотворитель
Дата: 05.09.2012
Ответить


Ок, будем ждать)
Автор топика
Спасибо:


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

loading
clippy