Объединение исторических и текущих свечек

Объединение исторических и текущих свечек
Atom
4/7/2011
morincer


Приветствую!

Долго пытался разобраться самостоятельно, но так и не нашел ответов.
Задача состоит в следующем: необходимо получить "ленту" пятимянутных свечек - от текущего момента (после подключения) до, допустим, минус две недели назад.
Собственно, вопросы:
1) Если вызвать RegisterHistoryData и слушать NewHistoryCandle - как узнать, что я получил все свечки в заданном диапазоне?
2) В документации сказано, что RegisterHistoryData получает свечки за предыдущие торговые сессии. Как тогда получить данные за текущую сессию (предполагаю, что подключился в середине торгового дня и нужно получить свечки более ранние)?
3) И последнее, но не в последнюю очередь - адаптация решения первых двух вопросов к тестированию на исторических данных - как?

Зараннее спасибо!

Tags:


Thanks:


Mikhail Sukhov

Avatar
Date: 4/7/2011
Reply


morincer
Приветствую!

Долго пытался разобраться самостоятельно, но так и не нашел ответов.
Задача состоит в следующем: необходимо получить "ленту" пятимянутных свечек - от текущего момента (после подключения) до, допустим, минус две недели назад.
Собственно, вопросы:
1) Если вызвать RegisterHistoryData и слушать NewHistoryCandle - как узнать, что я получил все свечки в заданном диапазоне?
2) В документации сказано, что RegisterHistoryData получает свечки за предыдущие торговые сессии. Как тогда получить данные за текущую сессию (предполагаю, что подключился в середине торгового дня и нужно получить свечки более ранние)?
3) И последнее, но не в последнюю очередь - адаптация решения первых двух вопросов к тестированию на исторических данных - как?

Зараннее спасибо!


1. Эфристически.[smile]
2. Попробуйте за текущую сессию.
3. Тестирование идет на основе тиковых данных.
Thanks:

Daenur

Avatar
Date: 1/4/2012
Reply


Возрожу эту тему.

Объединяю историю с реалтаймом.

Code
// Подписка на события
((SmartTrader)this.trader).NewHistoryCandles += (token, candles) => this.historyCandles.SyncDo(col =>
{
	// Сохраняем исторические бары
	this.historyCandles.AddRange(candles);
	// Отрисовываем исторические бары
	chartWindow.DrawCandles(token, candles);
});

candleManager.CandlesStarted += DrawRealTimeCandles;
candleManager.CandlesChanged += DrawRealTimeCandles;
candleManager.CandlesFinished += DrawRealTimeCandles;

// Собственно забираю историю
TimeSpan ts = new TimeSpan(currentTimeFrame.Hours * 100, currentTimeFrame.Minutes * 100, currentTimeFrame.Seconds * 100);
Range<DateTime> range = new Range<DateTime>((DateTime.Now - ts), DateTime.Now);
((SmartTrader)trader).RegisterHistoryCandles(this.SelectedSecurity, this.currentTimeFrame, range);
this.lastHistoryCandle = this.currentTimeFrame.GetCandleBounds(this.trader).Min;

// Дальнейшая отрисовка реал-тайм
public void DrawRealTimeCandles(CandleToken token, IEnumerable<Candle> candles)
{
	this.GuiAsync(() =>
	{
		IEnumerable<Candle> realTimeCandles = candles;

		// Для SmartCOM выводим только те свечки, которые не были отрисованы как исторические
		if (this.rbSmart.IsChecked == true)
			realTimeCandles = candles.Where(c => c.Time > this.lastHistoryCandle);

		chartWindow.DrawCandles(token, realTimeCandles);
	});
}



История забирается нормально, реалтайм тоже без проблем идет. Единственная и довольно неприятная проблема - бар, на котором происходит соединение. Он, вроде как и из истории не берется полноценным, и из реалтайма. В результате бар, на котором произошло подключение, не совпадает с реальностью. Есть какие-нибудь способы получить его правильно, чтобы как в КВИКе было, где все нормально? Кто как решает эту проблему?

ЗЫ. Самое интересное, что похожей проблемой грешат RightEdge и OpenQuant на разных источниках данных. Но тут-то у нас все в руках, вопрос только - как? [blush]
Thanks:

Mikhail Sukhov

Avatar
Date: 1/4/2012
Reply


Если последняя версия S#, то там сейчас есть SmartCandleSource для удобной работы с CandleManager. Это во-первых. А во-вторых, история у СмартКом не важнецкая. Лучше искать альтернативные источники.
Thanks:

Daenur

Avatar
Date: 1/6/2012
Reply


Спасибо, буду разбираться.

Со Смартом вообще довольно много проблем, но нужно под него сделать. :(
Thanks:


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

loading
clippy