← Voltar

ReRegisterOrder()

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

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

Este tópico foi útil?

Compartilhar tópico

Comentários (22)

Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário

Alexander
Alexander

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

skuvv
skuvv Autor

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 Autor

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

Alexander
Alexander

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

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

skuvv
skuvv Autor

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

Alexander
Alexander

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

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

skuvv
skuvv Autor

Через квик идет. Текст ошибки длинный - все не сохраняется: "Сервер для транзакции '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 Autor

Полный текст сообщения ошибки: Сервер для транзакции '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 Autor

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 Autor

попробовал 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 Autor

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

Alexander
Alexander

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

skuvv
skuvv Autor

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

Alexander
Alexander

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

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

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

skuvv
skuvv Autor

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

Alexander
Alexander

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

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

Alexander
Alexander

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