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

Событийная модель S#2.4 не работает
Atom
16.09.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); }


Теги:


Спасибо:


Mikhail Sukhov

Фотография
Дата: 16.09.2010
Ответить


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

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

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

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

Спасибо:

Mikhail Sukhov

Фотография
Дата: 16.09.2010
Ответить


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

Спасибо:

dart

Фотография
Дата: 16.09.2010
Ответить


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

Спасибо:

Mikhail Sukhov

Фотография
Дата: 16.09.2010
Ответить


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

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

Спасибо:

dart

Фотография
Дата: 16.09.2010
Ответить


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

Спасибо:

Mikhail Sukhov

Фотография
Дата: 16.09.2010
Ответить


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

Спасибо:

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

Фотография
Дата: 17.09.2010
Ответить


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

Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy