Различия между созданием правил внутри стратегии и обработкой конкретных событий

Различия между созданием правил внутри стратегии и обработкой конкретных событий
Atom
21.09.2011
frontman


Я не совсем понимаю в каких случаях лучше использовать создание правил а в каких обработку событий. Вот например событие появления новых сделок я могу обработать с помощью правила и с помощью события то же. В чем тогда разница? И еще как быть с входными параметрами? Вот например при обработки события NewMyTrades в качестве входного параметра передаются новые сделки, в случае с правилом нет.


Теги:


Спасибо:


1 2  >
esper

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


frontman: Я не совсем понимаю в каких случаях лучше использовать создание правил а в каких обработку событий. Вот например событие появления новых сделок я могу обработать с помощью правила и с помощью события то же. В чем тогда разница?

  • Правила автоматизируют процесс подписки/отписки от событий, т.е. не надо думать когда и где отписаться от события.
  • Можно создавать цепочки обработчиков с различными дополнительными условиями.
  • Форма записи кода становится более декларативной.
  • Есть множество предопределенных правил.

frontman: И еще как быть с входными параметрами? Вот например при обработки события NewMyTrades в качестве входного параметра передаются новые сделки, в случае с правилом нет.

this
	.When(this.StrategyNewMyTrades())
	.Do<IEnumerable<MyTrades>>(trades =>
	{
	}
Спасибо: frontman

frontman

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


Как то странно... А где посмотреть какие данные в результате срабатывания правила генерируются? Как вы узнали что при срабатывании правила на событие StrategyNewMyTrades() у нас на выходе будет IEnumerable?

Спасибо:

esper

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


frontman: Как то странно... А где посмотреть какие данные в результате срабатывания правила генерируются? Как вы узнали что при срабатывании правила на событие StrategyNewMyTrades() у нас на выходе будет IEnumerable? На форуме этот вопрос поднимался уже, еще в документации указано

Спасибо: frontman

Supervisor

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


esper: Правила автоматизируют процесс подписки/отписки от событий, т.е. не надо думать когда и где отписаться от события. Можно подробнее насчет отписки от событий? Once() - полезная штука, но я не нашел стандартного способа просто отменить правило в любой момент. Мне пришлось присваивать всем правилам имена и написать функцию для удаления правил по имени.

Спасибо:

Mikhail Sukhov

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


Supervisor: Мне пришлось присваивать всем правилам имена и написать функцию для удаления правил по имени.

А почему не работать с объектами StrategyRule?

Спасибо:

Supervisor

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


Mikhail Sukhov:

Supervisor: Мне пришлось присваивать всем правилам имена и написать функцию для удаления правил по имени.

А почему не работать с объектами StrategyRule? А как можно получить объект кроме как Strategy.Rules.Last()? Напрямую к конструктору нет доступа..

Спасибо:

Mikhail Sukhov

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


Supervisor: А как можно получить объект кроме как Strategy.Rules.Last()? Напрямую к конструктору нет доступа..

Вы посмотри сигнатуры методов When и Do, что они возвращают.

Спасибо: Supervisor

InsiderHSE

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


Михаил, а возможно ли приостановить работу правила, а потом возобновить?

Спасибо:

Alexander

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


InsiderHSE: Михаил, а возможно ли приостановить работу правила, а потом возобновить?

Suspend

Спасибо:

pehas

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


esper:

frontman: Как то странно... А где посмотреть какие данные в результате срабатывания правила генерируются? Как вы узнали что при срабатывании правила на событие StrategyNewMyTrades() у нас на выходе будет IEnumerable? На форуме этот вопрос поднимался уже, еще в документации указано

Я так понял, что .Do передаются параметры, генерируемые событием в .When. А как передать свой параметр?


     this
	.When(this.StrategyNewMyTrades())
	.Do(DoTrade);

     private void DoTrade(string s)
     {
        this.AddInfoLog(s);
     }

Спасибо:
1 2  >

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

loading
clippy