← 返回

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. Вот тема на форуме квика