← Назад

2.28: SciChart Exception


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)

Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий

esper
esper

Все верно, последняя свеча на графике от 11:35, а приходят данные для свечи от 10:00, изменить можно только последнюю свечку.

Andrii
Andrii Автор

esper: Все верно, последняя свеча на графике от 11:35, а приходят данные для свечи от 10:00, изменить можно только последнюю свечку.

как можно изменить последнюю свечу?

Andrii
Andrii Автор
2014/10/16 14:48:24.874|Error  |Unhandled Exception|System.InvalidOperationException: Невозможно изменить значение для даты 16.10.2014 10:43:00 последняя добавленное значение для даты 16.10.2014 12:27:50.
   в StockSharp.Xaml.Charting.SciChart.SciChartPaneViewModel.SciChartCandles.Draw(IEnumerable`1 values)
   в StockSharp.Xaml.Charting.SciChart.SciChartPaneViewModel.Draw(IEnumerable`1 values)
   в StockSharp.Xaml.Charting.Chart.ChartAreaCollection.Draw(IEnumerable`1 values)
   в StockSharp.Xaml.Charting.Chart.Draw(IEnumerable`1 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()
2014/10/16 14:49:53.824|Error  |Quik      |Инструмент для маркет-данных с идентификатором запроса 52318848 не найден.

такого поведения не было в 2.22,в 2.30 тоже есть, как могут появляться ошибки с таким разбросом времени?

esper
esper

Проверяйте какие данные и в каком порядке добавляете на график.

Andrii
Andrii Автор

esper: Проверяйте какие данные и в каком порядке добавляете на график. вполне может быть, что ошибка в QuikLua данные добавляются как в примерах

Series.WhenCandlesFinished()
                   .Do(c =>
                   {
                       ProcessCandle(c);
                   })
                   .Apply(Strategy);
Andrii
Andrii Автор

происходит при восстановлении стратегии со сделками за сегодняшний день, то есть

  • получаем сделку в середине дня
  • закрываем робота
  • запускаем опять
  • восстанавливаем сделки
  • запускаем восстановление... идет восстановление свеч, в результате чего ошибка

в 2.22 отрабатывало нормально

еще было бы хорошо пробрасывать ошибки дальше.

try
{
   throw new SomethingWrongException("Bla bla");
}
catch(Exception e)
{
    throw e;
}

и тогда можно было бы понять, где ошибка возникает

Andrii
Andrii Автор

есть какие-то результаты?

Andrii
Andrii Автор

Andrii: есть какие-то результаты?

проблема остается, довольно не удобная, нужно добавить возможность добавлять данные задним временем.

Andrii
Andrii Автор
TVWSCS_UNAF@GTS_1084 10/17/2014 5:18:37 PM Info Новая свеча 10/17/2014 17:15:15: 352.8;352.8;352.8;352.8; объем 3

время закрытия сечи и время регистрации отличается на 3 минуты, от чего и появляется ошибка, если в этот промежуток будет сделка или ордер, или еще что-то, что будет отображаться на графике

Andrii
Andrii Автор

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

В примере SimpleHistoryTesting предлагается: <u>SmaStrategy.cs</u>


			var trade = _myTrades.FirstOrDefault();
			_myTrades.Clear();

			var dict = new Dictionary<IChartElement, object>
			{
				{ _candlesElem, candle },
				{ _shortElem, new ChartIndicatorValue(ShortSma, shortValue) },
				{ _longElem, new ChartIndicatorValue(LongSma, longValue) },
				{ _tradesElem, trade }
			};

			_chart.ProcessValues(candle.OpenTime, dict);

накапливать сделки, а потом добавить их на график вместе со свечей

но при временном большом фрейме свечи, например 1 час, не видеть сделки на графике довольно проблематично.

по возможности, хочется иметь возможность добавлять и сделки без ожидания свечи.

то есть, нет возможность добавить свечу у которой candle.OpenTime будет меньше, чем время сделки, которая уже была добавлена на диаграмму

JaguarFX
JaguarFX

Коллеги, обновился до 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)!

Пока ошибка не исправлена, все историческое тестирование придется проводить без графиков.

devruss
devruss

Точно та же проблема, в билде .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:

Mikhail Sukhov
Mikhail Sukhov

