← Zurück

Отмена ранее созданого правила

Подскажите, правильно ли я выполняю отмену StartegyRule. В документации как это сделать не нашел.

Создаю правило так:


        ActivateSellOrderRule = this.When(Security.LastTradePriceLess(new Unit(order.Price + Security.MinStepSize, UnitTypes.Limit)))
          .Do(() => ActivateOrder(order)).Once();

Удаляю правило так


          this.Rules.Remove(ActivateSellOrderRule);
          ActivateSellOrderRule.Dispose();
          ActivateSellOrderRule = null;

ActivateSellOrderRule глобальный объект класса стратегии.

War dieses Thema hilfreich?

Thema teilen

Kommentare (4)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Sergey Masyura
Sergey Masyura

PavelAd: Подскажите, правильно ли я выполняю отмену StartegyRule. В документации как это сделать не нашел.

Создаю правило так:

    ActivateSellOrderRule = this.When(Security.LastTradePriceLess(new Unit(order.Price + Security.MinStepSize, UnitTypes.Limit)))
      .Do(() => ActivateOrder(order)).Once();
> 
> Удаляю правило так
> ```csharp

          this.Rules.Remove(ActivateSellOrderRule);
          ActivateSellOrderRule.Dispose();
          ActivateSellOrderRule = null;

ActivateSellOrderRule глобальный объект класса стратегии.

Если в правиле стоит условие .Once() какой смысл хранить на него реф и затем удалять?

PavelAd
PavelAd Autor

Sergey Masyura: Если в правиле стоит условие .Once() какой смысл хранить на него реф и затем удалять?

Становится необходимым чтобы вообще правило не вызывалось.

ra81
ra81

Ага соглашусь с Сергеем. После срабатывания правила оно будет удаленоавтоматом.

Если же нужно удалить в случае если сработало какое-то другое правило, то вы все делаете правильно.

ActivateSellOrderRule = null; <---- думаю уже лишнее.

PavelAd
ra81
ra81

Кстати в свете последних изысканий

this.Rules.Remove(ActivateSellOrderRule);

Вполне достаточно. При удалении правила из хранилища правил, оно автоматом диспозится.