Order.Matched вызывается несколько раз

Order.Matched вызывается несколько раз
Atom
3/2/2012
russ


Здравствуйте, есть проблема с вызовом события на Order.Matched. Версия 4.0.19 Создаю заявку:

 var order = this.CreateOrder(direction, dealPrice, lotSize);
 base.RegisterOrder(order);

потом создаю событие на исполнение заявки:

StrategyRule stopRule = this.When(order.Matched());
            stopRule.Do
                (() =>
                {
...
});

Т.е. если сделка выполнилась, заходим в правило и выставляем стоп, но на деле происходит так. Например я покупаю 50 лотов, но покупка произошла не одной сделкой а допустим 3-мя, в итоге событие order.Matched отрабатывается 3 раза. В документации написано что Matched это событие полного исполнения заявки, вопрос почему оно отрабатывается по ходу несколько раз, а не один раз в конце?


Tags:


Thanks:


< 1 2 
freelancer

Avatar
Date: 3/3/2012
Reply


Я имел ввиду то, что новичок читает сообщения типа этого, офигивает от счастья и качает библиотеку. Допустим у него что-то не получается и оказывается, что дела обстоят так, как сказал Михаил.

На главной странице надо написать:

  • Некоммерческий проект, развивающийся совместными усилиями
  • Некоторые функции могут работать не так, как написано в документации (какие это функции - никто не знает)
  • Некоторые доступные функции просто не работают (какие это функции - никто не знает)
Thanks:

Mikhail Sukhov

Avatar
Date: 3/3/2012
Reply


freelancer: На главной странице надо написать:

Без сопливых разберемся, что и как написать. Создавайте свой сайт, и пишите на его страницах что захотите. Нас поучать не нужно.

Thanks:

Alexander

Avatar
Date: 3/13/2012
Reply


Возвращаясь к разговору. Пометка Once говорит лишь о том, что правило будет активировано 1 раз. Но проблема может возникнуть если одновременно правило дёргается из нескольких потоков.

Если хотите это избежать - создайте правило с Sync.

           this
               .When(order.Matched())
               .Do(() => {...})
               .Once()
               .Sync(new object());
Thanks:

vader

Avatar
Date: 3/13/2012
Reply


А каким образом данное правило(order.Matched) может дернутся из разных потоков?

Thanks:

Alexander

Avatar
Date: 3/13/2012
Reply


vader: А каким образом данное правило(order.Matched) может дернутся из разных потоков?

Оно подписывается на события NewOrder и OrderChanged. А они могут придти из разных потоков.

Thanks:
< 1 2 

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

loading
clippy