← Atrás

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

¿Le resultó útil este tema?

Compartir tema

Comentarios (5)

Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario

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

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