2014/10/10 10:36:35.123| |QuikTrader|Инструмент RIZ4@FORTS зарегистрирован на получение рыночных данных для MarketDepth.
2014/10/10 10:36:35.123| |RealTimeEmulationTrader`1|Инструмент RIZ4@FORTS зарегистрирован на получение рыночных данных для MarketDepth.
2014/10/10 10:36:51.295|Error |Unhandled Exception|System.InvalidOperationException: Невозможно изменить значение для даты 10.10.2014 10:00:00 последняя добавленное значение для даты 10.10.2014 11:35:00.
в StockSharp.Xaml.Charting.SciChart.SciChartPaneViewModel.SciChartCandles.Draw(SortedDictionary`2 values)
в StockSharp.Xaml.Charting.SciChart.SciChartPaneViewModel.Draw(IDictionary`2 values)
в StockSharp.Xaml.Charting.Chart.ChartAreaCollection.Draw(IDictionary`2 values)
в StockSharp.Xaml.Charting.Chart.Draw(IDictionary`2 values)
в StockSharp.Xaml.Charting.ChartPanel.<>c__DisplayClass19.<.ctor>b__a()
в Ecng.Common.ThreadingHelper.<>c__DisplayClass1.<Timer>b__0(Object s)
в System.Threading.TimerQueueTimer.CallCallbackInContext(Object state)
в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.TimerQueueTimer.CallCallback()
в System.Threading.TimerQueueTimer.Fire()
в System.Threading.TimerQueue.FireNextTimers()
в System.Threading.TimerQueue.AppDomainTimerCallback()
повторяется постоянно
Комментарии (28)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Все верно, последняя свеча на графике от 11:35, а приходят данные для свечи от 10:00, изменить можно только последнюю свечку.
как можно изменить последнюю свечу?
такого поведения не было в 2.22,в 2.30 тоже есть, как могут появляться ошибки с таким разбросом времени?
Проверяйте какие данные и в каком порядке добавляете на график.
происходит при восстановлении стратегии со сделками за сегодняшний день, то есть
в 2.22 отрабатывало нормально
еще было бы хорошо пробрасывать ошибки дальше.
и тогда можно было бы понять, где ошибка возникает
есть какие-то результаты?
проблема остается, довольно не удобная, нужно добавить возможность добавлять данные задним временем.
время закрытия сечи и время регистрации отличается на 3 минуты, от чего и появляется ошибка, если в этот промежуток будет сделка или ордер, или еще что-то, что будет отображаться на графике
В 2.30 версии в диаграмме запрещено добавлять данные, старее чем последнее добавленные. как бы логично, но в случае задержки, когда время добавления свечи отличается от времени закрытия свечи, и образуется некий опасный промежуток. Если в этот промежуток добавить что либо, сделку например в график, то возникнет ошибка.
В примере SimpleHistoryTesting предлагается: <u>SmaStrategy.cs</u>
накапливать сделки, а потом добавить их на график вместе со свечей
но при временном большом фрейме свечи, например 1 час, не видеть сделки на графике довольно проблематично.
по возможности, хочется иметь возможность добавлять и сделки без ожидания свечи.
то есть, нет возможность добавить свечу у которой candle.OpenTime будет меньше, чем время сделки, которая уже была добавлена на диаграмму
Коллеги, обновился до API 4.2.31.0 и обнаружил появление указанной выше проблемы при простейшем историческом тестировании! Причем без отрисовки сделок, только свечи.
Вызов MainWindow.Instance.GuiAsync(() =>HistoryChart.ProcessCandle(candlesElem, candle)) происходит внутри Strategy.ProcessCandle торговой стратегии. При тестировании на 1-минутных данных нормально выводятся примерно 11526 свечей, затем вылезает эта ошибка "Невозможно изменить значение для даты 07.11.2012 18:36:00 последняя добавленное значение для даты 07.11.2012 18:37:00." Судя по указанному в логах времени, в момент когда Strategy.ProcessCandle обрабатывает 11526 свечу, SciChart все еще пытается обработать 11522 свечу (07.11.2012 18:36:00) , но обнаруживает что уже добавлены данные по 11523 (07.11.2012 18:37:00)!
Пока ошибка не исправлена, все историческое тестирование придется проводить без графиков.
Точно та же проблема, в билде .33 На .20 код работал без ошибок
Вылетает даже при построении EquityCurve: "Новое значение даты 06.06.2014 13:30:29 меньше ранее добавленного 06.06.2014 13:30:30."
System.InvalidOperationException was unhandled HResult=-2146233079 Message=Новое значение даты 06.06.2014 13:30:29 меньше ранее добавленного 06.06.2014 13:30:30. Source=StockSharp.Xaml.Charting StackTrace: at StockSharp.Xaml.Charting.EquityCurveChart.EquityCurveItemList.OnAdding(EquityData item) at Ecng.Collections.BaseCollection`2.Add(TItem item) at FP.Charts.MainWindow.<>c__DisplayClass4b.<>c__DisplayClass4e.<StartButton_Click>b__3c() in xxx at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) at System.Windows.Threading.DispatcherOperation.InvokeImpl() at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Windows.Threading.DispatcherOperation.Invoke() at System.Windows.Threading.Dispatcher.ProcessQueue() at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler) at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs) at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg) at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame) at System.Windows.Application.RunInternal(Window window) at System.Windows.Application.Run() at xxx.Charts.App.Main() in xxx\obj\Debug\App.g.cs:line 0 at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart() InnerException:
Нет, это другая ошибка. Неупорядоченно идет добавление данных в график эквити.
Дорогие друзья, у меня подобная ошибка ("Невозможно изменить значение для свечи для даты 18.12.2014 12:51:00 +03:00 последнее добавленное значение для даты 18.12.2014 12:52:00 +03:00") происходит в момент выставления заявки в реальном времени (Quik Emulator), т. е. в моем случае речь идет не о исторических свечах. Пробовал переводить время системы на несколько секунд вперед, при этом заявки вообще прекращают выставляться. Я пробовал на CandlesChartProject v 4.2.40 и 4.2.43. Может кто-то сталкивался с такой проблемой
В метод Draw или Process графика передается не отсортированные данные. Ваш код должен самостоятельно следить за тем, чтобы передавалось упорядоченно значения.
Михаил, это не “мой” код, а пример к 4-му уроку CandlesChartProject, как я понял, последняя версия (то, что лежит ВКонтакте.StockSharp.Edu). Там добавлено несколько чекбоксов для переключения коннекторов, а также перетянуты рефы на 43-ие dll-ки. Как я понимаю, в результате таких изменений, логика отрисовки графика не должна быть нарушена??? Как я уже писал, свечи в онлайн-режиме (подключение Quik Emulator) отрисовываются нормально. Ошибка возникает при генерации заявки или сделки (когда на свечке появляется стрелка). Я предположил, что это связано с тем, что стрелка, обозначающая сделку, может рисоваться на предыдущей свечке (что вызывает ошибку), и, “закомментировал” отрисовку элементов _chartOrderElement и _chartTradeElement. Это результата не дало, ошибка все равно происходит...
Михаил, это не “мой” код, а пример к 4-му уроку CandlesChartProject, как я понял, последняя версия (то, что лежит ВКонтакте.StockSharp.Edu). Там добавлено несколько чекбоксов для переключения коннекторов, а также перетянуты рефы на 43-ие dll-ки. Как я понимаю, в результате таких изменений, логика отрисовки графика не должна быть нарушена??? Как я уже писал, свечи в онлайн-режиме (подключение Quik Emulator) отрисовываются нормально. Ошибка возникает при генерации заявки или сделки (когда на свечке появляется стрелка). Я предположил, что это связано с тем, что стрелка, обозначающая сделку, может рисоваться на предыдущей свечке (что вызывает ошибку), и, “закомментировал” отрисовку элементов _chartOrderElement и _chartTradeElement. Это результата не дало, ошибка все равно происходит... Файл с проектом не получается прикрепить. Если надо, выложу.
Лучше в контакт группу обучения. В открытом доступе нельзя распространять материалы от обучения.
https://vk.com/topic-66650972_31554139
Брокер Quik, Connrctor - Quik Emulator... v 6.14
Да, брокер Quik (Connector - Quik Emulator, Finam). Инструмент - RIH5. Куда выкладывать?
Куда выкладывать виде, если нужно?!
Выложил видео с рабочего стола с ошибкой. В конце видно CallStack...https://vk.com/topic-66650972_31554139
Вопрос закрыт. Всем спасибо!
Напишите в чат тех поддержки