← Zurück

Проблема с GetCandleBounds()

Возникла проблема с 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 часа...

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (9)

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

devruss
devruss Autor

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

Rebelion
Mikhail Sukhov
Mikhail Sukhov

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

devruss
devruss Autor

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

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

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

devruss
devruss Autor

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

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

Mikhail Sukhov
Mikhail Sukhov

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

devruss
devruss Autor

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

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

devruss:

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

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

Как вариант:

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

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

devruss
devruss Autor

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