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


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

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 раз.
По-моему это баг.
В списке правил - одно правило, полное исполнение.
Никаких сообщений об ощибках нет.

Теги:


Спасибо:




2 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 09.08.2011
Ответить


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


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

vader

Фотография
Дата: 10.08.2011
Ответить


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


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy