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

Различия между созданием правил внутри стратегии и обработкой конкретных событий
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<MyTrades>?
Спасибо:

esper

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


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

На форуме этот вопрос поднимался уже, еще в документации указано
Спасибо: 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<MyTrades>?

На форуме этот вопрос поднимался уже, еще в документации указано


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

Код

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

     private void DoTrade(string s)
     {
        this.AddInfoLog(s);
     }
Спасибо:
1 2  >

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

loading
clippy