Событийная стратегия
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 раз. По-моему это баг. В списке правил - одно правило, полное исполнение. Никаких сообщений об ощибках нет.
Comentarios (2)
Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario
Наверное Квик шлет изменения несколько раз по уже измененной заявке. Сделайте правило одноразовым.
На сколько я понимаю, StrategyRuleConditionHelper.Matched(_order) приводится в исполнение событием Strategy.OrderChanged. Получается и это событие инициируется несколько раз от одной и той же сделки? Можно ли это как-то фильтровать?