devruss: Точно та же проблема, в билде .33 На .20 код работал без ошибок

Нет, это другая ошибка. Неупорядоченно идет добавление данных в график эквити.

Maxim
Maxim

Дорогие друзья, у меня подобная ошибка ("Невозможно изменить значение для свечи для даты 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. Может кто-то сталкивался с такой проблемой

Mikhail Sukhov
Mikhail Sukhov

В метод Draw или Process графика передается не отсортированные данные. Ваш код должен самостоятельно следить за тем, чтобы передавалось упорядоченно значения.

Maxim
Maxim

Михаил Сухов: В метод Draw или Process графика передается не отсортированные данные. Ваш код должен самостоятельно следить за тем, чтобы передавалось упорядоченно значения.

Михаил, это не “мой” код, а пример к 4-му уроку CandlesChartProject, как я понял, последняя версия (то, что лежит ВКонтакте.StockSharp.Edu). Там добавлено несколько чекбоксов для переключения коннекторов, а также перетянуты рефы на 43-ие dll-ки. Как я понимаю, в результате таких изменений, логика отрисовки графика не должна быть нарушена??? Как я уже писал, свечи в онлайн-режиме (подключение Quik Emulator) отрисовываются нормально. Ошибка возникает при генерации заявки или сделки (когда на свечке появляется стрелка). Я предположил, что это связано с тем, что стрелка, обозначающая сделку, может рисоваться на предыдущей свечке (что вызывает ошибку), и, “закомментировал” отрисовку элементов _chartOrderElement и _chartTradeElement. Это результата не дало, ошибка все равно происходит...

Maxim
Maxim

Михаил Сухов: В метод Draw или Process графика передается не отсортированные данные. Ваш код должен самостоятельно следить за тем, чтобы передавалось упорядоченно значения.

Михаил, это не “мой” код, а пример к 4-му уроку CandlesChartProject, как я понял, последняя версия (то, что лежит ВКонтакте.StockSharp.Edu). Там добавлено несколько чекбоксов для переключения коннекторов, а также перетянуты рефы на 43-ие dll-ки. Как я понимаю, в результате таких изменений, логика отрисовки графика не должна быть нарушена??? Как я уже писал, свечи в онлайн-режиме (подключение Quik Emulator) отрисовываются нормально. Ошибка возникает при генерации заявки или сделки (когда на свечке появляется стрелка). Я предположил, что это связано с тем, что стрелка, обозначающая сделку, может рисоваться на предыдущей свечке (что вызывает ошибку), и, “закомментировал” отрисовку элементов _chartOrderElement и _chartTradeElement. Это результата не дало, ошибка все равно происходит... Файл с проектом не получается прикрепить. Если надо, выложу.

Сергей Гаврилов
Сергей Гаврилов

Maxim: Михаил, это не “мой” код, а пример к 4-му уроку CandlesChartProject, как я понял, последняя версия (то, что лежит ВКонтакте.StockSharp.Edu). Там добавлено несколько чекбоксов для переключения коннекторов, а также перетянуты рефы на 43-ие dll-ки. Выложите Ваш проект. В CandlesChartProject из VK ошибку не удается воспроизвести.

Mikhail Sukhov
Mikhail Sukhov

Сергей Гаврилов: Выложите Ваш проект. В CandlesChartProject из VK ошибку не удается воспроизвести.

Лучше в контакт группу обучения. В открытом доступе нельзя распространять материалы от обучения.

Maxim
Maxim

Михаил Сухов:

Сергей Гаврилов: Выложите Ваш проект. В CandlesChartProject из VK ошибку не удается воспроизвести.

Лучше в контакт группу обучения. В открытом доступе нельзя распространять материалы от обучения.

https://vk.com/topic-66650972_31554139

Сергей Гаврилов
Сергей Гаврилов

Maxim:

Михаил Сухов:

Сергей Гаврилов: Выложите Ваш проект. В CandlesChartProject из VK ошибку не удается воспроизвести.

Лучше в контакт группу обучения. В открытом доступе нельзя распространять материалы от обучения.

https://vk.com/topic-66650972_31554139 Полдня гонял Ваш пример, воспроизвести ошибку не получается... Может еще какие-то детали есть специфические, определенное время, брокер, инструмент..

Maxim
Maxim

Сергей Гаврилов:

Maxim:

Михаил Сухов:

Сергей Гаврилов: Выложите Ваш проект. В CandlesChartProject из VK ошибку не удается воспроизвести.

Лучше в контакт группу обучения. В открытом доступе нельзя распространять материалы от обучения.

https://vk.com/topic-66650972_31554139 Полдня гонял Ваш пример, воспроизвести ошибку не получается... Может еще какие-то детали есть специфические, определенное время, брокер, инструмент.. Те единственный вариант - это видео, если у Вас даже сборка на 43 Dll ке не воспроизводит ошибку......

Maxim
Maxim

Maxim:

Сергей Гаврилов:

Maxim:

Михаил Сухов:

Сергей Гаврилов: Выложите Ваш проект. В CandlesChartProject из VK ошибку не удается воспроизвести.

Лучше в контакт группу обучения. В открытом доступе нельзя распространять материалы от обучения.

https://vk.com/topic-66650972_31554139 Полдня гонял Ваш пример, воспроизвести ошибку не получается... Может еще какие-то детали есть специфические, определенное время, брокер, инструмент.. Те единственный вариант - это видео, если у Вас даже сборка на 43 Dll ке не воспроизводит ошибку......

Брокер Quik, Connrctor - Quik Emulator... v 6.14

Maxim
Maxim

Maxim:

Maxim:

Сергей Гаврилов:

Maxim:

Михаил Сухов:

Сергей Гаврилов: Выложите Ваш проект. В CandlesChartProject из VK ошибку не удается воспроизвести.

Лучше в контакт группу обучения. В открытом доступе нельзя распространять материалы от обучения.

https://vk.com/topic-66650972_31554139 Полдня гонял Ваш пример, воспроизвести ошибку не получается... Может еще какие-то детали есть специфические, определенное время, брокер, инструмент.. Те единственный вариант - это видео, если у Вас даже сборка на 43 Dll ке не воспроизводит ошибку......

Брокер Quik, Connrctor - Quik Emulator... v 6.14

Да, брокер Quik (Connector - Quik Emulator, Finam). Инструмент - RIH5. Куда выкладывать?

Maxim
Maxim

Maxim:

Maxim:

Сергей Гаврилов:

Maxim:

Михаил Сухов:

Сергей Гаврилов: Выложите Ваш проект. В CandlesChartProject из VK ошибку не удается воспроизвести.

Лучше в контакт группу обучения. В открытом доступе нельзя распространять материалы от обучения.

https://vk.com/topic-66650972_31554139 Полдня гонял Ваш пример, воспроизвести ошибку не получается... Может еще какие-то детали есть специфические, определенное время, брокер, инструмент.. Те единственный вариант - это видео, если у Вас даже сборка на 43 Dll ке не воспроизводит ошибку......

Брокер Quik, Connrctor - Quik Emulator... v 6.14

Куда выкладывать виде, если нужно?!

Maxim
Maxim

Сергей Гаврилов:

Maxim:

Михаил Сухов:

Сергей Гаврилов: Выложите Ваш проект. В CandlesChartProject из VK ошибку не удается воспроизвести.

Лучше в контакт группу обучения. В открытом доступе нельзя распространять материалы от обучения.

https://vk.com/topic-66650972_31554139 Полдня гонял Ваш пример, воспроизвести ошибку не получается... Может еще какие-то детали есть специфические, определенное время, брокер, инструмент..

Выложил видео с рабочего стола с ошибкой. В конце видно CallStack...https://vk.com/topic-66650972_31554139

Maxim
Maxim

Maxim:

Сергей Гаврилов:

Maxim:

Михаил Сухов:

Сергей Гаврилов: Выложите Ваш проект. В CandlesChartProject из VK ошибку не удается воспроизвести.

Лучше в контакт группу обучения. В открытом доступе нельзя распространять материалы от обучения.

https://vk.com/topic-66650972_31554139 Полдня гонял Ваш пример, воспроизвести ошибку не получается... Может еще какие-то детали есть специфические, определенное время, брокер, инструмент..

Выложил видео с рабочего стола с ошибкой. В конце видно CallStack...https://vk.com/topic-66650972_31554139

Вопрос закрыт. Всем спасибо!

Mikhail Sukhov
Mikhail Sukhov

Напишите в чат тех поддержки

Maxim