Ошибка при котировании, синхронные транзакции

Ошибка при котировании, синхронные транзакции
Atom
17.07.2012
NattyD


Здравствуйте, вылазит ошибка при котировании (MarketQuotingStrategy), после которой оно останавливается. QuickTrader переведен в синхронный режим.

_trader = new QuikTrader(terminal.SystemProcess.MainModule.FileName) { IsAsyncMode = false};

Заметил, что в терминале в таблице заявок у заявок все-равно присутствует "ID Транзакции", так и должно быть?

S# 4.1.1 Quik 6.02, 6.01

Прилагаю Лог стратегии, QuickTrader ошибок не выдает


S_UXU2@UX_UE01058 | 17.07.2012 17:23:49.173 |            | Стратегия запущена.
MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:49.230 |            | Стратегия запущена.
MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:49.241 |            | Котирование на Buy объема 1.
MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:49.242 |            | Приостановка правил. _rulesSuspendCount 1.
MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:49.263 |            | Возобновление правил. _rulesSuspendCount 0.
MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:49.535 |            | Цена текущей NULL и лучшей 1148,8.
MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:49.535 |            | Лучший бид 1148,8 и лучший аск 1151.
MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:49.536 |            | Регистрация новой заявки на Buy с ценой 1148,8 и объемом 1.
MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:49.858 |            | Заявка 62614459 принята биржей.
MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:49.877 |            | Заявка 62614459 на Buy отправлена с ценой 1148,8 объемом 1.
MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:50.678 |            | Цена текущей 1148,8 и лучшей 1148,9.
MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:50.682 |            | Лучший бид 1148,9 и лучший аск 1151.
MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:50.683 |            | Котирование заявки 62614459 на Buy с ценой 1148,8 объемом 1.
MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:50.732 | Ошибка     | System.InvalidOperationException: Операция является недопустимой из-за текущего состояния объекта.
   в Ecng.ComponentModel.EventsContainer.BeginSuspend()
   в StockSharp.Algo.BaseTrader.ProcessEvents(Action handler)
   в StockSharp.Quik.QuikTrader.#=quI0ECWyYQ6D__0FpXXVx6mSb4AwRxeUY74VZaV60ZGg=(Order #=qaR_EgCNBXJebgaITxbqg_g==, TransactionBuilder #=qwBPlvcbc6_QcBpexeXMNMA==)
   в StockSharp.Quik.QuikTrader.OnReRegisterOrder(Order oldOrder, Order newOrder)
   в StockSharp.Algo.BaseTrader.ReRegisterOrder(Order oldOrder, Order newOrder)
   в StockSharp.Algo.Strategies.Strategy.ReRegisterOrder(Order oldOrder, Order newOrder)
   в StockSharp.Algo.Strategies.QuotingStrategy.ProcessQuoting()
   в StockSharp.Algo.Strategies.StrategyRule`1.#=q8bZ8akm2FRZTBpctt6Y5pGD5YVrOfStu6VYJathjxck=.#=q$e$XHZXKAmDkGmxEdc31$w==(#=qkGIHUZeVjCPY5HrimUIWQQ== #=qsWSJ9nMRKasYRGrfSojqqg==)
   в StockSharp.Algo.Strategies.StrategyRule`1.#=qlvr2POsvDBbjTf98t0zvpyTMDmDnGEKeQtksNgtDiQQ=()
   в StockSharp.Algo.Strategies.Strategy.#=qqT0_S6QHKdYMEa00TsYhuA==(IStrategyRule #=qif9rZwhz_4WWQY1beitBUA==, Func`1 #=qHWkgHkFI$KyWdUXhoglrLw==, Object #=qKlkKmXRkYYMu2oQmfgx5Qg==, Boolean #=qqMKPYFUZPSoo5HQN$qfRDw==)
MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:50.740 |            | Отмена заявки 62614459.
MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:50.763 | Ошибка     | System.InvalidOperationException: Операция является недопустимой из-за текущего состояния объекта.
   в Ecng.ComponentModel.EventsContainer.BeginSuspend()
   в StockSharp.Algo.BaseTrader.ProcessEvents(Action handler)
   в StockSharp.Quik.QuikTrader.#=quI0ECWyYQ6D__0FpXXVx6mSb4AwRxeUY74VZaV60ZGg=(Order #=qaR_EgCNBXJebgaITxbqg_g==, TransactionBuilder #=qwBPlvcbc6_QcBpexeXMNMA==)
   в StockSharp.Quik.QuikTrader.OnCancelOrder(Order order)
   в StockSharp.Algo.BaseTrader.CancelOrder(Order order)
   в StockSharp.Algo.Strategies.Strategy.CancelOrder(Order order)
   в StockSharp.Algo.Strategies.Strategy.#=q8NeZglL_Y2Olm7EbsZMnj5T$RL0jaskjS$tqw$OkhqY=(Order #=qtaw3SxG5fnCWwlzB7fb6tQ==)
   в Ecng.Collections.CollectionHelper.ForEach[T](IEnumerable`1 source, Action`1 action)
   в StockSharp.Algo.Strategies.Strategy.#=qlMIUqzdOVfkxxxZfy5U$4WlakkxUmbAXfYW$9f3mLMM=(IEnumerable`1 #=qw$TTgXa8aFwOOKdO4k5RmQ==)
   в StockSharp.Algo.Strategies.Strategy.CancelActiveOrders()
   в StockSharp.Algo.Strategies.QuotingStrategy.#=qGZP_NLsRWYYuvXhjtYTla5YlhizT$hMidiP7hrDCmvo=()
   в StockSharp.Algo.Strategies.StrategyRule`1.#=q8bZ8akm2FRZTBpctt6Y5pGD5YVrOfStu6VYJathjxck=.#=q$e$XHZXKAmDkGmxEdc31$w==(#=qkGIHUZeVjCPY5HrimUIWQQ== #=qsWSJ9nMRKasYRGrfSojqqg==)
   в StockSharp.Algo.Strategies.StrategyRule`1.#=qlvr2POsvDBbjTf98t0zvpyTMDmDnGEKeQtksNgtDiQQ=()
   в StockSharp.Algo.Strategies.Strategy.#=qqT0_S6QHKdYMEa00TsYhuA==(IStrategyRule #=qif9rZwhz_4WWQY1beitBUA==, Func`1 #=qHWkgHkFI$KyWdUXhoglrLw==, Object #=qKlkKmXRkYYMu2oQmfgx5Qg==, Boolean #=qqMKPYFUZPSoo5HQN$qfRDw==)
MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:50.764 |            | Стратегия останавливается.
MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:50.772 |            | Стратегия остановлена.


Что я делаю не так?


Теги:


Спасибо:


Mikhail Sukhov

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


Пофиксим. Но синхронный режим лучше вообще не использовать.

Спасибо:

NattyD

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


Еще один баг, тот же самый код, только в синхронном режиме

 _sec.Exchange.IsSupportAtomicReRegister = true;

то лог заполняется такими сообщениями по несколько раз в секунду:

MQS_UXU2@UX_FOUX_290 | 18.07.2012 10:36:27.750 | Внимание | Заявка 38049923 в процессе перерегистрации на заявку 38049927.

При

 _sec.Exchange.IsSupportAtomicReRegister = false;

MQS_UXU2@UX_FOUX_290 | 18.07.2012 10:44:53.026 | Внимание | Заявка 38395905 в процессе снятия.

Хотя реально заявки уже сняты

Пробовал на разных квиках, на боевом и демо, S# 4.1.1, 4.1.2.

Подскажите?

Спасибо:

Alexander

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


Пробуйте версию 4.1.3 с codeplex

Спасибо:

NattyD

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


Попробовал trunk из кодплекса (stocksharp-18359), теперь квик не подключается, даже Sample.

Samples\Quik\MainWindow.xaml.cs, Строчка 102:

Trader = new QuikTrader(Path.Text);

Exception: System.NotImplementedException не обработано пользовательским кодом Message=Метод или операция не реализована. Source=Ecng.Collections StackTrace: в Ecng.Collections.SynchronizedSet1.UnionWith(IEnumerable1 other) в StockSharp.Quik.DdeTable.#=qqP4jiK6iKM4gZjWmwoFNmA==(#=qoF20$LsBou778asWyaK_glrNgBuqxYjWKetVkI0NwOY= #=q0YIZ2_ganqJlJgS$M$kcug==, String #=q6N4BvBWLatxjs8FvlGlbdg==, IEnumerable1 #=q$v6SpJ0iRC9ll76NYM5lKw==) в StockSharp.Quik.DdeTable..ctor(#=qoF20$LsBou778asWyaK_glrNgBuqxYjWKetVkI0NwOY= #=qnrCVJKW$uYdG2P79zDlM_A==, String #=qWwHdQg232kojzzXHl_b0ww==, IEnumerable1 #=qe9cZZPUu9hpEVKnAlumKFg==) в StockSharp.Quik.QuikTrader.#=qSteYbV3gscLN_5u0xP_K9Q==() в StockSharp.Quik.QuikTrader..ctor(String path) в Sample.MainWindow.ConnectClick(Object sender, RoutedEventArgs e) в C:\Users\Павел\Documents\trunk\Samples\Quik\Sample\MainWindow.xaml.cs:строка 102 в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) в System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) в System.Windows.UIElement.RaiseEvent(RoutedEventArgs e) в System.Windows.Controls.Primitives.ButtonBase.OnClick() в System.Windows.Controls.Button.OnClick() в System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e) в System.Windows.UIElement.OnMouseLeftButtonUpThunk(Object sender, MouseButtonEventArgs e) в System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget) в System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) в System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent) в System.Windows.UIElement.OnMouseUpThunk(Object sender, MouseButtonEventArgs e) в System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget) в System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) в System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) в System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args) в System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted) в System.Windows.Input.InputManager.ProcessStagingArea() в System.Windows.Input.InputManager.ProcessInput(InputEventArgs input) в System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport) в System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel) в System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled) в System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) в MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) в MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) InnerException:

Спасибо:

Alexander

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


Поправлю сегодня

Спасибо:


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

loading
clippy