Обновил сборки до S# 3.1
Atom Ответить
15.04.2011


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

Теги:


Спасибо:




22 Ответов
aspirant

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


Mikhail Sukhov Перейти
В основном с decimal заменял места

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

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

Mikhail Sukhov

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


aspirant Перейти
Mikhail Sukhov Перейти
В основном с decimal заменял места

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


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

aspirant Перейти

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


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

aspirant

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


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


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

Mikhail Sukhov

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


aspirant Перейти
в папке References ссылки на папку с исходниками


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

aspirant

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


Mikhail Sukhov Перейти
aspirant Перейти
в папке References ссылки на папку с исходниками


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


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

Mikhail Sukhov

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


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


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

Mikhail Sukhov

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


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


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


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

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


Автор топика
Спасибо:

aspirant

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


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


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

Mikhail Sukhov

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


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


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


В client_rounter.ini что написано? Какой порт?
Автор топика
Спасибо:

aspirant

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


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

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




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

aspirant

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


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


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


Правил сам

Спасибо:

Mikhail Sukhov

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


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


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


Правил сам



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

aspirant

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


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


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


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

Спасибо:

Mikhail Sukhov

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


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


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


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

Mikhail Sukhov

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


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

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




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


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

Mikhail Sukhov

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


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

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




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


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


Ок, раз никто не знает, можно удалять?Laugh
Автор топика
Спасибо:

aspirant

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


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

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




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


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


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


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

Mikhail Sukhov

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


aspirant Перейти

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


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

Mikhail Sukhov

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


Mikhail Sukhov Перейти
aspirant Перейти

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


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


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

aspirant

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


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

OK, понятно.

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


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

Mikhail Sukhov

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


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


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

aspirant

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


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

OK, если что, потом снова разделим.
Спасибо:


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

loading
clippy