2.28: SciChart Exception
Atom Ответить
10.10.2014


Код

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 Ответов
1 2  >
esper

Фотография
Программист
Дата: 10.10.2014
Ответить


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

Andrii

Фотография
Дата: 16.10.2014
Ответить


Код
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

Фотография
Программист
Дата: 16.10.2014
Ответить


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

Andrii

Фотография
Дата: 16.10.2014
Ответить


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

вполне может быть, что ошибка в QuikLua
данные добавляются как в примерах
Код
Series.WhenCandlesFinished()
                   .Do(c =>
                   {
                       ProcessCandle(c);
                   })
                   .Apply(Strategy);

Автор топика
Спасибо:

Andrii

Фотография
Дата: 16.10.2014
Ответить


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

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

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

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


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

Andrii

Фотография
Дата: 17.10.2014
Ответить


есть какие-то результаты?
Автор топика
Спасибо:

Andrii

Фотография
Дата: 17.10.2014
Ответить


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


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

Andrii

Фотография
Дата: 17.10.2014
Ответить


Код
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

Фотография
Дата: 18.10.2014
Ответить


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

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

Код

			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

Фотография
Курсы
Дата: 21.10.2014
Ответить


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

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


SciChartError.png 251 KB (0)
Спасибо:

devruss

Фотография
Курсы
Дата: 22.10.2014
Ответить


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

Фотография
Автор статей Программист Трейдер
Дата: 22.10.2014
Ответить


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


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

Andrii

Фотография
Дата: 26.11.2014
Ответить


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


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

Maxim

Фотография
Курсы
Дата: 18.12.2014
Ответить


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

Фотография
Автор статей Программист Трейдер
Дата: 18.12.2014
Ответить


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

Maxim

Фотография
Курсы
Дата: 22.12.2014
Ответить


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


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

Maxim

Фотография
Курсы
Дата: 22.12.2014
Ответить


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


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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 22.12.2014
Ответить


Напишите в чат тех поддержки
Спасибо: Maxim

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

Фотография
Курсы
Дата: 23.12.2014
Ответить


Maxim Перейти

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

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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 23.12.2014
Ответить


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

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


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

Maxim

Фотография
Курсы
Дата: 25.12.2014
Ответить


Михаил Сухов Перейти
Сергей Гаврилов Перейти

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


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


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

Спасибо:

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

Фотография
Курсы
Дата: 26.12.2014
Ответить


Maxim Перейти
Михаил Сухов Перейти
Сергей Гаврилов Перейти

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


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


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


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


Спасибо: Maxim

Maxim

Фотография
Курсы
Дата: 26.12.2014
Ответить


Сергей Гаврилов Перейти
Maxim Перейти
Михаил Сухов Перейти
Сергей Гаврилов Перейти

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


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


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


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



Те единственный вариант - это видео, если у Вас даже сборка на 43 Dll ке не воспроизводит
ошибку......
Спасибо:

Maxim

Фотография
Курсы
Дата: 26.12.2014
Ответить


Maxim Перейти
Сергей Гаврилов Перейти
Maxim Перейти
Михаил Сухов Перейти
Сергей Гаврилов Перейти

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


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


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


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



Те единственный вариант - это видео, если у Вас даже сборка на 43 Dll ке не воспроизводит
ошибку......


Брокер Quik, Connrctor - Quik Emulator... v 6.14
Спасибо:

Maxim

Фотография
Курсы
Дата: 28.12.2014
Ответить


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. Куда выкладывать?
Спасибо:
1 2  >

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy