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


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

Теги:


Спасибо:




22 Ответов
aspirant

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


Mikhail Sukhov Go to
В основном с decimal заменял места

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

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

Mikhail Sukhov

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


aspirant Go to
Mikhail Sukhov Go to
В основном с decimal заменял места

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


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

aspirant Go to

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


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

aspirant

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


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


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

Mikhail Sukhov

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


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


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

aspirant

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


Mikhail Sukhov Go to
aspirant Go to
в папке References ссылки на папку с исходниками


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


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

Mikhail Sukhov

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


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


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

Mikhail Sukhov

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


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


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


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

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


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

aspirant

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


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


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

Mikhail Sukhov

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


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


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


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

aspirant

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


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

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




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

aspirant

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


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


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


Правил сам

Спасибо:

Mikhail Sukhov

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


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


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


Правил сам



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

aspirant

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


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


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


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

Спасибо:

Mikhail Sukhov

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


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


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


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

Mikhail Sukhov

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


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

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




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


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

Mikhail Sukhov

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


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

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




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


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


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

aspirant

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


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

Code
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 Go to

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


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

Mikhail Sukhov

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


Mikhail Sukhov Go to
aspirant Go to

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


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


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

aspirant

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


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

OK, понятно.

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


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

Mikhail Sukhov

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


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


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

aspirant

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


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

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


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

loading
clippy