← Zurück

[Bug] действие на условие исполняется больше одного раза

Событийная стратегия


protected override void OnStarting()
		{
			_order = new Order
			{
				Portfolio = this.Portfolio,
				Volume =  _partOfLot,
				Price = _priceOfOrder,
				Security = this.Security,
				Direction = this._direction,
				Trader = this.Trader,
			};
			this.RegisterOrder(_order);
			
			this
				.When(StrategyRuleConditionHelper.Matched(_order))
				.Do(Start);
			
			foreach(StrategyRule s in this.Rules){
				MessageBox.Show(s.Name);
			}
		}
		
		private void Start()
		{
			MessageBox.Show(_order.Id.ToString());
			_curLotBuySellNow += _order.Volume;
			
			if (_curLotBuySellNow >= this.Volume){
				this.Stop();
				return;
			}
		}

                private Order _order;

Запускаю стратегию, она отправляет первую заявку, когда заявки исполняется, метод Start вызывается 3 или 4 раза. Один раз он был вызван 1 раз. По-моему это баг. В списке правил - одно правило, полное исполнение. Никаких сообщений об ощибках нет.

War dieses Thema hilfreich?

Thema teilen

Kommentare (2)

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

Mikhail Sukhov
Mikhail Sukhov

vader: Событийная стратегия В списке правил - одно правило, полное исполнение. Никаких сообщений об ощибках нет.

Наверное Квик шлет изменения несколько раз по уже измененной заявке. Сделайте правило одноразовым.

vader
vader Autor

На сколько я понимаю, StrategyRuleConditionHelper.Matched(_order) приводится в исполнение событием Strategy.OrderChanged. Получается и это событие инициируется несколько раз от одной и той же сделки? Можно ли это как-то фильтровать?