← 戻る

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

Здравствуйте, вылазит ошибка при котировании (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 |            | Стратегия остановлена.


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

このトピックは参考になりましたか?

トピックを共有

コメント (5)

ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください

Mikhail Sukhov
Mikhail Sukhov

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

NattyD
NattyD 著者

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

 _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
Alexander

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

NattyD
NattyD 著者

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

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