← Zurück

Проблема с импортом данных

Есть csv в таком формате:

#RIC Date[G] Time[G] GMT Offset Type Open High Low Last Volume ESH4 20140302 23:00:00.000 -6 Intraday 1Sec 1846 1846.25 1845 1845.75 3958

Как мне заполнить поля в настройках импорта?

  1. Столбцы имеют нумерацию с 0 или 1?
  2. Дата формата YYYYMMDD не распознается: 01:31:56 System.InvalidCastException: Cannot convert Time[G] with format YYYYMMDD to DateTime. ---> System.FormatException: String was not recognized as a valid DateTime. at System.DateTimeParse.ParseExact(String s, String format, DateTimeFormatInfo dtfi, DateTimeStyles style) at Ecng.Common.Converter.ToDateTime(String value, String format) --- End of inner exception stack trace --- at Ecng.Common.Converter.ToDateTime(String value, String format) at StockSharp.Hydra.Panes.ImportPane.FieldMapping.ApplyValue(Object instance, Object value) at StockSharp.Hydra.Panes.ImportPane.<>c__DisplayClass13b.<OnDoWork>b__13a() at Ecng.Common.Converter.<>c__DisplayClassf.<DoInCulture>b__e() at Ecng.Common.Converter.DoInCulture(CultureInfo cultureInfo, Func`1 func) at StockSharp.Hydra.Panes.ImportPane.OnDoWork(Object sender, DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

War dieses Thema hilfreich?

Thema teilen

Kommentare (13)

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

Mikhail Sukhov
Mikhail Sukhov

devruss:

  1. Столбцы имеют нумерацию с 0 или 1?
  2. Дата формата YYYYMMDD не распознается:
  1. 0
  2. С т.з. C# это некорректный формат. Год указывается как yyyy.
devruss
devruss Autor

Скачал данные из Reuters, там время указывается как hh:mm:ss.sss - Гидра не понимает данный формат. Добавьте пожалуйста возможность использовать микро-секунды, мы же все-таки алго-трейдеры=))

00:03:21 System.InvalidCastException: Cannot convert 23:00:00.000 with format hh:mm:ss to TimeSpan. ---> System.FormatException: Input string was not in a correct format. at System.Globalization.TimeSpanParse.TimeSpanResult.SetFailure(ParseFailureKind failure, String failureMessageID, Object failureMessageFormatArgument, String failureArgumentName) at System.Globalization.TimeSpanParse.TryParseByFormat(String input, String format, TimeSpanStyles styles, TimeSpanResult& result) at System.Globalization.TimeSpanParse.ParseExact(String input, String format, IFormatProvider formatProvider, TimeSpanStyles styles) at Ecng.Common.Converter.ToTimeSpan(String value, String format) --- End of inner exception stack trace --- at Ecng.Common.Converter.ToTimeSpan(String value, String format) at StockSharp.Hydra.Panes.ImportPane.FieldMapping.ApplyValue(Object instance, Object value) at StockSharp.Hydra.Panes.ImportPane.<>c__DisplayClass13b.<OnDoWork>b__13a() at Ecng.Common.Converter.<>c__DisplayClassf.<DoInCulture>b__e() at Ecng.Common.Converter.DoInCulture(CultureInfo cultureInfo, Func`1 func) at StockSharp.Hydra.Panes.ImportPane.OnDoWork(Object sender, DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

Mikhail Sukhov
Mikhail Sukhov

devruss: Скачал данные из Reuters, там время указывается как hh:mm:ss.sss - Гидра не понимает данный формат. Добавьте пожалуйста возможность использовать микро-секунды, мы же все-таки алго-трейдеры=))

При импорте используется стандартное форматирование дат C#. Там и микросекунды, и наносекунды. Да чего только нет.

devruss
devruss Autor

Михаил Сухов:

devruss: Скачал данные из Reuters, там время указывается как hh:mm:ss.sss - Гидра не понимает данный формат. Добавьте пожалуйста возможность использовать микро-секунды, мы же все-таки алго-трейдеры=))

При импорте используется стандартное форматирование дат C#. Там и микросекунды, и наносекунды. Да чего только нет.

Ок, тогда как надо ввести формат времени, чтобы импорт 23:00:00.000 не приводил к ошибке?

Mikhail Sukhov
Mikhail Sukhov

devruss: Ок, тогда как надо ввести формат времени, чтобы импорт 23:00:00.000 не приводил к ошибке?

http://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx

devruss
devruss Autor

Михаил Сухов:

devruss: Ок, тогда как надо ввести формат времени, чтобы импорт 23:00:00.000 не приводил к ошибке?

http://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx

прочитал документ, как указано, делаю формат HH:mm:ss.fff и все равно Cannot convert 23:00:00.000 with format HH:mm:ss.fff to TimeSpan. ---> System.FormatException: Input string was not in a correct format.

(пробовал hh:mm:ss.fff, hh:mm:ss.FFF, HH:mm:ss.fff, HH:mm:ss.FFF - все равно одна и таже ошибка)

Mikhail Sukhov
Mikhail Sukhov

devruss:

Михаил Сухов:

