Свечи с таймфреймом менее секунды
Atom Ответить
28.11.2011


Использую версию 3.2.11
Пробую сохранить сформированные свечи в тхт формат из Гидры. Таймфрейм для свечей менее секунды. Все, кроме отсутствия в дате долей секунд, формируется, похоже, правильно. В тхт экспортируются с точностью до секунды. Поменял txt_export_candles.st на:

$candles:{$it.Time; format="dd.MM.yyyy"$, $it.Time; format="HH:mm:ss.FFFFFFF"$, $it.OpenPrice$, $it.HighPrice$, $it.LowPrice$, $it.ClosePrice$, $it.TotalVolume$
}$

Все равно точность только до секунд. Похоже, что метод candleManager.GetCandles(token) в CandlesWindow формирует свечи со свойством Time с точностью до секунд. Можно повысить точность свойства Time?

Теги:


Спасибо:




9 Ответов
Alexander

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


а можно провести распечатку получившихся свечей по GetCandle?
с указанием как раз Time.

Есть подозрение что как раз тут всё нормально.
Спасибо:

vk37

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


Доверяй, но проверяй :)

Распечатка во вложении. Построены свечи по RIZ1@RTS от 24.10.2011 с 10:00 до 10:02, таймфрейм - 0.01 сек.

Код
private void Build_Click(object sender, RoutedEventArgs e)
{
	var candleManager = new CandleManager(Trades) { IsSyncRegister = true };

	CandleToken token = null;

	switch (CandleType.SelectedIndex)
	{
		case 0:
			token = candleManager.RegisterTimeFrameCandles(Security, ((DateTime)TimeFrame.DateTime).TimeOfDay);
			break;
		case 1:
			token = candleManager.RegisterTickCandles(Security, TickCount.Text.To<int>());
			break;
		case 2:
			token = candleManager.RegisterVolumeCandles(Security, Volume.Text.To<int>());
			break;
		case 3:
			token = candleManager.RegisterRangeCandles(Security, Range.Text.ToUnit(Security));
			break;
	}

	if (token == null)
		return;

    var candles = candleManager.GetCandles(token);

    foreach (var c in candles)
    {
        System.Diagnostics.Debug.WriteLine(c.Time.ToString("dd.MM.yyyy HH:mm:ss.FFFFFFF"));
    }

    BuildedCandles.ItemsSource = candles;
	ExportBtn.IsEnabled = ShowChart.IsEnabled = true;
}
candles.txt 85,5KB (0)
Автор топика
Спасибо:

Alexander

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


Ок, посмотрим.
Спасибо:

vk37

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


Из MSDN:
Цитата:
"FFFFFFF"
Если ненулевое значение, то десятимиллионные доли секунды в значении даты и времени.
Настраиваемый описатель формата "FFFFFFF" представляет семь наиболее значимых цифр секунд, то есть десятимиллионные доли секунды в значении даты и времени. При этом нули в конце или семь нулей не отображаются.
6/15/2009 13:45:30.6175425 -> 6175425
6/15/2009 13:45:30.0001150 -> 000115


Если бы доли секунды были, они бы отобразились :)
Автор топика
Спасибо:

Mikhail Sukhov

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


Пофиксили. Появиться на КодеПлекс в ближайшее время.
Спасибо:

vk37

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


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

vk37

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


Сделал робота на основе SampleSmartConsole. Столкнулся с тем, что отсутствуют доли секунд - теперь в сделках и в тиковых свечах:

Код
CandleManager.NewCandles += (token, candles) =>
{
    StringBuilder b = new StringBuilder();

    foreach (var candle in candles)
        if (candle.Security.Id == Security.Id && candle is TickCandle)
            b.Append("{0:dd.MM.yyyy}, {0:HH:mm:ss.FFFFFFF}, {1}, {2}, {3}, {4}, {5}{6}"
                .Put(candle.Time,
                candle.OpenPrice,
                candle.HighPrice,
                candle.LowPrice,
                candle.ClosePrice,
                candle.TotalVolume,
                Environment.NewLine));

    using (StreamWriter file = new StreamWriter(@"Tick", true))
        file.Write(b.ToString());

};

Код
Trader.NewTrades += trades =>
{
    StringBuilder b = new StringBuilder();

    foreach (var trade in trades)
        b.Append("{0:dd.MM.yyyy}, {0:HH:mm:ss.FFFFFFF}, {1}, {1}, {1}, {1}, {2}{3}"
            .Put(trade.Time, trade.Price, trade.Volume, Environment.NewLine));

    using (StreamWriter file = new StreamWriter(@"Tick", true))
        file.Write(b.ToString());
};


Я правильно понимаю, что ваш фикс пофиксит эту ситуацию тоже? Или мне просто нужно попробовать более новую версию? Или доли секунд Смарт не предоставляет? :)
Автор топика
Спасибо:

Mikhail Sukhov

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


vk37 Перейти
Или доли секунд Смарт не предоставляет? :)


Конечно, нет.
Спасибо:

vk37

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


Mikhail Sukhov Перейти
vk37 Перейти
Или доли секунд Смарт не предоставляет? :)


Конечно, нет.



Что-то они пожадничали :) На Плазе то же самое?
Автор топика
Спасибо:


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

loading
clippy