Ошибка при отмене заявки
Atom
09.09.2014
pma37592


Есть такой код. В нем в стратегии выставляем заявку, а потом сразу же отменяем.
Версия stocksharp 4.2.22. Для тестирования использовался терминал Quik Junior брокера finam. Коннектор Lua.
Лог следующий:


По логу видно, что при отмене заявки, если заявка еще выставляется на сервере вызывается функция _OrderFailed, а не функция _OrderCanceledFailed.
Заявка ведь отменяется и ошибка отмены заявки. Так же не происходит реальной отмены заявки. Заявка выставляется и не происходит ее отмены.
Так же хотелось бы иметь какие-то коды ошибок для заявок.

Код под катом:

Теги:


Спасибо:


Andrii

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


присоединяюсь,
Код
2014/09/09 15:53:25.451|       |QuikTrader|OrderCancelFailed: 52681380/2442218035 Продажа Цена=1152.6 Объем=1 Сост=Done Бал=0 
System.InvalidOperationException: Ошибка снятия заявки 2442218035. Текст 'vy ne mozhete snyat' dannuyu zayavku'.
Спасибо:

VirKato

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


Andrii
присоединяюсь,
Код
2014/09/09 15:53:25.451|       |QuikTrader|OrderCancelFailed: 52681380/2442218035 Продажа Цена=1152.6 Объем=1 [b]Сост=Done[/b] Бал=0 
System.InvalidOperationException: Ошибка снятия заявки 2442218035. Текст 'vy ne mozhete snyat' dannuyu zayavku'.


Состояние Done согласно документации выставляется, когда заявка полностью удовлетворена или снята. Чтож вы с ней еще хотите сделать?

pma37592

Есть такой код. В нем в стратегии выставляем заявку, а потом сразу же отменяем.

На сколько - сразу: по заявке успевает прийти биржевой ID? Судя по логу событие о том, что она зарегистрировано от биржи приходит одновременно с ошибкой. Не уверен на счет forts, но на стоках так точно делать нельзя. May be try sleep(100)?
Спасибо:

pma37592

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


VirKato

Состояние Done согласно документации выставляется, когда заявка полностью удовлетворена или снята. Чтож вы с ней еще хотите сделать?


Проблема в том, что вызывается не то событие об ошибке, а в некоторых случаях вообще не вызывается.

Если добавить код.
Код

...
order.WhenMatched().Do(_OrderMatched).Apply(this);
...

private void _OrderMatched(Order order)
{
 var msg = String.Format("[OrderMatched]: Заявка полностью исполнена: {0}; ThreadID: {1}; IsMatched={2}; IsMatchedEmpty={3}; IsMatchedPartially={4}; Vol={5}; Bal={6}; State={7}",
        order.Id, Thread.CurrentThread.ManagedThreadId, order.IsMatched(), order.IsMatchedEmpty(), order.IsMatchedPartially(),
        order.Volume, order.Balance, order.State);
      Logs.LogMsg(msg);
      this.AddInfoLog(msg);

      CancelOrder(order);
      msg = "[OrderMatched]: Заявку отменили";
      Logs.LogMsg(msg);
      this.AddInfoLog(msg);
}


То лог будет, таким


Вообще не вызывается ничего, получается ошибка - отмена уже не существующего ордера. При этом запрос на отмену отсылается, но квик сообщает,
что не может отменить заявку.
Возникает вопрос: если все же отменяем заявку, которая на бирже уже исполнилась, а квик эту информацию еще не получил.
Будет вызвано сообщение об ошибке WhenCancelFailed?
Спасибо:


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

loading
clippy