devruss: Ок, тогда как надо ввести формат времени, чтобы импорт 23:00:00.000 не приводил к ошибке?

http://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx

прочитал документ, как указано, делаю формат HH:mm:ss.fff и все равно Cannot convert 23:00:00.000 with format HH:mm:ss.fff to TimeSpan. ---> System.FormatException: Input string was not in a correct format.

(пробовал hh:mm:ss.fff, hh:mm:ss.FFF, HH:mm:ss.fff, HH:mm:ss.FFF - все равно одна и таже ошибка)

http://stackoverflow.com/questions/14621982/timespan-string-formatting

devruss
devruss Autor

Михаил,

Можно не ссылку, а ответ как именно поставить Формат в Гидре. Вручную отпарсить файл я могу и на C# и на Python, а вот Гидра никак его съедать не хочет. Могу в скайпе скинуть часть файла, чтобы сам мог убедиться

devruss
devruss Autor

если поставить hh:mm:ss.fff, то вываливается новая ошибка 15:21:53 Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'object' does not contain a definition for 'Save' at CallSite.Target(Closure , CallSite , Object , IOrderedEnumerable1 ) at StockSharp.Hydra.Panes.ImportPane.FlushBuffer(IEnumerable1 buffer, IMarketDataDrive drive) at StockSharp.Hydra.Panes.ImportPane.<>c__DisplayClass13b.<OnDoWork>b__13a() at Ecng.Common.Converter.<>c__DisplayClassf.<DoInCulture>b__e() at Ecng.Common.Converter.DoInCulture(CultureInfo cultureInfo, Func`1 func) at StockSharp.Hydra.Panes.ImportPane.OnDoWork(Object sender, DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

Mikhail Sukhov
Mikhail Sukhov

А какой тип данных импортируется?

devruss
devruss Autor

Стандартные свечки из Reuters Database, с тиками такая же проблема

CSV файл с такой вот структурой:

#RIC,Date[G],Time[G],GMT Offset,Type,Open,High,Low,Last,Volume ESH4,01/12/2013,23:00:00,-6,Intraday 1Sec,1799.5,1799.75,1799.5,1799.75,7 ESH4,01/12/2013,23:00:05,-6,Intraday 1Sec,1799.5,1799.5,1799.5,1799.5,1

devruss
devruss Autor

При импорте тиков из Reuters - вот такая ошибка:

19:25:12 System.InvalidCastException: Cannot convert to type System.Decimal. ---> System.ArgumentNullException: Value cannot be null. Parameter name: value at Ecng.Common.Converter.To(Object value, Type destinationType) --- End of inner exception stack trace --- at Ecng.Common.Converter.To(Object value, Type destinationType) at StockSharp.Hydra.Panes.ImportPane.FieldMapping.ApplyValue(Object instance, Object value) at StockSharp.Hydra.Panes.ImportPane.<>c__DisplayClass13b.<OnDoWork>b__13a() at Ecng.Common.Converter.<>c__DisplayClassf.<DoInCulture>b__e() at Ecng.Common.Converter.DoInCulture(CultureInfo cultureInfo, Func`1 func) at StockSharp.Hydra.Panes.ImportPane.OnDoWork(Object sender, DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

Файл имеет следующий вид: #RIC,Date[L],Time[L],Type,Price,Volume ESH4,01/12/2013,17:00:00.119,Trade,1799.5,1 ESH4,01/12/2013,17:00:00.504,Trade,1799.75,1 ESH4,01/12/2013,17:00:00.504,Trade,1799.75,3 ESH4,01/12/2013,17:00:00.580,Trade,1799.75,1 ESH4,01/12/2013,17:00:00.709,Trade,1799.75,1 ESH4,01/12/2013,17:00:05.252,Trade,1799.5,1 ESH4,01/12/2013,17:00:06.854,Trade,1800,1 ESH4,01/12/2013,17:00:13.460,Trade,1799.75,

Т.е. в некоторых местах Volume пропущен. Если ставить значение по умолчанию 1, то эта ошибка уходит, но появляется знакомая ошибка:

19:27:30 Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'object' does not contain a definition for 'Save' at CallSite.Target(Closure , CallSite , Object , IOrderedEnumerable1 ) at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid2[T0,T1](CallSite site, T0 arg0, T1 arg1) at StockSharp.Hydra.Panes.ImportPane.FlushBuffer(IEnumerable1 buffer, IMarketDataDrive drive) at StockSharp.Hydra.Panes.ImportPane.<>c__DisplayClass13b.<OnDoWork>b__13a() at Ecng.Common.Converter.<>c__DisplayClassf.<DoInCulture>b__e() at Ecng.Common.Converter.DoInCulture(CultureInfo cultureInfo, Func`1 func) at StockSharp.Hydra.Panes.ImportPane.OnDoWork(Object sender, DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

devruss
devruss Autor

Обновил Гидру, теперь данные импортируются...

Но есть новая ошибка - импортируемые инструменты не добавляются в список "Все инструменты", но если зайти в Импорт - Свечки - Выбор инструмента, то импортированные инструменты там уже есть...

Проблема в том, что непонятно как обращаться к инструментам из S#... он их просто не видит, хотя в базе они есть