Возникла проблема с 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 часа...
В итоге стратегия вообще не исполняется, так как думает, что ей кормят старые данные
Kommentare (9)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Дорогая команда S#, Если ингорировать вопросы пользователей, которые УЖЕ пользуются вашим продуктом, то НОВЫХ пользователей от этого сильно больше не станет... Особенно когда речь идет о критических баг репортах, из-за которых вообще весь код перестает работать
Локальное время отличается от биржевого на +4 часа. В чем проблема-то? Работает вроде бы корректно.
Это реальное подключение или история?
История, причем проблемы именно с РФ инструментами (фьючами), фьючи на америку, импортированные в UTC работают ок. Один и тот же код тестера не отрабатывает фьючи на РФ и спокойно отрабатывает на US данных, импортированных в UTC времени
На SampleHist воспроизводится?
Как вариант:
.... и запускаем, предварительно поставив точку остановки в тело стратегии, например на "bool signalBuy = false;" Бэкстест завершается, при этом тело стратегии ни разу не исполнилось... и все из-за неверного GetCandleBounds()
Проверил ситуацию на живых данных - свечки, поступающие из Transaq, GetCandleBounds()отрабатывает правильно... А вот свечки из хранилища Гидры - нет