Mikhail Sukhov:
Все в точности до наоборот. Ты видимо не обновил References папку. Поэтому переделал обратно.🙂
Что-то у меня какая-то хрень: в папке References ссылки на папку с исходниками, которые я сам скачивал (3.0.19)? Это правильно? Похоже нет, потому что в PlazaTrader'е все в double и проект компилится без ошибок🤨
Mikhail Sukhov:
Обновился сегодня до последней тестовой версии. Там порт уже 4001 а не 3001. Исправил пример. Но экспорт данных не идет. У тебя работает?
4001 - это рабочий порт. Правь на 3001 - у меня все приходит.
Mikhail Sukhov:
Обновился сегодня до последней тестовой версии. Там порт уже 4001 а не 3001. Исправил пример. Но экспорт данных не идет. У тебя работает?
4001 - это рабочий порт. Правь на 3001 - у меня все приходит.
Mikhail Sukhov:
Тоесть, значение по умолчанию 4001? А в чем смысл тогда было исправить на 3001?
Чтобы работало🙂. У тебя там дальше вот так?
[ROUTEINFO]
; настройка соединений роутера с вышестоящими серверами.
; формат строки: {default|direct} = {ip-адрес | имя FQDN}:{номер порта}
; Должно быть одно дефолтное соединение и может быть от нуля до нескольких директных.
; Об адресах, на котрорые можно и нужно устанавливать дефолтные и директные соединения, проконсультируйтесь
; со службой тех. поддержки!!! В дистрибутиве указана рекомендуемая настройка для соединения с пулом серверов РТС.
;default=p2forts.rts.ru:4001
default=beta-forts.rts.ru:3001
>
> Ты имеешь в виду, зачем запускать этот кусок в отдельном потоке?
Не увидел твоего ответа... Зачем вообще нужны WaintHandle-ы? Что блокируется и для чего?
> >
> > Ты имеешь в виду, зачем запускать этот кусок в отдельном потоке?
>
> Не увидел твоего ответа... Зачем вообще нужны WaintHandle-ы? Что блокируется и для чего?
Ок, раз никто не знает, можно удалять?😂
> > >
> > > Ты имеешь в виду, зачем запускать этот кусок в отдельном потоке?
> >
> > Не увидел твоего ответа... Зачем вообще нужны WaintHandle-ы? Что блокируется и для чего?
>
> Ок, раз никто не знает, можно удалять?😂
Извини, выпал из процесса на несколько дней и пропустил твое предыдущее сообщение. Вот [здесь](http://stocksharp.com/posts/m/7245/) вы со skuvv'ом писали, что сначала нужно скачать инструменты, а уже потом запускать остальные системные потоки. Именно из-за этого мы ждем, пока не скачается вся информация по инструментам, после чего потоки инструментов перейдут в состояние TDataStreamState.DS_STATE_ONLINE (см. методы OnFuturesQuotesStreamStateChanged / OnOptionQuotesStreamStateChanged), после чего сигнализуруем, что можно запускать остальные потоки.
aspirant:
Извини, выпал из процесса на несколько дней и пропустил твое предыдущее сообщение. Вот здесь вы со skuvv'ом писали, что сначала нужно скачать инструменты, а уже потом запускать остальные системные потоки. Именно из-за этого мы ждем, пока не скачается вся информация по инструментам, после чего потоки инструментов перейдут в состояние TDataStreamState.DS_STATE_ONLINE (см. методы OnFuturesQuotesStreamStateChanged / OnOptionQuotesStreamStateChanged), после чего сигнализуруем, что можно запускать остальные потоки.
aspirant:
Извини, выпал из процесса на несколько дней и пропустил твое предыдущее сообщение. Вот здесь вы со skuvv'ом писали, что сначала нужно скачать инструменты, а уже потом запускать остальные системные потоки. Именно из-за этого мы ждем, пока не скачается вся информация по инструментам, после чего потоки инструментов перейдут в состояние TDataStreamState.DS_STATE_ONLINE (см. методы OnFuturesQuotesStreamStateChanged / OnOptionQuotesStreamStateChanged), после чего сигнализуруем, что можно запускать остальные потоки.
За одно вынес все потоки в класс PlazaListenerRegistry. Во время переноса увидел, что потоки в классе PlazaTrader дублируют те, что есть в PlazaListenerRegistry. Первые убрал в пользу вторых. Если юзер коду нужно будет получать данные из основных потоков, пусть подписывается на те же самые события класса PlazaListener, что и PlazaTrader.
Mikhail Sukhov:
Если юзер коду нужно будет получать данные из основных потоков, пусть подписывается на те же самые события класса PlazaListener, что и PlazaTrader.
Я думал о таком объединении потоков. Решил сделать раздельно, потому, если пользователь запустит в своем обработчике событий некое длительное действие, то застопорится получение системной информации, до тех пор пока не завершится клиентский обработчик событий. А в нашем случае речь идет о миллисекундах. Или я усложняю?
aspirant:
Я думал о таком объединении потоков. Решил сделать раздельно, потому, если пользователь запустит в своем обработчике событий некое длительное действие, то застопорится получение системной информации, до тех пор пока не завершится клиентский обработчик событий. А в нашем случае речь идет о миллисекундах. Или я усложняю?
Сам себе злобный буратино. А так его можно использовать для логирования данных. Тогда можно четко сказать - да, вот эти данные были, и они были обработаны так и так. А если они идут из разных потоков, то тогда будет сложно понять, что есть что.
Mikhail Sukhov:
А так его можно использовать для логирования данных. Тогда можно четко сказать - да, вот эти данные были, и они были обработаны так и так. А если они идут из разных потоков, то тогда будет сложно понять, что есть что.
OK, если что, потом снова разделим.
Мы используем куки для обеспечения лучшего опыта на нашем сайте. Продолжая использовать наш сайт, вы соглашаетесь на использование куки.
Комментарии (22)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Еще: 3.1 есть пока только бета? На www.box.net нашел только ее?
Все в точности до наоборот. Ты видимо не обновил References папку. Поэтому переделал обратно.🙂
Да пока в бете. Поинт был в том, чтобы обновить контрактную(=интерфейсную) информацию, плюс другие шлюзы уже по 3.x разрабатываются.
Что-то у меня какая-то хрень: в папке References ссылки на папку с исходниками, которые я сам скачивал (3.0.19)? Это правильно? Похоже нет, потому что в PlazaTrader'е все в double и проект компилится без ошибок🤨
Под папкой References что ты подразумеваешь? Я говорю про физическую папку, что на диске. И что обновляется через TFS.
Все, разобрался. В PlazaTrader'е исправил ошибки с double. Жду с нетерпением понедельника, чтобы потестить стаканы🙂
Обновился сегодня до последней тестовой версии. Там порт уже 4001 а не 3001. Исправил пример. Но экспорт данных не идет. У тебя работает?
Зачем нужна такая конструкция?
4001 - это рабочий порт. Правь на 3001 - у меня все приходит.
В client_rounter.ini что написано? Какой порт?
ThreadPool.QueueUserWorkItem(s => { //WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _futuresSessionOnline, _optionQuotesOnline, _optionSessionOnline }); WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _optionQuotesOnline });
Правил сам
; TCP-порт, на котором слушает роутер ;port=4001 port=3001
Чтобы работало🙂. У тебя там дальше вот так?
Тоже правил сам.
У меня работает и с 4001 и с 3001. Может оставим тот, который по умолчанию после установки идет?
ThreadPool.QueueUserWorkItem(s => { //WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _futuresSessionOnline, _optionQuotesOnline, _optionSessionOnline }); WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _optionQuotesOnline });
ThreadPool.QueueUserWorkItem(s => { //WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _futuresSessionOnline, _optionQuotesOnline, _optionSessionOnline }); WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _optionQuotesOnline });
ThreadPool.QueueUserWorkItem(s => { //WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _futuresSessionOnline, _optionQuotesOnline, _optionSessionOnline }); WaitHandle.WaitAll(new[] { _futuresQuotesOnline, _optionQuotesOnline });
Понял. Тогда я это удаляю. Оно не нужно, так как теперь используется метод BaseTrader.ProcessSecurityAction.
За одно вынес все потоки в класс PlazaListenerRegistry. Во время переноса увидел, что потоки в классе PlazaTrader дублируют те, что есть в PlazaListenerRegistry. Первые убрал в пользу вторых. Если юзер коду нужно будет получать данные из основных потоков, пусть подписывается на те же самые события класса PlazaListener, что и PlazaTrader.
Я думал о таком объединении потоков. Решил сделать раздельно, потому, если пользователь запустит в своем обработчике событий некое длительное действие, то застопорится получение системной информации, до тех пор пока не завершится клиентский обработчик событий. А в нашем случае речь идет о миллисекундах. Или я усложняю?
Сам себе злобный буратино. А так его можно использовать для логирования данных. Тогда можно четко сказать - да, вот эти данные были, и они были обработаны так и так. А если они идут из разных потоков, то тогда будет сложно понять, что есть что.