Падает робот, S# 4.1.3

Падает робот, S# 4.1.3
Atom
9/18/2012
Oppositus


Здравствуйте. Сегодня 2 раза ловил падения робота. Оба раза в ситуации, когда приходилось активно передвигать ордер по стакану, гоняясь за ценой.

До этого сегодня и вчера двигал ордера этим же кодом - ничего подобного не было. Возможно, Квик чудит. Перезапустил Квик, пока полет нормальный.

Перехватить исключение невозможно, потому что возникает не в моем потоке. Предложение - перехватывать его внутри S#, возможно останавливая стратегию, вызвавшую исключение. Хотя, на мой взгляд, тут останавливать слишком жестоко, лучше как-нибудь помягчу разрулить это в SlippageManager'е.

1-е падение


2012.09.18 21:53:21.903|       |QuikTrader|New order: TrId=76599369, Id=8927459062, Dir=Buy, Price=31421, Bal=1, Sec=SiZ2@RTS, State=Active 
2012.09.18 21:53:22.106|       |QuikTrader|Order changed: TrId=76599369, Id=8927459062, Dir=Buy, Price=31421, Bal=1, Sec=SiZ2@RTS, State=Active 
2012.09.18 21:53:22.106|       |QuikTrader|Order changed: TrId=76599369, Id=8927459062, Dir=Buy, Price=31421, Bal=1, Sec=SiZ2@RTS, State=Active 
2012.09.18 21:53:27.349|       |QuikTrader|New order: TrId=76599370, Id=8927460046, Dir=Buy, Price=31444, Bal=1, Sec=SiZ2@RTS, State=Active 
2012.09.18 21:53:27.349|       |QuikTrader|Order changed: TrId=76599369, Id=8927459062, Dir=Buy, Price=31421, Bal=1, Sec=SiZ2@RTS, State=Done 
2012.09.18 21:53:27.349|       |TC_SiZ2@RTS_SPBFUT00TE4|Заявка 76599369 больше не активна.
2012.09.18 21:53:27.505|Error  |Unhandled Exception|System.ArgumentException: Старая и новая заявки совпадают.
Имя параметра: newOrder
   в StockSharp.Algo.Slippage.SlippageManager.ReRegister(Order oldOrder, Order newOrder)
   в StockSharp.Algo.Strategies.Strategy.#=qAF$cAaWD8w6Sf0n2jICfhn3SnIpbRRHW0JdqTYJw4BU=.#=q6LA44T$FSqxi6oZ3W2ppWZVAK415i9fMe2wqeMO4F28=()
   в StockSharp.Algo.Strategies.Strategy.#=qfgs3t3F0QJo2uAeiNU2Ttpv2pumAF4y2coQRpub6uDk=.#=qg_9r_6HVmeb3crTgbQEYyZG1aCymBtmmqXvLAMXxG1s=()
   в StockSharp.Algo.Strategies.Strategy.#=qDi$TOxQqFULo7BC_ufyNgU4LgLgC6leIVgzHqovrf2Y=.#=qGOiRqrNYsm05dsneYckP8g==(Action #=qZ1RO65PUdyczAFAlB5vbMg==)
   в StockSharp.Algo.Strategies.Strategy.#=qE_CXVx3b6gFmJBM42_6QlA==(Action #=qWIPEEA7aG$_X1GVNHJoYng==)
   в StockSharp.Algo.Strategies.Strategy.AddOrder(Order order)
   в Ecng.Collections.CollectionHelper.ForEach[T](IEnumerable`1 source, Action`1 action)
   в StockSharp.Algo.Strategies.Strategy.#=qNn0sQmqyvskl1CQs7HRigtztgUyGV$zdYiFLtyiizTg=(IEnumerable`1 #=q5yfL9IqYJgJl09s8Eg_48g==)
   в Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
   в StockSharp.Xaml.GuiTrader`1.<>c__DisplayClass19.<NewOrdersHandler>b__18()
   в Ecng.Xaml.GuiDispatcher.ActionInfo.Process()
   в Ecng.Xaml.GuiDispatcher.OnTimerTick(Object sender, EventArgs e)
   в System.Windows.Threading.DispatcherTimer.FireTick(Object unused)
   в 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)
   в System.Windows.Threading.DispatcherOperation.InvokeImpl()
   в System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
   в System.Threading.ExecutionContext.runTryCode(Object userData)
   в System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
   в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   в System.Windows.Threading.DispatcherOperation.Invoke()
   в System.Windows.Threading.Dispatcher.ProcessQueue()
   в System.Windows.Threading.Dispatcher.WndProcHook(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)
   в System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   в MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   в MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   в System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   в System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   в System.Windows.Application.RunDispatcher(Object ignore)
   в System.Windows.Application.RunInternal(Window window)
   в System.Windows.Application.Run(Window window)
   в System.Windows.Application.Run()
   в R2WAR.App.Main() в C:\Users\Oppositus\documents\visual studio 2010\Projects\R2WAR\obj\x86\Debug\App.g.cs:строка 0
   в System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   в System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   в System.Threading.ThreadHelper.ThreadStart()

2-е падение:


2012.09.18 22:03:53.329|       |QuikTrader|New order: TrId=79334510, Id=8927512182, Dir=Sell, Price=31485, Bal=1, Sec=SiZ2@RTS, State=Active 
2012.09.18 22:03:53.532|       |QuikTrader|Order changed: TrId=79334510, Id=8927512182, Dir=Sell, Price=31485, Bal=1, Sec=SiZ2@RTS, State=Active 
2012.09.18 22:03:53.532|       |QuikTrader|Order changed: TrId=79334510, Id=8927512182, Dir=Sell, Price=31485, Bal=1, Sec=SiZ2@RTS, State=Active 
2012.09.18 22:10:33.774|       |QuikTrader|New order: TrId=79334511, Id=8927545315, Dir=Sell, Price=31458, Bal=1, Sec=SiZ2@RTS, State=Active 
2012.09.18 22:10:33.774|       |QuikTrader|Order changed: TrId=79334510, Id=8927512182, Dir=Sell, Price=31485, Bal=1, Sec=SiZ2@RTS, State=Done 
2012.09.18 22:10:33.774|       |TC_SiZ2@RTS_SPBFUT00TE4|Заявка 79334510 больше не активна.
2012.09.18 22:10:33.774|       |QuikTrader|Order changed: TrId=79334510, Id=8927512182, Dir=Sell, Price=31485, Bal=1, Sec=SiZ2@RTS, State=Done 
2012.09.18 22:10:33.805|       |QuikTrader|Order changed: TrId=79334511, Id=8927545315, Dir=Sell, Price=31458, Bal=1, Sec=SiZ2@RTS, State=Active 
2012.09.18 22:10:33.805|       |QuikTrader|Order changed: TrId=79334511, Id=8927545315, Dir=Sell, Price=31458, Bal=1, Sec=SiZ2@RTS, State=Active 
2012.09.18 22:10:33.898|Error  |Unhandled Exception|System.ArgumentException: Старая и новая заявки совпадают.
Имя параметра: newOrder
   в StockSharp.Algo.Slippage.SlippageManager.ReRegister(Order oldOrder, Order newOrder)
   в StockSharp.Algo.Strategies.Strategy.#=qAF$cAaWD8w6Sf0n2jICfhn3SnIpbRRHW0JdqTYJw4BU=.#=q6LA44T$FSqxi6oZ3W2ppWZVAK415i9fMe2wqeMO4F28=()
   в StockSharp.Algo.Strategies.Strategy.#=qfgs3t3F0QJo2uAeiNU2Ttpv2pumAF4y2coQRpub6uDk=.#=qg_9r_6HVmeb3crTgbQEYyZG1aCymBtmmqXvLAMXxG1s=()
   в StockSharp.Algo.Strategies.Strategy.#=qDi$TOxQqFULo7BC_ufyNgU4LgLgC6leIVgzHqovrf2Y=.#=qGOiRqrNYsm05dsneYckP8g==(Action #=qZ1RO65PUdyczAFAlB5vbMg==)
   в StockSharp.Algo.Strategies.Strategy.#=qE_CXVx3b6gFmJBM42_6QlA==(Action #=qWIPEEA7aG$_X1GVNHJoYng==)
   в StockSharp.Algo.Strategies.Strategy.AddOrder(Order order)
   в Ecng.Collections.CollectionHelper.ForEach[T](IEnumerable`1 source, Action`1 action)
   в StockSharp.Algo.Strategies.Strategy.#=qNn0sQmqyvskl1CQs7HRigtztgUyGV$zdYiFLtyiizTg=(IEnumerable`1 #=q5yfL9IqYJgJl09s8Eg_48g==)
   в Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
   в StockSharp.Xaml.GuiTrader`1.<>c__DisplayClass19.<NewOrdersHandler>b__18()
   в Ecng.Xaml.GuiDispatcher.ActionInfo.Process()
   в Ecng.Xaml.GuiDispatcher.OnTimerTick(Object sender, EventArgs e)
   в System.Windows.Threading.DispatcherTimer.FireTick(Object unused)
   в 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)
   в System.Windows.Threading.DispatcherOperation.InvokeImpl()
   в System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
   в System.Threading.ExecutionContext.runTryCode(Object userData)
   в System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
   в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   в System.Windows.Threading.DispatcherOperation.Invoke()
   в System.Windows.Threading.Dispatcher.ProcessQueue()
   в System.Windows.Threading.Dispatcher.WndProcHook(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)
   в System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   в MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   в MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   в System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   в System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   в System.Windows.Application.RunDispatcher(Object ignore)
   в System.Windows.Application.RunInternal(Window window)
   в System.Windows.Application.Run(Window window)
   в System.Windows.Application.Run()
   в R2WAR.App.Main() в C:\Users\Oppositus\documents\visual studio 2010\Projects\R2WAR\obj\x86\Debug\App.g.cs:строка 0
   в System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   в System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   в System.Threading.ThreadHelper.ThreadStart()


Tags:


Thanks:


Mikhail Sukhov

Avatar
Date: 9/18/2012
Reply


Отписался в скайп.

Thanks:

ra81

Avatar
Date: 9/19/2012
Reply


А как вообще такое может быть что две заявки совпадают?

Thanks:

Mikhail Sukhov

Avatar
Date: 9/19/2012
Reply


ra81: А как вообще такое может быть что две заявки совпадают?

Довольно легко.

Thanks:

ra81

Avatar
Date: 9/19/2012
Reply


Mikhail Sukhov:

ra81: А как вообще такое может быть что две заявки совпадают?

Довольно легко.

Ну я не из праздного любопытства спросил. Меня техничская сторона дела интересует. В чем там причина появления двух одинаковых заявок вот этих.

Thanks:

Mikhail Sukhov

Avatar
Date: 9/19/2012
Reply


ra81:

Mikhail Sukhov:

ra81: А как вообще такое может быть что две заявки совпадают?

Довольно легко.

Ну я не из праздного любопытства спросил. Меня техничская сторона дела интересует. В чем там причина появления двух одинаковых заявок вот этих.

Вы хотите код автора топика посмотреть? Тогда через личку решайте эти вопросы. На форуме вопросы и обсуждения только того, что относится непосредственно к библиотеке.

Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy