Всем 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); все работает как часы
Kommentare (7)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Продолжаю тему)) По приведенному выше классу. Полная остановка стратегии не происходит( В логе вижу 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:
Превеликое спасибо))) Вот я и получил свою порцию знаний)