Для изменения размера нажмите или перетащите
Взаимоисключающие правила

Взаимоисключающие правила, это правила которые удаляются по активации одного из этих правил. Для этого вызвается метод MarketRuleHelperExclusive в который передается правило, которое будет удалено при активации данного правила.

Например регистрируется два правила, на успешную и неуспешную регистрацию заявки, одно из них нужно удалить в случае активации другого:

C#
var order = this.CreateOrder(direction, (decimal) Security.GetCurrentPrice(direction), Volume);

var ruleReg = order.WhenRegistered();
var ruleRegFailed = order.WhenRegisterFailed();

ruleReg
    .Do(() => this.AddInfoLog("Заявка успешно зарегистрирована"))
    .Once()
    .Apply(this)
    .Exclusive(ruleRegFailed);

ruleRegFailed
    .Do(() => this.AddInfoLog("Заявка не принята биржей"))
    .Once()
    .Apply(this)
    .Exclusive(ruleReg);

// регистрирация заявки
RegisterOrder(order);

Также взаимоисключающие правила можно создать через добавление в ExclusiveRules

C#
var order = this.CreateOrder(direction, (decimal) Security.GetCurrentPrice(direction), Volume);

var ruleReg = order.WhenRegistered();
var ruleRegFailed = order.WhenRegisterFailed();

ruleReg.ExclusiveRules.Add(ruleRegFailed);
ruleRegFailed.ExclusiveRules.Add(ruleReg);

ruleReg
    .Do(() => this.AddInfoLog("Заявка успешно зарегистрирована"))
    .Once()
    .Apply(this);

ruleRegFailed
    .Do(() => this.AddInfoLog("Заявка не принята биржей"))
    .Once()
    .Apply(this);

// регистрирация заявки
RegisterOrder(order);