← Zurück

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

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (5)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Alexander
Alexander

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

vader
vader Autor

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

Alexander
Alexander

vader: ...

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

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

vader
vader Autor

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

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

Alexander
Alexander

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