Сработали правила на исполнение и отмену заяки

Сработали правила на исполнение и отмену заяки
Atom
05.04.2012
vader


Стартегия поставила заявку, на эту заявку повелили правило на исполнение и отмену.
Заявка была исполнена и почему-то сработали оба правила.

Лог.
11:50:17.155 | | CRBR | Стратегия запущена.
11:50:17.156 | | CRBR | FirstActiveNewRegime 0
11:50:17.159 | | CRBR | CreateOrder OnStarting
11:50:17.214 | | CRBR | RegisterOrder 42375260
11:50:26.476 | | CRBR | Новая Sell сделка 22436851 по цене 158400 на 4 заявки 42375260.
11:50:26.477 | | CRBR | Правило 'Новые сделки заявки 0 (63366267)' активировано.
11:50:26.478 | | CRBR | IsMatched 42375260
11:50:26.490 | | CRBR | DeactiveRule
11:50:26.493 | | CRBR | Правило 'Новые сделки заявки 0 (63366267)' удалено.
11:50:27.488 | | CRBR | Новая позиция -4.
11:50:29.710 | | CRBR | Правило 'Отмена заявки 0 (57884658)' активировано.
11:50:29.752 | | CRBR | IsOrderCancelInClearing 05.04.2012 11:50:28 False
11:50:29.755 | | CRBR | order.GetMatchedVolume= 4
11:50:29.756 | | CRBR | CreateOrder OnOrderCanceled
11:50:30.215 | | CRBR | RegisterOrder 42375316
11:50:30.218 | | CRBR | Правило 'Отмена заявки 0 (57884658)' удалено.

Регистрация заявки
Код

private void CreateOrder(decimal price, decimal volume, string callingMethod)
        {
            WriteDiagnostics("CreateOrder " + callingMethod);

            _order = new Order
            {
                Portfolio = this.Portfolio,
                Volume = volume,
                Price = Security.ShrinkPrice(price), 
                Security = this.Security,
                Direction = this.Direction,
                Trader = this.Trader,
            };

            this.When(_order.Canceled())
                .Do(OnOrderCanceled)
                .Once()
                .Sync(syncRules);

            this.When(_order.RegisterFailed())
                .Do(OnRegisterFailed)
                .Once();

            CreateRuleNewTradesOrder(_order);

            RegisterOrder(_order);
        }

 private StrategyRule<IEnumerable<MyTrade>> CreateRuleNewTradesOrder(Order order)
        {
            return (StrategyRule<IEnumerable<MyTrade>>)this.When(StrategyRuleHelper.NewTrades(order))
                .Do(() => IsMatched(order, _ruleWaiting))
                .Once()
                .Sync(syncRules);
        }

Теги:


Спасибо:


Alexander

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


Пробуйте 4.1
В 4.0 нет атомарного изменения полей, поэтому такое теоретически возможно.
Спасибо:

vader

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


Некоторая подробность.
Я запустил одновременно три стратегии, с двумя все было в порядке, а одна поставил четыре заявки, и для трех из них сработали оба правила.
Спасибо:

Alexander

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


vader
Некоторая подробность.
Я запустил одновременно три стратегии, с двумя все было в порядке, а одна поставил четыре заявки, и для трех из них сработали оба правила.


еще раз-такое может быть на 4.0
используйте 4.1
Спасибо:


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

loading
clippy