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


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


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

Tags:


Thanks:


1 2  >
esper

Avatar
Date: 9/21/2011
Reply


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

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

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

Code
this
	.When(this.StrategyNewMyTrades())
	.Do<IEnumerable<MyTrades>>(trades =>
	{
	}

Thanks: frontman

frontman

Avatar
Date: 9/21/2011
Reply


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

esper

Avatar
Date: 9/21/2011
Reply


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

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

Supervisor

Avatar
Date: 10/28/2011
Reply


esper Go to

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

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

Mikhail Sukhov

Avatar
Date: 10/28/2011
Reply


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


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

Supervisor

Avatar
Date: 10/28/2011
Reply


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


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

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

Mikhail Sukhov

Avatar
Date: 10/28/2011
Reply


Supervisor Go to

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


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

InsiderHSE

Avatar
Date: 10/30/2011
Reply


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

Alexander

Avatar
Date: 10/30/2011
Reply


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


Suspend
Thanks:

pehas

Avatar
Date: 11/2/2011
Reply


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

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


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

Code

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

     private void DoTrade(string s)
     {
        this.AddInfoLog(s);
     }
Thanks:
1 2  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy