← Назад

проблема с CancelOrders

Добрый день!

Выполняю следющую комманду:

QT.CancelOrders(false, txtAccount.Text, null, null, this.CSec.ElementAt(0));

Если активна одна заявка, то все корректно отрабатывает, если же несколько активных заявок, после снятия первой заявки выдается исключение - "Элемент с тем же ключом уже добавлен".

В чем может быть причина? Версия библиотеки 2.1. Заранее спасибо.

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

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

Mikhail Sukhov
Mikhail Sukhov

Текст исключения можно полный привести?

S.S.V.
S.S.V. Автор

Подробная информация об использовании оперативной (JIT) отладки вместо данного диалогового окна содержится в конце этого сообщения.

************** Текст исключения ************** System.ArgumentException: Элемент с тем же ключом уже был добавлен. в System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) в System.Collections.Generic.Dictionary2.Insert(TKey key, TValue value, Boolean add) в System.Collections.Generic.Dictionary2.Add(TKey key, TValue value) в Ecng.Collections.SynchronizedDictionary2.Add(K key, V value) в Ecng.Trading.Quik.QuikTrader.CancelOrder(Order order) в Ecng.Trading.BusinessEntities.BaseTrader.<>c__DisplayClass2f.<CancelOrders&gtb__2d(SynchronizedDictionary2 c) в Ecng.Collections.CollectionHelper.SyncDo[TCollection](TCollection collection, Action1 action) в Ecng.Trading.BusinessEntities.BaseTrader.CancelOrders(Nullable1 isStopOrder, String account, Nullable1 direction, String classCode, Security security) в Ecng.Trading.Algo.SyncTrader1.CancelOrders(Nullable1 isStopOrder, String account, Nullable1 direction, String classCode, Security security) в SQuikTick_v1.Form1.btnDelAllOrders_Click(Object sender, EventArgs

  1. в C:\Quik_Net\SQuik5Min_v2\SQuik5Min_v2\Form1.cs:строка 937 в System.Windows.Forms.Control.OnClick(EventArgs e) в System.Windows.Forms.Button.OnClick(EventArgs e) в System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) в System.Windows.Forms.Control.WndProc(Message& m) в System.Windows.Forms.ButtonBase.WndProc(Message& m) в System.Windows.Forms.Button.WndProc(Message& m) в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&
  2. в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Mikhail Sukhov
Mikhail Sukhov

Такая ошибка может произойти, если BaseTrader.TransactionIdGenerator вернул номер транзакции, который уже был использован до этого. У Вас в BaseTrader.TransactionIdGenerator какой класс используется?

S.S.V.
S.S.V. Автор

в версии 2.2.1 все работает. Спасибо.

Mikhail Sukhov
Mikhail Sukhov

Ок, теперь понятно. Да, в 2.1 такое бы не прокатило. Я писал в блоге об исправлении.