Есть 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
Как мне заполнить поля в настройках импорта?
- Столбцы имеют нумерацию с 0 или 1?
- Дата формата 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)
Comments (13)
Login or Create account, Log in or register to leave a comment
Скачал данные из 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)
При импорте используется стандартное форматирование дат C#. Там и микросекунды, и наносекунды. Да чего только нет.
Ок, тогда как надо ввести формат времени, чтобы импорт 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
Михаил,
Можно не ссылку, а ответ как именно поставить Формат в Гидре. Вручную отпарсить файл я могу и на C# и на Python, а вот Гидра никак его съедать не хочет. Могу в скайпе скинуть часть файла, чтобы сам мог убедиться
если поставить 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 , IOrderedEnumerable
1 ) 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)А какой тип данных импортируется?
Стандартные свечки из 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
При импорте тиков из 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 , IOrderedEnumerable
1 ) 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)Обновил Гидру, теперь данные импортируются...
Но есть новая ошибка - импортируемые инструменты не добавляются в список "Все инструменты", но если зайти в Импорт - Свечки - Выбор инструмента, то импортированные инструменты там уже есть...
Проблема в том, что непонятно как обращаться к инструментам из S#... он их просто не видит, хотя в базе они есть