← Назад

Обновил сборки до S# 3.1

В основном с decimal заменял места. Еще поправил ссылки у проектного файла (они указывали в bin\Debug)

Комментарии (22)

Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий

aspirant
aspirant

Mikhail Sukhov: В основном с decimal заменял места То есть теперь вместо Decimal, Double? Я вроде так сейчас менял в PlazaTrader'е?

Еще: 3.1 есть пока только бета? На www.box.net нашел только ее?

Mikhail Sukhov
Mikhail Sukhov Автор

aspirant:

Mikhail Sukhov: В основном с decimal заменял места То есть теперь вместо Decimal, Double? Я вроде так сейчас менял в PlazaTrader'е?

Все в точности до наоборот. Ты видимо не обновил References папку. Поэтому переделал обратно.🙂

aspirant: Еще: 3.1 есть пока только бета? На www.box.net нашел только ее?

Да пока в бете. Поинт был в том, чтобы обновить контрактную(=интерфейсную) информацию, плюс другие шлюзы уже по 3.x разрабатываются.

aspirant
aspirant

Mikhail Sukhov: Все в точности до наоборот. Ты видимо не обновил References папку. Поэтому переделал обратно.🙂

Что-то у меня какая-то хрень: в папке References ссылки на папку с исходниками, которые я сам скачивал (3.0.19)? Это правильно? Похоже нет, потому что в PlazaTrader'е все в double и проект компилится без ошибок🤨

Mikhail Sukhov
Mikhail Sukhov Автор

aspirant: в папке References ссылки на папку с исходниками

Под папкой References что ты подразумеваешь? Я говорю про физическую папку, что на диске. И что обновляется через TFS.

aspirant
aspirant

Mikhail Sukhov:

aspirant: в папке References ссылки на папку с исходниками

Под папкой References что ты подразумеваешь? Я говорю про физическую папку, что на диске. И что обновляется через TFS.

Все, разобрался. В PlazaTrader'е исправил ошибки с double. Жду с нетерпением понедельника, чтобы потестить стаканы🙂

Mikhail Sukhov
Mikhail Sukhov Автор

aspirant: Все, разобрался. В PlazaTrader'е исправил ошибки с double. Жду с нетерпением понедельника, чтобы потестить стаканы🙂

Обновился сегодня до последней тестовой версии. Там порт уже 4001 а не 3001. Исправил пример. Но экспорт данных не идет. У тебя работает?

Mikhail Sukhov
Mikhail Sukhov Автор

Mikhail Sukhov:

aspirant: Все, разобрался. В PlazaTrader'е исправил ошибки с double. Жду с нетерпением понедельника, чтобы потестить стаканы🙂

Обновился сегодня до последней тестовой версии. Там порт уже 4001 а не 3001. Исправил пример. Но экспорт данных не идет. У тебя работает?

Зачем нужна такая конструкция?

ThreadPool.QueueUserWorkItem(s =>
{
	//WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _futuresSessionOnline, _optionQuotesOnline, _optionSessionOnline });
	WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _optionQuotesOnline });
aspirant
aspirant

Mikhail Sukhov: Обновился сегодня до последней тестовой версии. Там порт уже 4001 а не 3001. Исправил пример. Но экспорт данных не идет. У тебя работает?

4001 - это рабочий порт. Правь на 3001 - у меня все приходит.

Mikhail Sukhov
Mikhail Sukhov Автор

aspirant:

Mikhail Sukhov: Обновился сегодня до последней тестовой версии. Там порт уже 4001 а не 3001. Исправил пример. Но экспорт данных не идет. У тебя работает?

4001 - это рабочий порт. Правь на 3001 - у меня все приходит.

В client_rounter.ini что написано? Какой порт?

aspirant
aspirant

Mikhail Sukhov: Зачем нужна такая конструкция?

