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


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

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

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

Теги:


Спасибо:




4 Ответов
Mikhail Sukhov

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


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

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

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


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

Daenur

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


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

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

Код
// Подписка на события
((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 на разных источниках данных. Но тут-то у нас все в руках, вопрос только - как? Blushing
Спасибо:

Mikhail Sukhov

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


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

Daenur

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


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

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


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

loading
clippy