← 返回

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

Подскажите, правильно ли я выполняю отмену 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 глобальный объект класса стратегии.

本主题对您有帮助吗?

分享主题

评论 (4)

登录创建账户, 登录或注册以发表评论

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 作者

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

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

ra81
ra81

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

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

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

PavelAd
ra81
ra81

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

this.Rules.Remove(ActivateSellOrderRule);

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