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

Ошибка при импорте истории в Гидру
Atom
5/30/2015
lionshare


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

Пытаюсь импортировать исторические данные по трейдам из 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)

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

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


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";

  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

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

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