← Назад

ReRegisterOrder()

После апдейта до версии 4.0 появились ошибки в перерегистрации заявок:

  1. лимитные ордера - перерегистрация цены работает, изменение обьема - выдается ошибка сервера
  2. стоп ордера - перерегистрация цены/обьема работает, но не удаляется старая стоп заявка в квике ps новый ордер копируется через Clone(), Type = QuikStopConditionTypes.StopLimit, ExpiryDate = DateTime.Today;

Комментарии (22)

Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий

Alexander
Alexander

какая версия? что говорит Verifier? на какой версии работали до?

skuvv
skuvv Автор

1)версия 4.0 2)что такое Verifier? 3)предыдущая версия 3.2.7

Alexander
Alexander

skuvv: 1)версия 4.0 2)что такое Verifier? 3)предыдущая версия 3.2.7

  1. какой 4.0? У нас их уже 5 было, последний - 4.0.4. На codeplex даже 4.0.5 лежит
  2. программа для проверки правильно ли всё настроено в квике. были изменения в таблицах (wnd файлах), может у вас что не так.
skuvv
skuvv Автор

первый, 4.0.0 проверка в таблицы стоп заявок не нашла одну колонку, добавил - завтра проверю результат и отпишусь

Alexander
Alexander

skuvv: первый, 4.0.0 проверка в таблицы стоп заявок не нашла одну колонку, добавил - завтра проверю результат и отпишусь

Используйте 4.0.4, в 4.0.0 были ошибки, они уже исправлены.

skuvv
skuvv Автор

стоп заявки стали сниматься работать коректно на 4.0.4 лимитки ошибка(замена обьема заявки) осталась

Alexander
Alexander

skuvv: лимитки ошибка(замена обьема заявки) осталась

что за ошибка сервера? идёт ли перерегистрация такой заявки через сам квик?

skuvv
skuvv Автор

Через квик идет. Текст ошибки длинный - все не сохраняется: "Сервер для транзакции 'ACTION=MOVE_ORDERS;TRANS_ID=XXXXXXX;CLASSCODE=SPBFUT;SECCODE=RIZ1;MODE=1;FIRST_ORDER_NUMBER=YYYYYY;FIRST_ORDER_NEW_PRICE=154870;FIRST_ORDER_NEW_QUANTITY=2;' вернул неправильное сообщение 'Транзакция не поддерживается..."

Alexander
Alexander

Распечатайте всю транзакцию через это

skuvv
skuvv Автор

Полный текст сообщения ошибки: Сервер для транзакции 'ACTION=MOVE_ORDERS; TRANS_ID=60127389; CLASSCODE=SPBFUT; SECCODE=RIZ1; MODE=1; FIRST_ORDER_NUMBER=5812605396; FIRST_ORDER_NEW_PRICE=155785; FIRST_ORDER_NEW_QUANTITY=2;' вернул неправильное сообщение 'Транзакция не поддерживается' по передвинутым заявкам.

Alexander
Alexander

skuvv: Полный текст сообщения ошибки: Сервер для транзакции 'ACTION=MOVE_ORDERS; TRANS_ID=60127389; CLASSCODE=SPBFUT; SECCODE=RIZ1; MODE=1; FIRST_ORDER_NUMBER=5812605396; FIRST_ORDER_NEW_PRICE=155785; FIRST_ORDER_NEW_QUANTITY=2;' вернул неправильное сообщение 'Транзакция не поддерживается' по передвинутым заявкам.

Бред тогда какой-то. Транзакция и правда неверная. Нет всей информации что относится ко второй заявке. Покажите как делаете Move и распечатайте все поля которые передаёте

skuvv
skuvv Автор

StockSharp.BusinessEntities.Order _NewOrder = OrderList.ElementAt(index).Key.Clone();
                            _NewOrder.Volume = (int)newQty;
                            _NewOrder.Price = (decimal)newPrice;
                            _trader.ReRegisterOrder(OrderList.ElementAt(index).Key, _NewOrder);

а что еще нужно для изменения заявки кроме цены и обьема?

Alexander
Alexander

Распечатайте все поля передаваемые. Конкретные значения - от Id до цены с объёмом.

skuvv
skuvv Автор

попробовал Console.WriteLine(_trader.GetTransaction(_NewOrder.TransactionId).ToString()); Вызывает эксешн: System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта. в квике соответсвующий TransactionId есть

Alexander
Alexander

skuvv: попробовал Console.WriteLine(_trader.GetTransaction(_NewOrder.TransactionId).ToString()); Вызывает эксешн: System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта. в квике соответсвующий TransactionId есть

Значит либо _trader либо _NewOrder = null. Может проще дебагером посмотреть чем гадать? :)

skuvv
skuvv Автор

Оригинальный ордер Клонированный ордер

Alexander
Alexander

разберитесь где тот null из-за которого падает. у вас в коде ошибка, вам доступен ваш же стэк трэйс - удалённо тут никак не помочь :)

skuvv
skuvv Автор

Новый ордер получается Clone() оригинального, где же тут ошибка может быть.... Тем более этот же код с изменением цены работает, ошибка со стороны сервера квик возвращается

Alexander
Alexander

skuvv: Новый ордер получается Clone() оригинального, где же тут ошибка может быть.... Тем более этот же код с изменением цены работает, ошибка со стороны сервера квик возвращается

У вас в коде NullReferenceException. Зачем гадаете где чего не так? Сказал давно - проще посмотреть под дебагером где там NRE.

И вопрос на засыпку - что у вас ProcessDataError пишет?

skuvv
skuvv Автор

молчит ProcessDataError Еще раз повторюсь, нету никаких ошибок при отправлении заявки. Может с версии 4.0+ при клонировании заявки нужно какие нибудь параметры вручную заполнять?

Alexander
Alexander

skuvv: молчит ProcessDataError Еще раз повторюсь, нету никаких ошибок при отправлении заявки. Может с версии 4.0+ при клонировании заявки нужно какие нибудь параметры вручную заполнять?

так здесь что за exception раз нет ошибок?

Alexander
Alexander

В общем выяснилось, что проблема в едином счете. Единый счёт не поддерживает MOVE_ORDER с MODE=1. Вот тема на форуме квика