Правило помечено как Once, но иногда вызывается дважды


Правило помечено как Once, но иногда вызывается дважды
Atom Reply
8/24/2011


При исполнении сделки вызывается метод, где пересчитывается позиция.
Правило помечено как Once, но иногда вызывается дважды.
Вот вывод изменения текущей позиции и TransactionId
1 61947599
2 61947600
11 61947601
12 61947602
19 61947603
25 61947604
26 61947605
27 61947606
28 61947606
33 61947607
36 61947608

3и 4 с конца списка - дважды посчитано по одной сделке.

Tags:


Thanks:




5 Answers
Alexander

Avatar
Date: 8/25/2011
Reply


Покажите где и как создаёте правило.
Также проверьте данное поведение на 3.2.10
Thanks:

vader

Avatar
Date: 8/25/2011
Reply




Code

if(_free){
						_free = false;
						_order = new Order
						{
							Portfolio = this.Portfolio,
							Volume = vol,
							Price = price,
							Security = this.Security,
							Direction = OrderDirections.Sell,
						};
						
						WrapRegisterOrder();
					}

private void WrapRegisterOrder()
		{
			_ruleMatched = this
				.When(StrategyRuleConditionHelper.Matched(_order))
				.Do(RecalculateVolume)
				.Once();
			_ruleMatched.EnableLog(true);
Register(_order);
_free = false;
}
Topic starter
Thanks:

Alexander

Avatar
Date: 8/28/2011
Reply


vader Go to


Code

if(_free){
						_free = false;
						_order = new Order
						{
							Portfolio = this.Portfolio,
							Volume = vol,
							Price = price,
							Security = this.Security,
							Direction = OrderDirections.Sell,
						};
						
						WrapRegisterOrder();
					}

private void WrapRegisterOrder()
		{
			_ruleMatched = this
				.When(StrategyRuleConditionHelper.Matched(_order))
				.Do(RecalculateVolume)
				.Once();
			_ruleMatched.EnableLog(true);
Register(_order);
_free = false;
}



Не вижу где здесь делается вывод того, что в первом сообщении.
Также неясно что с 3.2.10

Зачем 2 раза free = false?
И сколько раз правило создаётся?
Thanks:

vader

Avatar
Date: 8/28/2011
Reply


Правило создается каждый раз при регистрации новой заявки.
Зачем 2 раза free = false? - забыл удалить нижнию.

Не вижу где здесь делается вывод того, что в первом сообщении. - происходит в методе ,вызываемом при исполнении правила - RecalculateVolume.
Также неясно что с 3.2.10 - Пока мало тестировал, определённо сказать не могу.
Topic starter
Thanks:

Alexander

Avatar
Date: 8/28/2011
Reply


Пришлите минимальный проект, где это воспроизводится.
Thanks:


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

loading
clippy