ThreadPool.QueueUserWorkItem(s => { //WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _futuresSessionOnline, _optionQuotesOnline, _optionSessionOnline }); WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _optionQuotesOnline });


Ты имеешь в виду, зачем запускать этот кусок в  отдельном потоке?
aspirant
aspirant

Mikhail Sukhov: В client_rounter.ini что написано? Какой порт?

; TCP-порт, на котором слушает роутер
;port=4001
port=3001

Правил сам

Mikhail Sukhov
Mikhail Sukhov Автор

aspirant:

Mikhail Sukhov: В client_rounter.ini что написано? Какой порт?

; TCP-порт, на котором слушает роутер ;port=4001 port=3001

> 
> Правил сам

Тоесть, значение по умолчанию 4001? А в чем смысл тогда было исправить на 3001?
aspirant
aspirant

Mikhail Sukhov: Тоесть, значение по умолчанию 4001? А в чем смысл тогда было исправить на 3001?

Чтобы работало🙂. У тебя там дальше вот так?

[ROUTEINFO]
; настройка соединений роутера с вышестоящими серверами.
; формат строки: {default|direct} = {ip-адрес | имя FQDN}:{номер порта}
; Должно быть одно дефолтное соединение и может быть от нуля до нескольких директных.
; Об адресах, на котрорые можно и нужно устанавливать дефолтные и директные соединения, проконсультируйтесь
; со службой тех. поддержки!!! В дистрибутиве указана рекомендуемая настройка для соединения с пулом серверов РТС.
;default=p2forts.rts.ru:4001
default=beta-forts.rts.ru:3001

Тоже правил сам.

Mikhail Sukhov
Mikhail Sukhov Автор

aspirant:

Mikhail Sukhov: Тоесть, значение по умолчанию 4001? А в чем смысл тогда было исправить на 3001?

Чтобы работало🙂. У тебя там дальше вот так?

У меня работает и с 4001 и с 3001. Может оставим тот, который по умолчанию после установки идет?

Mikhail Sukhov
Mikhail Sukhov Автор

aspirant:

Mikhail Sukhov: Зачем нужна такая конструкция?

ThreadPool.QueueUserWorkItem(s => { //WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _futuresSessionOnline, _optionQuotesOnline, _optionSessionOnline }); WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _optionQuotesOnline });

> 
> Ты имеешь в виду, зачем запускать этот кусок в  отдельном потоке?

Не увидел твоего ответа... Зачем вообще нужны WaintHandle-ы? Что блокируется и для чего?
Mikhail Sukhov
Mikhail Sukhov Автор

Mikhail Sukhov:

aspirant:

Mikhail Sukhov: Зачем нужна такая конструкция?

ThreadPool.QueueUserWorkItem(s => { //WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _futuresSessionOnline, _optionQuotesOnline, _optionSessionOnline }); WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _optionQuotesOnline });

> >
> > Ты имеешь в виду, зачем запускать этот кусок в  отдельном потоке?
> 
> Не увидел твоего ответа... Зачем вообще нужны WaintHandle-ы? Что блокируется и для чего?

Ок, раз никто не знает, можно удалять?😂 
aspirant
aspirant

Mikhail Sukhov:

Mikhail Sukhov:

aspirant:

Mikhail Sukhov: Зачем нужна такая конструкция?

ThreadPool.QueueUserWorkItem(s => { //WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _futuresSessionOnline, _optionQuotesOnline, _optionSessionOnline }); WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _optionQuotesOnline });

> > >
> > > Ты имеешь в виду, зачем запускать этот кусок в  отдельном потоке?
> >
> > Не увидел твоего ответа... Зачем вообще нужны WaintHandle-ы? Что блокируется и для чего?
> 
> Ок, раз никто не знает, можно удалять?😂

Извини, выпал из процесса на несколько дней и пропустил твое предыдущее сообщение.  Вот [здесь](http://stocksharp.com/posts/m/7245/) вы со skuvv'ом писали, что сначала нужно скачать инструменты, а уже потом запускать остальные системные потоки.  Именно из-за этого мы ждем, пока не скачается вся информация по инструментам, после чего потоки инструментов перейдут в состояние TDataStreamState.DS_STATE_ONLINE (см. методы OnFuturesQuotesStreamStateChanged / OnOptionQuotesStreamStateChanged), после чего сигнализуруем, что можно запускать остальные потоки.
Mikhail Sukhov
Mikhail Sukhov Автор

aspirant: Извини, выпал из процесса на несколько дней и пропустил твое предыдущее сообщение. Вот здесь вы со skuvv'ом писали, что сначала нужно скачать инструменты, а уже потом запускать остальные системные потоки. Именно из-за этого мы ждем, пока не скачается вся информация по инструментам, после чего потоки инструментов перейдут в состояние TDataStreamState.DS_STATE_ONLINE (см. методы OnFuturesQuotesStreamStateChanged / OnOptionQuotesStreamStateChanged), после чего сигнализуруем, что можно запускать остальные потоки.

Понял. Тогда я это удаляю. Оно не нужно, так как теперь используется метод BaseTrader.ProcessSecurityAction.

Mikhail Sukhov
Mikhail Sukhov Автор

Mikhail Sukhov:

aspirant: Извини, выпал из процесса на несколько дней и пропустил твое предыдущее сообщение. Вот здесь вы со skuvv'ом писали, что сначала нужно скачать инструменты, а уже потом запускать остальные системные потоки. Именно из-за этого мы ждем, пока не скачается вся информация по инструментам, после чего потоки инструментов перейдут в состояние TDataStreamState.DS_STATE_ONLINE (см. методы OnFuturesQuotesStreamStateChanged / OnOptionQuotesStreamStateChanged), после чего сигнализуруем, что можно запускать остальные потоки.

Понял. Тогда я это удаляю. Оно не нужно, так как теперь используется метод BaseTrader.ProcessSecurityAction.

За одно вынес все потоки в класс PlazaListenerRegistry. Во время переноса увидел, что потоки в классе PlazaTrader дублируют те, что есть в PlazaListenerRegistry. Первые убрал в пользу вторых. Если юзер коду нужно будет получать данные из основных потоков, пусть подписывается на те же самые события класса PlazaListener, что и PlazaTrader.

aspirant
aspirant

Mikhail Sukhov: Понял. Тогда я это удаляю. Оно не нужно, так как теперь используется метод BaseTrader.ProcessSecurityAction. OK, понятно.

Mikhail Sukhov: Если юзер коду нужно будет получать данные из основных потоков, пусть подписывается на те же самые события класса PlazaListener, что и PlazaTrader.

Я думал о таком объединении потоков. Решил сделать раздельно, потому, если пользователь запустит в своем обработчике событий некое длительное действие, то застопорится получение системной информации, до тех пор пока не завершится клиентский обработчик событий. А в нашем случае речь идет о миллисекундах. Или я усложняю?

Mikhail Sukhov
Mikhail Sukhov Автор

aspirant: Я думал о таком объединении потоков. Решил сделать раздельно, потому, если пользователь запустит в своем обработчике событий некое длительное действие, то застопорится получение системной информации, до тех пор пока не завершится клиентский обработчик событий. А в нашем случае речь идет о миллисекундах. Или я усложняю?

Сам себе злобный буратино. А так его можно использовать для логирования данных. Тогда можно четко сказать - да, вот эти данные были, и они были обработаны так и так. А если они идут из разных потоков, то тогда будет сложно понять, что есть что.

aspirant
aspirant

Mikhail Sukhov: А так его можно использовать для логирования данных. Тогда можно четко сказать - да, вот эти данные были, и они были обработаны так и так. А если они идут из разных потоков, то тогда будет сложно понять, что есть что. OK, если что, потом снова разделим.