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

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


При исполнении сделки вызывается метод, где пересчитывается позиция. Правило помечено как 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:


Alexander

Avatar
Date: 8/25/2011
Reply


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

Thanks:

vader

Avatar
Date: 8/25/2011
Reply



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;
}

Thanks:

Alexander

Avatar
Date: 8/28/2011
Reply


vader: ODE0�

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

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

Thanks:

vader

Avatar
Date: 8/28/2011
Reply


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

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

Thanks:

Alexander

Avatar
Date: 8/28/2011
Reply


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

Thanks:


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

loading
clippy