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

Order.Matched вызывается несколько раз
Atom
02.03.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 это событие полного исполнения заявки, вопрос почему оно отрабатывается по ходу несколько раз, а не один раз в конце?


Теги:


Спасибо:


< 1 2 
freelancer

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


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

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

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

Mikhail Sukhov

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


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

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

Спасибо:

Alexander

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


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

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

           this
               .When(order.Matched())
               .Do(() => {...})
               .Once()
               .Sync(new object());
Спасибо:

vader

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


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

Спасибо:

Alexander

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


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

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

Спасибо:
< 1 2 

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

loading
clippy