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


Теги:


Спасибо:



Скидка 15% на все обучение до 5 апреля (осталось 2 дней).

7 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 16.09.2010
Ответить


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

Даже котирование не забирает.https://stocksharp.ru/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