← 返回

Некорректное время в Эмуляторе

Скачал с Финама историю по Сберу, тестирую в Эмуляторе, версия последняя из Транка с КодеПлекса. Эмулятор формирует 10-минутные свечи и передает в стратегию. Суть проблемы: команда внутри стратегии this.CurrentTime.ToString("yyyy.MM.dd HH:mm:ss") выдает начало дня иногда нормально, а иногда на час раньше обычного. Не пойму, то ли данные битые, то ли косяк в коде

CurrentTime:2008.03.28 17:20:00, позиция = 0, H = 73,20000, L = 72,98000, _volume = 0 CurrentTime:2008.03.28 17:30:02, позиция = 0, H = 73,21000, L = 72,98000, _volume = 0 CurrentTime:2008.03.28 17:40:01, позиция = 0, H = 73,24000, L = 73,01000, _volume = 0 CurrentTime:2008.03.31 09:29:59, позиция = 0, H = 73,89000, L = 73,10000, _volume = 0 CurrentTime:2008.03.31 09:30:01, позиция = 0, H = 72,91000, L = 72,91000, _volume = 0 CurrentTime:2008.03.31 09:40:00, позиция = 0, H = 72,90000, L = 72,40000, _volume = 0 CurrentTime:2008.03.31 09:50:00, позиция = 0, H = 73,20000, L = 72,81000, _volume = 0

评论 (15)

登录创建账户, 登录或注册以发表评论

Alexander
Alexander

Вначале стоит проверить данные.

Кот Матроскин
Кот Матроскин 作者

Alexander Mukhanchikov: Вначале стоит проверить данные. Это я понимаю. Но как?

Mikhail Sukhov
Mikhail Sukhov

Кот Матроскин:

Alexander Mukhanchikov: Вначале стоит проверить данные. Это я понимаю. Но как?

Прогоните с теми данными, что у нас приложены к исходникам. Они по RIU9.

Кот Матроскин
Кот Матроскин 作者

Mikhail Sukhov: Прогоните с теми данными, что у нас приложены к исходникам. Они по RIU9. Попробую, но только там период другой. Посмотрел старые свои логи (4.0.23), так там эти же дни все нормально. Историю с тех пор новую не закачивал

Кот Матроскин
Кот Матроскин 作者

Mikhail Sukhov: Прогоните с теми данными, что у нас приложены к исходникам. Они по RIU9. Прогнал с приложенными исходниками: CurrentTime:2009.08.17 22:10:06, позиция = 0, H = 98040, L = 97830, _volume = 0 CurrentTime:2009.08.17 22:20:12, позиция = 0, H = 98015, L = 97710, _volume = 0 CurrentTime:2009.08.17 22:30:01, позиция = 0, H = 97885, L = 97255, _volume = 0 CurrentTime:2009.08.17 22:40:01, позиция = 0, H = 97610, L = 97330, _volume = 0 CurrentTime:2009.08.18 09:30:00, позиция = 0, H = 97565, L = 97300, _volume = 0 CurrentTime:2009.08.18 09:40:00, позиция = 0, H = 100180, L = 97395, _volume = 0 CurrentTime:2009.08.18 09:50:00, позиция = 0, H = 100075, L = 99875, _volume = 0 CurrentTime:2009.08.18 10:00:00, позиция = 0, H = 100415, L = 99970, _volume = 0 CurrentTime:2009.08.18 10:10:00, позиция = 0, H = 100700, L = 100300, _volume = 0 Проблема очевидна. Непонятно только почему эта проблема то появляется, то исчезает...

Mikhail Sukhov
Mikhail Sukhov

Кот Матроскин: Проблема очевидна. Непонятно только почему эта проблема то появляется, то исчезает...

Окей, раз на наших данных так же, теперь к основному вопросу. А в чем заключается проблема?

Кот Матроскин
Кот Матроскин 作者

Mikhail Sukhov:

Кот Матроскин: Проблема очевидна. Непонятно только почему эта проблема то появляется, то исчезает...

Окей, раз на наших данных так же, теперь к основному вопросу. А в чем заключается проблема?

Писал выше: Суть проблемы: команда внутри стратегии this.CurrentTime.ToString("yyyy.MM.dd HH:mm:ss") выдает начало дня иногда нормально, а иногда на час раньше обычного В общем, сдвигает время...

Mikhail Sukhov
Mikhail Sukhov

Кот Матроскин: Суть проблемы: команда внутри стратегии this.CurrentTime.ToString("yyyy.MM.dd HH:mm:ss") выдает начало дня иногда нормально, а иногда на час раньше обычного В общем, сдвигает время...

А как вы проверяется, что внутри дня что-то сдвигается? Что является эталоном для сравнения?

transdex
transdex

