← Zurück

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

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

Пытаюсь импортировать исторические данные по трейдам из 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(CultureInfo cultureInfo, Func`1 func) в StockSharp.Hydra.Panes.ImportPane.OnDoWork(Object sender, DoWorkEventArgs e) в System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

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

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (6)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

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

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

lionshare
lionshare Autor

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

Сергей Гаврилов
  1. дату нужно указывать с сдвигом времени

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

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

  1. А самое прикольное, что строку формата нужно писать вот так: 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/questions/11719055/why-does-timespan-parseexact-not-work

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

lionshare
lionshare
lionshare Autor

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

Отсюда несколько уточняющих вопросов, если можно:

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

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

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

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

lionshare
lionshare
lionshare Autor

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