Публичный бета тестинг
Atom
17.05.2011


Выложил PlazaTrader на http://box.net/plaza Исходники самого PlazaTrader, исходники примера, Plaza dll и Plaza + S# dll (последнее не нужно, если уже используется S#).

В следствие бета тестирования буду обновлять только библиотеку Ecng.Trading.Plaza.dll. В релиз войдет все. Налетаем.[smile]

upd Теперь PlazaTrader часть дистрибутива S#, поэтому просто качайте последнюю версию http://box.net/stocksharp/ . Сборка называется StockSharp.Plaza.dll

Теги:


Спасибо:


< 1 2 3 4  > >>
esper

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


Mikhail Sukhov Перейти
Изначально PlazaErrors был создан с ошибкой. Если посмотреть документацию (в самом конце), то там есть некие числовые константы (некоторые равны друг другу). Так что, это вовсе не строчки. Строчки - это ошибка автора этого класса.


Не совсем понял вышесказанное, в документации указано как по полученному коду ошибки можно получить символьный код ошибки, который для нас более понятен, что понимается под "строчкой"?
Спасибо:

Mikhail Sukhov

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


esper Перейти
Mikhail Sukhov Перейти
Изначально PlazaErrors был создан с ошибкой. Если посмотреть документацию (в самом конце), то там есть некие числовые константы (некоторые равны друг другу). Так что, это вовсе не строчки. Строчки - это ошибка автора этого класса.


Не совсем понял вышесказанное, в документации указано как по полученному коду ошибки можно получить символьный код ошибки, который для нас более понятен, что понимается под "строчкой"?


Например, выращежение P2ERR_MSG_FIELD_NOT_FOUND = P2ERR_MSG_BEGIN говорит о том, что идентификатор P2ERR_MSG_FIELD_NOT_FOUND равен началу блока P2ERR_MSG_BEGIN, который в свою очередь равен 0x8000.

В классе же PlazaErrors сейчас это представлено в виде строчки. Это так и должно быть? Я не 100% уверен, но думаю тут глюк в дизайне.
Спасибо:

esper

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


Цитата:
Например, выращежение P2ERR_MSG_FIELD_NOT_FOUND = P2ERR_MSG_BEGIN говорит о том, что идентификатор P2ERR_MSG_FIELD_NOT_FOUND равен началу блока P2ERR_MSG_BEGIN, который в свою очередь равен 0x8000.

В классе же PlazaErrors сейчас это представлено в виде строчки. Это так и должно быть? Я не 100% уверен, но думаю тут глюк в дизайне.


Вопрос в том, какие преимущества будут при использовании enum-а, если основная задача класса представить код 0x8000 в более понятном формате
Спасибо:

Mikhail Sukhov

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


esper Перейти
Цитата:
Например, выращежение P2ERR_MSG_FIELD_NOT_FOUND = P2ERR_MSG_BEGIN говорит о том, что идентификатор P2ERR_MSG_FIELD_NOT_FOUND равен началу блока P2ERR_MSG_BEGIN, который в свою очередь равен 0x8000.

В классе же PlazaErrors сейчас это представлено в виде строчки. Это так и должно быть? Я не 100% уверен, но думаю тут глюк в дизайне.


Вопрос в том, какие преимущества будут при использовании enum-а, если основная задача класса представить код 0x8000 в более понятном формате


Никаких, наверное. Я пока для себя пытаюсь прояснить. У нас порядковый номер в листах то правильный, если искать по индексу? Скажем, если по коду ошибки можно будет получить строку P2ERR_ISAMSM_OPERATION_NOT_ALLOWED то это уже нормально.
Спасибо:

Mikhail Sukhov

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


Mikhail Sukhov Перейти
esper Перейти
Цитата:
Например, выращежение P2ERR_MSG_FIELD_NOT_FOUND = P2ERR_MSG_BEGIN говорит о том, что идентификатор P2ERR_MSG_FIELD_NOT_FOUND равен началу блока P2ERR_MSG_BEGIN, который в свою очередь равен 0x8000.

В классе же PlazaErrors сейчас это представлено в виде строчки. Это так и должно быть? Я не 100% уверен, но думаю тут глюк в дизайне.


Вопрос в том, какие преимущества будут при использовании enum-а, если основная задача класса представить код 0x8000 в более понятном формате


Никаких, наверное. Я пока для себя пытаюсь прояснить. У нас порядковый номер в листах то правильный, если искать по индексу? Скажем, если по коду ошибки можно будет получить строку P2ERR_ISAMSM_OPERATION_NOT_ALLOWED то это уже нормально.


+ кто-нибудь знает как получить нормальное описание ошибки при отправке асинхронной транзакции? Сейчас текст получается только в синхронном режиме. А асинхронный режим только и пишет, что Invalid cast exception внутрях COM.
Спасибо:

aspirant

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


Mikhail Sukhov Перейти
+ кто-нибудь знает как получить нормальное описание ошибки при отправке асинхронной транзакции? Сейчас текст получается только в синхронном режиме. А асинхронный режим только и пишет, что Invalid cast exception внутрях COM.


Сам на это натыкался, но руки не дошли. Сейчас поискал на форуме РТС. Похоже, нужно чтобы в нитке, откуда отправляется асинхронное сообщение, должен быть бесконечный цикл с ProcessMessage. Вот здесь про это написано + это есть в плазовском примере AsyncSend. У нас ведь сейчас сообщение отправляется из GUI-thread?
Спасибо:

aspirant

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


А вот, кстати, почему нам самим нужно вручную "крутить" ProcessMessage.
Спасибо:

esper

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


Mikhail Sukhov Перейти
У нас порядковый номер в листах то правильный, если искать по индексу? Скажем, если по коду ошибки можно будет получить строку P2ERR_ISAMSM_OPERATION_NOT_ALLOWED то это уже нормально.

Выборочно проверял на нескольких ошибках, получаемые строки совпадали с логом.

Mikhail Sukhov Перейти
+ кто-нибудь знает как получить нормальное описание ошибки при отправке асинхронной транзакции? Сейчас текст получается только в синхронном режиме. А асинхронный режим только и пишет, что Invalid cast exception внутрях COM.

Думаю, стоит обрабатывать код ошибки, который приходит в callback. В документации было указано, что если код ошибки не 0, то заявка не выставлена/исполнена и надо смотреть описание ошибки с таким кодом. Где именно возникает Invalid cast exception, а то я с таким не сталкивался?

aspirant
Похоже, нужно чтобы в нитке, откуда отправляется асинхронное сообщение, должен быть бесконечный цикл с ProcessMessage.

Не обязательно в той же нитке где отправляется сообщение, просто где-то для соединения, через которое отправляется сообщение, должна вызываться эта функция, для обработки ответа от сервера. Это, вроде как, справедливо не только для асинхронных сообщений, но и синхронных, в прочем как и для получения любого другого сообщения от сервера.

По PlazaException
Mikhail Sukhov
Я тоже за, если не лепить везде это исключение. Где его предлагаете применить?

использовать его предлагаю там, где от плазы могут приходить COMException, чтобы можно было представить код пришедшей ошибки в более удобном виде, т.е. это в местах вызова CP2Connection.Connect, CP2Connection.Disconnect, CP2Connection.ProcessMessage, CP2DataStream.Open, CP2DataStream.Close и т.д.
Спасибо:

aspirant

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


esper Перейти
Сейчас для подключения к роутеру используется TCP? Если подключаемся на localhost, может стоит подключаться через LRPCQ?


Сделал
Спасибо:

Mikhail Sukhov

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


aspirant Перейти
esper Перейти
Сейчас для подключения к роутеру используется TCP? Если подключаемся на localhost, может стоит подключаться через LRPCQ?


Сделал


Получил боевой логин. Если качать с нулевой ревизии как сейчас, то старт примера занимает около 10 минут. Поэтому, предлагаю сделать следующие:

1. Для этой версии все таки ввернуть поддержку базового клиента (в виде опции). Надеюсь, это не сложно.
2. Для следующей сделать собственную версию базы (чтобы хранить родные для S# торговые объекты, а не плазовские).
Спасибо:
< 1 2 3 4  > >>

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

loading
clippy