Проблема с импортом данных
Atom Ответить
19.03.2014


Есть 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[T](CultureInfo cultureInfo, Func`1 func)
at StockSharp.Hydra.Panes.ImportPane.OnDoWork(Object sender, DoWorkEventArgs e)
at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

Теги:


Спасибо:




13 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 20.03.2014
Ответить


devruss Перейти

1. Столбцы имеют нумерацию с 0 или 1?
2. Дата формата YYYYMMDD не распознается:


1. 0
2. С т.з. C# это некорректный формат. Год указывается как yyyy.
Спасибо:

devruss

Фотография
Курсы
Дата: 20.03.2014
Ответить


Скачал данные из 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[T](CultureInfo cultureInfo, Func`1 func)
at StockSharp.Hydra.Panes.ImportPane.OnDoWork(Object sender, DoWorkEventArgs e)
at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 20.03.2014
Ответить


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


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

devruss

Фотография
Курсы
Дата: 20.03.2014
Ответить


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


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


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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 20.03.2014
Ответить


devruss Перейти

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


http://msdn.microsoft.com/en-us.../8kb3ddd4(v=vs.110).aspx
Спасибо:

devruss

Фотография
Курсы
Дата: 20.03.2014
Ответить


Михаил Сухов Перейти
devruss Перейти

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


https://msdn.microsoft.com/en-us.../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

Фотография
Автор статей Программист Трейдер
Дата: 20.03.2014
Ответить


devruss Перейти
Михаил Сухов Перейти
devruss Перейти

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


https://msdn.microsoft.com/en-us.../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...mespan-string-formatting
Спасибо: Aleksey24

devruss

Фотография
Курсы
Дата: 21.03.2014
Ответить


Михаил,

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

devruss

Фотография
Курсы
Дата: 21.03.2014
Ответить


если поставить 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(IEnumerable`1 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[T](CultureInfo cultureInfo, Func`1 func)
at StockSharp.Hydra.Panes.ImportPane.OnDoWork(Object sender, DoWorkEventArgs e)
at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 21.03.2014
Ответить


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

devruss

Фотография
Курсы
Дата: 21.03.2014
Ответить


Стандартные свечки из 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

Фотография
Курсы
Дата: 22.03.2014
Ответить


При импорте тиков из 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[T](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(IEnumerable`1 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[T](CultureInfo cultureInfo, Func`1 func)
at StockSharp.Hydra.Panes.ImportPane.OnDoWork(Object sender, DoWorkEventArgs e)
at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

Автор топика
Спасибо:

devruss

Фотография
Курсы
Дата: 24.03.2014
Ответить


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

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

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


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy