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


Выложил 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
Ответить


Например, выращежение 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
Ответить


Например, выращежение 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