Здравствуйте. Сегодня 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()