Событийная модель S#2.4 не работает

Событийная модель S#2.4 не работает
Atom
9/16/2010
dart


А OnProcess можно использовать в событийных моделях? Создал стратегию, отнаследовался от ActionStrategy. Далее в OnProcess с помощью AddSecurityLastTradePriceMoreAction при превышении определённой ценового порога нужно запустить котирование. Не запускается. Почему в OnProcess, потому что с какой-то частотой этот порог меняется и это нужно отслеживать. Вообще все эти событийные методы Add.... не забирают управление стратегией как котирование? И ещё при компилировании VS мне выдаёт предупреждение, не ошибку, что нельзя проверить код при вызове через ключевое слово "base" из лямбда- выражения, анонимного метода. Это нормально? base.AddSecurityLastTradePriceLessAction(base.Security, price_exe, () => { var direction = OrderDirections.Sell; var order = base.CreateOrder(direction, base.Security.GetMarketPrice(direction, MarketPriceTypes.Following), vlm_int); var strategy = new MarketQuotingStrategy(order, delta); strategy.Start();

base.ChildStrategies.Add(strategy); }


Tags:


Thanks:


Mikhail Sukhov

Avatar
Date: 9/16/2010
Reply


Если Вы так будете делать, то при каждом OnProcess у Вас будет добавляться в очередь событие ожидания. Не очень хорошо для производительности. Добавляйте их, скажем, в конструкторе или OnRunning. И почему у Вас пример с событием ожидания понижения порога цены?

Даже котирование не забирает.http://stocksharp.com/doc/help/html/8ea639f6-ce74-4a00-9f13-db59c8c2396f.htm

(там где написано про параллельную работу)

Я просто это слово убираю. Это особенность лямбда реализаций.

Thanks:

Mikhail Sukhov

Avatar
Date: 9/16/2010
Reply


И еще. В котирование можно пускать заявку без предваритального вычисления цены. Котирование как раз само вычисляет рыночцую цену.

Thanks:

dart

Avatar
Date: 9/16/2010
Reply


OnRunning не подходит, так как он вызывается только в начале работы стратегии, мне надо чтобы это (пересмотр ценового порога) делалось циклично на протяжении всей работы стратегии. Конструктор имеется ввиду MainWindow? У меня есть примеры и с повышением порога и с понижением. Ни тот ни другой не работает. Стратегия просто проскакивает через него (метод Add...) и выполняет стоящий после него оператор.

Thanks:

Mikhail Sukhov

Avatar
Date: 9/16/2010
Reply


Конечно проскакивает. Событийная модель на то и событийная, что она работает в другом потоке. Но этот поток у Вас не функционирует, потому что Вы переопределили OnProcess.

Вам нужно или отказаться от событий. Или использовать только события. Например, отслеживать те параметры, на основе которых Вы принимаете решение - менять ценовой порог или нет.

Thanks:

dart

Avatar
Date: 9/16/2010
Reply


Андерстэнд. Тогда получится вложенное ожидание. Сначала с помощью AddAction ждём когда изменится порог, запускаем AddSecurityLastTradePriceMoreAction и ждем когда цена превысит этот порог.

Thanks:

Mikhail Sukhov

Avatar
Date: 9/16/2010
Reply


Вот это уже хорошая событийная модель. Ждем изменения -> реагируем (ввиде заявок или новых ожидания). И т.д. до окончания торговой сессии.

Thanks:

Иванов Андрей

Avatar
Date: 9/17/2010
Reply


А зачем вы пишете "base."? Я давно хочу понять причины использования "this.", может быть поможете своим ответом =)

Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy