← Voltar

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

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

Este tópico foi útil?

Compartilhar tópico

Comentários (4)

Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário

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);

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