Не могу понять как работает WhenStopping() для стратегий...
Как я понимаю, этот кусок кода должен выполняться в момент окончания стратегии до перехода в состояние Stopped:
strategy.WhenStopping()
.Do(() =>
{
Debug.WriteLine("Stopping Strategy now");
})
.Apply();
Тем не менее, ничего не выводится...
Задача следующая: когда на бэктесте стратегия выполнилась, надо вывести всю статистику (последние значения переменных, считавшихся во время исполнения статегии)
Комментарии (10)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Михаил, может ты сможешь помочь?=)
Код правильный и рабочий. Не понимаю что именно нужно прокомментировать. Если из разряда "почему у меня не работает", то это надо самостоятельно разбираться или логи подкреплять.
Если поставить в дебаггере точку остановки на Debug.WriteLine(...), то на практике этот кусок кода никогда не исполняется.
Что надо выводить в лог и как понять почему так происходит?
Ок. Вот есть кусок кода в SmaStrategy из SampleHistoryTesting:
Данных код никогда не исполняется. (проверил на последнем билде)
Также если поставить в SampleHistoryTesting следующий код:
то этот код тоже никогда не срабатывает
В SampleHistoryTesting стратегия только запускается. Там нет остановки. Добавь остановку и событие будет срабатывать.
Стоп, давай тогда определим, что мы понимаем под "остановкой". Я думал, что "остановка" - это когда ты запустил стратегию, она отработала и завершилась = остановилась... нет? Тогда вопрос есть ли состояние WhenFinishing?
Да так.
Думаю WhenStopping срабатывает при выполнении метода Strategy.Stop(), к тестеру это не имеет отношения. Здесь надо события тестера искать какие то видимо.
Ну если это так, то когда тестер завершается и connector.IsFinished, что остановка стратегии не происходит
Скорее всего так и есть... короче поведение стратегии на тестере и вживую отличается похоже