Всем hi
Не могу остановить вот такую стратегию:
class aaa :Strategy
{
public aaa()
: base()
{
}
protected override StrategyProcessResults OnProcess()
{
if (base.ProcessState == StrategyProcessStates.Stopping)
return StrategyProcessResults.Stop;
if (this.TotalWorkingTime.Seconds > 10)
this.Stop();
AddLog(StrategyErrorStates.None, "OnProcess", this);
return StrategyProcessResults.Continue;
}
protected override void OnRunned()
{
AddLog(StrategyErrorStates.None, "OnRunned", this);
base.OnRunned();
}
protected override void OnRunning()
{
AddLog(StrategyErrorStates.None, "OnRunning", this);
base.OnRunning();
}
protected override void OnStopped()
{
AddLog(StrategyErrorStates.None, "OnStopped", this);
base.OnStopped();
}
protected override void OnStopping()
{
AddLog(StrategyErrorStates.None, "OnStopping", this);
base.OnStopping();
}
}
Подскажите плиз почему такая стратегия не останавливается? Как можно сделать так чтобы стратегия сама себя остановила? Остановка происходит толька после вызова Stop() извне.
Попутный вопрос: Не вижу в Ecng.Trading.Algo класс FileStrategyLogger. Что-то изменилось?
Версия S# 2.5.2
Спасибо.
+++
Проблема как выяснилось тут в другом. OnProcess вообще не выполняется. Вот так происходит регистрация и запуск стратегии: var st = new aaa(); st.Interval = TimeSpan.FromSeconds(0.1); man.Register(st, p, m1); st.Start();
Но если добавить в OnRunned две строки вида: Trader.QuotesChanged += new Action<IEnumerable<MarketDepth>>(Trader_QuotesChanged); Trader.RegisterQuotes(this.Security); все работает как часы
Comments (7)
Login or Create account, Log in or register to leave a comment
Продолжаю тему)) По приведенному выше классу. Полная остановка стратегии не происходит( В логе вижу OnStopping но не вижу OnStopped. И также не вижу сообщения о том что стратегия остановилась. как это было ранее. Ктонить может подсказать это моя бага или S#? Спасибо.
Михаилу по поводу проекта: Как я понимаю чем дальше тем сложнее поддерживать библиотеку, да и возможно вам это просто надоело уже. Но... не надо отчаиваться) Нас тут Уже много и я думаю многие могли и хотели бы помочь. Ждем ваших, Михаил, предложений... Возможно было бы не плохо сделать что-то типа wiki с элементарными примерами использования S# и возможностью пользователей дополнять ее примерами. Вот к примеру класс описанный мной выше... что в нем не так? Благодаря вышей библиотеке написал одного робота на версии 2.4 работает прекрасно но писал его под winforms и многим возможностями не пользовался. Сейчас хочу углубиться, сделать все на wpf чтобы воспользоваться всяческими мониторами стратегий и тд и тп но не могу получить желанный результат. Написав уже практически всю реализацию стратегии возвращаюсь в начало к таким вот элементарным примерам(возможно по глупости своей). Не разобравшись с основами нельзя сделать стабильно работающую систему(( Еще раз спасибо.
Попробуйте бряку поставить в OnStopped.
Стоило мне отдохнуть раз в выходные, как проект сразу надоел.😀 Реальная помощь проекты на данный момент (до чего действительно сейчас руки редко доходят и в дальнейшем будет все сложнее) - это ответы на вопросы - что и как. Есть конечно и S# ошибки, но есть и те, на которые по силам ответить многим. Но как-то не все рвутся отвечать другим, чего не сказать наоборот, о вопросах.😒
Да тоже заметил. Сложно отвечать когда сам еще не разобрался до конца и задаешь глупые вопросы)
Это весь код стратегии. Я просто решил потестить все ли переопределения выполняються
Стратегия только одна, без дочерних.
Код регистрации и запуска стратегии из главного окна
это весь код не включая получения инструментов, портфелей и подключения к квику. В такой реализации OnProcess у меня ни разу не выполняется.
Во так я останавливаю ее:
а вот весь лог GuiStrategyLogger'a:
Вроде бы все просто. Стратегия должна выполнять OnProcess раз в 100мс, в логгере я должен увидеть приблизительно 100 сообщений OnProcess и в течении 10 сек стратегия должна сама себя остановить. Будьте так добры)) все кому не лень попробуйте создать такой пример и отписаться по результатам. Все кому лень чуть позже выложу ссылку на солюшн)
Спасибо
Скопировал код в тесты. Сделал вот такой логгер:
Все отработало как часики.
Нашел особенность с StrategyManager. Его нужно создавать до подключения ITrader. В след. версии это исправлю и можно будет создавать когда угодно.
Что из вне, что снаружи - вызывается одно и тоже... Стратегия дочерняя? Имеет ли сама дочерние стратегии? Точку останова ставили внутрь OnProcess? Плюс, еще приведите как Вы снаружи останавливаете?
http://stockmarketdotnet.blogspot.com/2010/10/stock-25.html Алгоритмы Пункт 1.
Что-то явно в коде робота. Потому что одно на другое очень слабо влияет... Попробуйте код упростить. Подозреваю, что там много больше, чем Вы привели в топике.
Да и спасибо за > Mikhail Sukhov:
Превеликое спасибо))) Вот я и получил свою порцию знаний)