Событийная стратегия
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 раз. По-моему это баг. В списке правил - одно правило, полное исполнение. Никаких сообщений об ощибках нет.
Kommentare (2)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Наверное Квик шлет изменения несколько раз по уже измененной заявке. Сделайте правило одноразовым.
На сколько я понимаю, StrategyRuleConditionHelper.Matched(_order) приводится в исполнение событием Strategy.OrderChanged. Получается и это событие инициируется несколько раз от одной и той же сделки? Можно ли это как-то фильтровать?