← 戻る

Исчезло событие NewMyTrades для Strategy

Нельзя ли вернуть событие NewMyStrades в класс Strategy? Оно позволяло удобно передавать в обработчик пришедший MyTrade. Теперь приходится делать дополнительные проверки.

Вообще, с правилами не все до конца ясно. Михаил, Александр, можете рассказать, с какой целью были созданы правила (в дополнение к стандартным событиям) и почему при срабатывании условия не передаются никакие параметры? Что-то связанное с производительностью?

このトピックは参考になりましたか?

トピックを共有

コメント (9)

ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください

Alexander
Alexander

Church: Нельзя ли вернуть событие NewMyStrades в класс Strategy? Оно позволяло удобно передавать в обработчик пришедший MyTrade. Теперь приходится делать дополнительные проверки.

Вообще, с правилами не все до конца ясно. Михаил, Александр, можете рассказать, с какой целью были созданы правила (в дополнение к стандартным событиям) и почему при срабатывании условия не передаются никакие параметры? Что-то связанное с производительностью?

Не совсем вопросы понятны. NewMyTrades у Strategy есть, также передаётся MyTrade, как и раньше.

public event Action<IEnumerable<MyTrade>> NewMyTrades

Если речь идёт про создание дополнительных правил типа LastTradePriceLess, то они созданы для удобства. Во многие из них передаются параметры при срабатывании (по аналогии с NewMyTrades). Если где-то параметров не хватает - пишите, будем разбираться.

P.S. Перенёс топик в нужный форум, т.к. данная тема не относится к этому топику.

Church
Church 著者

Прошу прощения, видимо не из того модуля смотрел, или не подключил нужный референс. MyNewTrades остался. :)

Относительно передаваемых параметров я имел в виду вот что: условие StrategyNewMyTrades не передает в обработчик (который вызывается через .Do()) никаких параметров, в отличие от события MyNewTrades, которое передает IEnumerable<MyTrades>. По-моему, вторая механика удобнее.

esper
esper

Church: Прошу прощения, видимо не из того модуля смотрел, или не подключил нужный референс. MyNewTrades остался. :)

Относительно передаваемых параметров я имел в виду вот что: условие StrategyNewMyTrades не передает в обработчик (который вызывается через .Do()) никаких параметров, в отличие от события MyNewTrades, которое передает IEnumerable<MyTrades>. По-моему, вторая механика удобнее.

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

Church
Church 著者

esper:

Church: Прошу прощения, видимо не из того модуля смотрел, или не подключил нужный референс. MyNewTrades остался. :)

Относительно передаваемых параметров я имел в виду вот что: условие StrategyNewMyTrades не передает в обработчик (который вызывается через .Do()) никаких параметров, в отличие от события MyNewTrades, которое передает IEnumerable<MyTrades>. По-моему, вторая механика удобнее.

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

Так я получу все сделки, или только ту порцию, которая спровоцировала событие?
esper
esper

Church: только ту порцию, которая спровоцировала событие

lshaton
lshaton

Church:

esper:

Church: Прошу прощения, видимо не из того модуля смотрел, или не подключил нужный референс. MyNewTrades остался. :)

Относительно передаваемых параметров я имел в виду вот что: условие StrategyNewMyTrades не передает в обработчик (который вызывается через .Do()) никаких параметров, в отличие от события MyNewTrades, которое передает IEnumerable<MyTrades>. По-моему, вторая механика удобнее.

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

> Так я получу все сделки, или только ту порцию, которая спровоцировала событие?
А как грамотно подвязать метод Protect к списку сделок:
               this
                    .When(this.StrategyNewMyTrades())
                    .Do<IEnumerable<MyTrade>>(trades =>
                    {
                    //                    StrategyRuleActionHelper.Protect(trades , new Unit(10), new Unit(10));
...
Эта перегрузка Protect(StrategyRule, IEnumerable<(Of <<'(MyTrade>)>>), Unit, Unit)
не вписывается вышеприведенный фрагмент - почему-то приводит к ошибке. А добавлять 
                        StrategyRuleActionHelper.Protect(this.When(this.StrategyNewMyTrades()), trades, new Unit(40), new Unit(20));
в событие как-то криво.. Может есть идея?
Alexander
Alexander

lshaton:

Church:

esper:

Church: Прошу прощения, видимо не из того модуля смотрел, или не подключил нужный референс. MyNewTrades остался. :)

Относительно передаваемых параметров я имел в виду вот что: условие StrategyNewMyTrades не передает в обработчик (который вызывается через .Do()) никаких параметров, в отличие от события MyNewTrades, которое передает IEnumerable<MyTrades>. По-моему, вторая механика удобнее.

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

> > Так я получу все сделки, или только ту порцию, которая спровоцировала событие?
> А как грамотно подвязать метод Protect к списку сделок:
>                this
>                     .When(this.StrategyNewMyTrades())
>                     .Do<IEnumerable<MyTrade>>(trades =>
>                     {
>                     //                    StrategyRuleActionHelper.Protect(trades , new Unit(10), new Unit(10));
> ...
> Эта перегрузка Protect(StrategyRule, IEnumerable<(Of <<'(MyTrade>)>>), Unit, Unit)
> не вписывается вышеприведенный фрагмент - почему-то приводит к ошибке. А добавлять
>                         StrategyRuleActionHelper.Protect(this.When(this.StrategyNewMyTrades()), trades, new Unit(40), new Unit(20));
> в событие как-то криво.. Может есть идея?


Подправили, будет фикс в новой версии
Alexander
Alexander

Подтверждаю. Аналогично для свечек, ордеров, ...

Church
Church
Church 著者

Понял, большое спасибо. Не знал фишку.