Кот Матроскин: Суть проблемы: команда внутри стратегии this.CurrentTime.ToString("yyyy.MM.dd HH:mm:ss") выдает начало дня иногда нормально, а иногда на час раньше обычного. Не пойму, то ли данные битые, то ли косяк в коде

Информация к размышлению:

1.В первом случае у Вас сдвинуто начало сессии за 31.03.2008, но конец предыдущей 28.03.2008 на месте. 2. 30.03.2008 осуществлен переход на летнее время. 3. Там где данные за август 2009 года, сдвинуты не только начало утренней сессии, но и конец предыдущей вечерней.

Кот Матроскин
Кот Матроскин 作者

transdex: Информация к размышлению: 1.В первом случае у Вас сдвинуто начало сессии за 31.03.2008, но конец предыдущей 28.03.2008 на месте. 2. 30.03.2008 осуществлен переход на летнее время. 3. Там где данные за август 2009 года, сдвинуты не только начало утренней сессии, но и конец предыдущей вечерней. Очень может быть. Но это уже вопрос к разработчикам. Я беру просто беру скачанные данные и тестирую.

Mikhail Sukhov: А как вы проверяется, что внутри дня что-то сдвигается? Что является эталоном для сравнения? Ставлю правило на закрытие позиции за 10 мин до окончания сессии (18-35). Но данные заканчиваются в 17-45 (на час раньше). Приходящие свечи сдвинуты на 1 час назад (т.е. время в них более раннее, чем должно быть) Эталон для сравнения - время работы биржи ММВБ за указанный период и история с Финама

Mikhail Sukhov
Mikhail Sukhov

Кот Матроскин: Эталон для сравнения - время работы биржи ММВБ за указанный период и история с Финама

Вы можете код привести, показывающий это сравнение. На словах я не понял ни что вы сравниваете, ни с чем вы сравниваете, ни есть ли вообще ошибка.

transdex
transdex

Кот Матроскин: Ставлю правило на закрытие позиции за 10 мин до окончания сессии (18-35).

Это Вы зря. Сессия не всегда заканчивалась в 18-45.

Для примера:

В марте 2007 года торги на российских биржах были сокращены на час: на РТС — до 18.00, на ММВБ — до 17.45. Однако во время кризиса в прошлом году ФСФР продлила торги на ММВБ до 18.45.

http://www.ugrafinance.ru/ru/about/press/press_detail.php?ID=365

Кот Матроскин
Кот Матроскин 作者

transdex: Это Вы зря. Сессия не всегда заканчивалась в 18-45. До 30 сентября 2008 было до 17-45, а потом до 18-45. Кроме того, закрывалось иногда и раньше, но это разовые случаи - это все учитывалось

Кот Матроскин
Кот Матроскин 作者

Mikhail Sukhov: Вы можете код привести, показывающий это сравнение. На словах я не понял ни что вы сравниваете, ни с чем вы сравниваете, ни есть ли вообще ошибка. В protected override void OnStarted() подписываюсь на _series.WhenCandlesFinished() В private void OnCandlesFinished(Candle candle) стоит _logger.Write("CurrentTime:" + this.CurrentTime.ToString("yyyy.MM.dd HH:mm:ss"........ А уже тут мне прилетает CurrentTime:2009.08.17 22:10:06, позиция = 0, H = 98040, L = 97830, _volume = 0 CurrentTime:2009.08.17 22:20:12, позиция = 0, H = 98015, L = 97710, _volume = 0 CurrentTime:2009.08.17 22:30:01, позиция = 0, H = 97885, L = 97255, _volume = 0 CurrentTime:2009.08.17 22:40:01, позиция = 0, H = 97610, L = 97330, _volume = 0 CurrentTime:2009.08.18 09:30:00, позиция = 0, H = 97565, L = 97300, _volume = 0 CurrentTime:2009.08.18 09:40:00, позиция = 0, H = 100180, L = 97395, _volume = 0 CurrentTime:2009.08.18 09:50:00, позиция = 0, H = 100075, L = 99875, _volume = 0 CurrentTime:2009.08.18 10:00:00, позиция = 0, H = 100415, L = 99970, _volume = 0 CurrentTime:2009.08.18 10:10:00, позиция = 0, H = 100700, L = 100300, _volume = 0 И это время иногда бывает сдвинуто на час... (в 9-30 торговля не начиналась никогда и в 22-50 никогда не заканчивалась) Уже и не знаю, как понятней объяснить)))

Mikhail Sukhov
Mikhail Sukhov

Кот Матроскин: И это время иногда бывает сдвинуто на час... (в 9-30 торговля не начиналась никогда и в 22-50 никогда не заканчивалась)

Фикс в транке. Проверил, вроде не появляется на истории этого времени.