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

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


Здравствуйте, есть проблема с вызовом события на Order.Matched.
Версия 4.0.19
Создаю заявку:
Code
 var order = this.CreateOrder(direction, dealPrice, lotSize);
 base.RegisterOrder(order);


потом создаю событие на исполнение заявки:
Code
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 Go to
На главной странице надо написать:


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

Alexander

Avatar
Date: 3/13/2012
Reply


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

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

Code
           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 Go to
А каким образом данное правило(order.Matched) может дернутся из разных потоков?


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

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

loading
clippy