2.28: SciChart Exception

2.28: SciChart Exception
Atom
10/10/2014
Andrii


Code

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


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

Tags:


Thanks:


1 2 3  >
esper

Avatar
Date: 10/10/2014
Reply


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

Andrii

Avatar
Date: 10/16/2014
Reply


Code
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 тоже есть, как могут появляться ошибки с таким разбросом времени?
Thanks:

esper

Avatar
Date: 10/16/2014
Reply


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

Andrii

Avatar
Date: 10/16/2014
Reply


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

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

Thanks:

Andrii

Avatar
Date: 10/16/2014
Reply


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

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

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

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


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

Andrii

Avatar
Date: 10/17/2014
Reply


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

Andrii

Avatar
Date: 10/17/2014
Reply


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


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

Andrii

Avatar
Date: 10/17/2014
Reply


Code
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 минуты, от чего и появляется ошибка, если в этот промежуток будет сделка или ордер, или еще что-то, что будет отображаться на графике
Thanks:

Andrii

Avatar
Date: 10/18/2014
Reply


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

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

Code

			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 будет меньше, чем время сделки, которая уже была добавлена на диаграмму
Thanks:

JaguarFX

Avatar
Date: 10/21/2014
Reply


Коллеги, обновился до 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 (293)
Thanks:
1 2 3  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy