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


Ошибка при импорте истории в Гидру
Atom
5/30/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)

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

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

Tags:


Thanks:


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

Avatar
Date: 5/31/2015
Reply


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

lionshare

Avatar
Date: 5/31/2015
Reply


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

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

Avatar
Date: 6/3/2015
Reply


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


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

lionshare

Avatar
Date: 6/4/2015
Reply


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

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

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

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

Avatar
Date: 6/6/2015
Reply


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

lionshare

Avatar
Date: 6/6/2015
Reply


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


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

loading
clippy