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


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


А 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:




7 Answers
Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 9/16/2010
Reply


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

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

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

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

Thanks:

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 9/16/2010
Reply


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

dart

Avatar
Date: 9/16/2010
Reply


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

Topic starter
Thanks:

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 9/16/2010
Reply


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

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

Thanks:

dart

Avatar
Date: 9/16/2010
Reply


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

Topic starter
Thanks:

Mikhail Sukhov

Avatar
Articles author Programmer Trader
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