Событийная стратегия
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)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Наверное Квик шлет изменения несколько раз по уже измененной заявке. Сделайте правило одноразовым.
На сколько я понимаю, StrategyRuleConditionHelper.Matched(_order) приводится в исполнение событием Strategy.OrderChanged. Получается и это событие инициируется несколько раз от одной и той же сделки? Можно ли это как-то фильтровать?