Ошибка при импорте истории в Гидру
Atom
30.05.2015


Здравствуйте!

Пытаюсь импортировать исторические данные по трейдам из csv в Гидру.
Формат csv: date;time;price;volume
Пример строки:
14.08.2011;14:14:40;10.400000000000;0.779000000000

Перепробовал все варианты настроек импорта - не хочет. Стандартная ошибка:

19:00:45 System.InvalidCastException: Cannot convert 14:14:00 with format hh:mm:ss to TimeSpan. ---> System.FormatException: Входная строка имела неверный формат.
в System.Globalization.TimeSpanParse.TimeSpanResult.SetFailure(ParseFailureKind failure, String failureMessageID, Object failureMessageFormatArgument, String failureArgumentName)
в System.Globalization.TimeSpanParse.TryParseByFormat(String input, String format, TimeSpanStyles styles, TimeSpanResult& result)
в System.Globalization.TimeSpanParse.ParseExact(String input, String format, IFormatProvider formatProvider, TimeSpanStyles styles)
в Ecng.Common.TimeHelper.ToTimeSpan(String value, String format)
--- Конец трассировки внутреннего стека исключений ---
в Ecng.Common.TimeHelper.ToTimeSpan(String value, String format)
в StockSharp.Hydra.Panes.ImportPane.FieldMapping.ApplyValue(Object instance, Object value)
в StockSharp.Hydra.Panes.ImportPane.<>c__DisplayClass18d.<OnDoWork>b__18c()
в Ecng.Common.Converter.<>c__DisplayClassf.<DoInCulture>b__e()
в Ecng.Common.Converter.DoInCulture[T](CultureInfo cultureInfo, Func`1 func)
в StockSharp.Hydra.Panes.ImportPane.OnDoWork(Object sender, DoWorkEventArgs e)
в System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

Прилагаю скрин настроек импорта.

Помогите победить проблему, пожалуйста!

Теги:


Спасибо:


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

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


Вот так попробуй - dd.MM.yyyy HH:mm:ss
https://msdn.microsoft.com/ru-ru/library/8kb3ddd4(v=vs.110).aspx
Спасибо:

lionshare

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


Спасибо, но я это пробовал тоже... не помогает.
Спасибо:

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

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


1) дату нужно указывать с сдвигом времени

string datestring = "03.06.2015 +03";
string timestring = "12:05:36";

string dateformat = "dd.MM.yyyy zz";

2) А самое прикольное, что строку формата нужно писать вот так:
string timeformat= "hh\\:mm\\:ss"; // или так @"hh:mm:ss"

Но Гидра не понимает такой записи..

DateTimeOffset date = DateTimeOffset.ParseExact(datestring, dateformat, null);
TimeSpan time = TimeSpan.ParseExact(timestring, timeformat, null);


http://stackoverflow.com...pan-parseexact-not-work


когда указал формат времени 'с' то все заработало...
Спасибо: lionshare

lionshare

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


Спасибо! 'C'работало... :)
Кстати, дату у меня приняло без указания сдвига в csv. Но Гидра таки сама добавила +03 в поле TimeSpan в импортированных сделках.
И это при том, что часовой пояс в настройках у меня без сдвига был указан = UTC.

Отсюда несколько уточняющих вопросов, если можно:
- этот сдвиг обязательно нужно прописывать в исходном csv файле в поле даты или последовать принципу "если работает, то лучше не трогать"?
- и, если все же необходимо, то именно +03? или +02, в общем = сдвигу в моем часовом поясе?
- поле "часовой пояс" в настройках импорта Гидры - указывать тот, который используется в исходном csv (у меня UTC) или тот, где я нахожусь (UTC+2)?
- и последнее: вообще какова суть этого сдвига, указываемого в настройках?
Уравнять по времени исторические данные с теми котировками, которые будут закачиваться риалтайм на локальном компьютере (как бы в моем часовом поясе) - я верно понимаю?

Еще раз спасибо!
Спасибо:

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

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


Значение имеет не то в какой Вы зоне, а в какой зоне находится биржа, где данные были записаны... Кстати зона относится к типу DateTime или сдвиг к DateTimeOffset, а не к TimeSpan..
Спасибо: lionshare

lionshare

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


Уяснил. Спасибо! :)
Спасибо:


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

loading
clippy