Проблема с GetCandleBounds()
Atom Ответить
10.08.2014


Возникла проблема с GetCandleBounds() в этом куске кода:
Код

var timeFrame = (TimeSpan)candle.Arg;
            var time = timeFrame.GetCandleBounds(Security).Min - timeFrame;

            if (candle.OpenTime < time                
            {
                return;
            }


Такое ощущение, что внутри S# слетели временные зоны:
для свечки {03/17/2014 12:56:00} выдается timeFrame.GetCandleBounds(Security) {Min:03/17/2014 16:56:00 Max:03/17/2014 16:57:00}
для {03/17/2014 15:29:00} - timeFrame.GetCandleBounds(Security) {Min:03/17/2014 19:29:00 Max:03/17/2014 19:30:00}
Т.е. ровно +4 часа...

В итоге стратегия вообще не исполняется, так как думает, что ей кормят старые данные


Теги:


Спасибо:




9 Ответов
devruss

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


Дорогая команда S#,
Если ингорировать вопросы пользователей, которые УЖЕ пользуются вашим продуктом, то НОВЫХ пользователей от этого сильно больше не станет... Особенно когда речь идет о критических баг репортах, из-за которых вообще весь код перестает работать
Автор топика
Спасибо: Rebelion

Mikhail Sukhov

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


Локальное время отличается от биржевого на +4 часа. В чем проблема-то? Работает вроде бы корректно.
Спасибо:

devruss

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


devruss Перейти

В итоге стратегия вообще не исполняется, так как думает, что ей кормят старые данные


1. candle.OpenTime < time дает TRUE для ВСЕХ свечек и стратегия не срабатывает
2. Локальное время НЕ отличается от биржевого, так как я и биржа в Москве
Автор топика
Спасибо:

Mikhail Sukhov

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


Это реальное подключение или история?
Спасибо:

devruss

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


Михаил Сухов Перейти
Это реальное подключение или история?


История, причем проблемы именно с РФ инструментами (фьючами), фьючи на америку, импортированные в UTC работают ок. Один и тот же код тестера не отрабатывает фьючи на РФ и спокойно отрабатывает на US данных, импортированных в UTC времени
Автор топика
Спасибо:

Mikhail Sukhov

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


На SampleHist воспроизводится?
Спасибо:

devruss

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


Михаил Сухов Перейти
На SampleHist воспроизводится?


1. В SampleHist нет такого кода... Этот кусок кода был взят из уроков и еще каких-то тестовых стратегий
2. Проверить, что GetCandleBounds() дает неверный результат можно из любого примера. Если вставить кусок кода из топика в SampleHist - проблема воспроизведется. Стратегия вообще не сработает ни разу
Автор топика
Спасибо:

devruss

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


devruss Перейти
Михаил Сухов Перейти
На SampleHist воспроизводится?


1. В SampleHist нет такого кода... Этот кусок кода был взят из уроков и еще каких-то тестовых стратегий
2. Проверить, что GetCandleBounds() дает неверный результат можно из любого примера. Если вставить кусок кода из топика в SampleHist - проблема воспроизведется. Стратегия вообще не сработает ни разу


Как вариант:
1. берем стратегию First Strategy из StockSharp_Edu\03_lesson (Strategy)\Strategy\
2. и добавляем ее в SampleHistoryTesting
3. (убираем упоминания Квика, чтобы она запустилась)

.... и запускаем, предварительно поставив точку остановки в тело стратегии, например на "bool signalBuy = false;"
Бэкстест завершается, при этом тело стратегии ни разу не исполнилось... и все из-за неверного GetCandleBounds()
Автор топика
Спасибо:

devruss

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


Проверил ситуацию на живых данных - свечки, поступающие из Transaq, GetCandleBounds()отрабатывает правильно... А вот свечки из хранилища Гидры - нет
Автор топика
Спасибо:


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

loading
clippy