Возникла проблема с 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 часа...
В итоге стратегия вообще не исполняется, так как думает, что ей кормят старые данные
Comentários (9)
Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário
Дорогая команда S#, Если ингорировать вопросы пользователей, которые УЖЕ пользуются вашим продуктом, то НОВЫХ пользователей от этого сильно больше не станет... Особенно когда речь идет о критических баг репортах, из-за которых вообще весь код перестает работать
Локальное время отличается от биржевого на +4 часа. В чем проблема-то? Работает вроде бы корректно.
Это реальное подключение или история?
История, причем проблемы именно с РФ инструментами (фьючами), фьючи на америку, импортированные в UTC работают ок. Один и тот же код тестера не отрабатывает фьючи на РФ и спокойно отрабатывает на US данных, импортированных в UTC времени
На SampleHist воспроизводится?
Как вариант:
.... и запускаем, предварительно поставив точку остановки в тело стратегии, например на "bool signalBuy = false;" Бэкстест завершается, при этом тело стратегии ни разу не исполнилось... и все из-за неверного GetCandleBounds()
Проверил ситуацию на живых данных - свечки, поступающие из Transaq, GetCandleBounds()отрабатывает правильно... А вот свечки из хранилища Гидры - нет