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


Здравствуйте, есть проблема с вызовом события на 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