← Zurück

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()

повторяется постоянно

War dieses Thema hilfreich?

Thema teilen

Kommentare (28)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

esper
esper

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

Andrii
Andrii Autor

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

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

Andrii
Andrii Autor
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 Autor

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

Series.WhenCandlesFinished()
                   .Do(c =>
                   {
                       ProcessCandle(c);
                   })
                   .Apply(Strategy);
Andrii
Andrii Autor

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

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

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

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

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

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

Andrii
Andrii Autor

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

Andrii
Andrii Autor

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

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

Andrii
Andrii Autor
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 Autor

В 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