Для изменения размера нажмите или перетащите
Дочерние стратегии

С помощью Strategy можно так же создавать дочерние стратегии. Например, когда требуется реализовать процесс торговли, который оперирует стандартными (или уже ранее реализованными) алгоритмами, выстраивая их в единую цепочку:

Дочерние стратегий.

Предварительные условия
Работа с дочерними стратегиями

Чтобы добавить дочернюю стратегию необходимо использовать свойство StrategyChildStrategies. Значения StrategyConnector, StrategyPortfolio и StrategySecurity для дочерних стратегий можно не устанавливать, и они автоматически заполнятся при добавлении в родительскую стратегию.

При добавлении новой дочерней стратегии она автоматически получает состояние из родительской. Например, если родительская стратегия находится в работающем состоянии (ProcessStatesStarted), то дочерняя автоматически будет установлена в работающее состояние (и, наоборот, в случае с ProcessStatesStopped). Поэтому вызывать метод StrategyStart для дочерней стратегии не нужно. Он автоматически будет вызван, при запуске родительской стратегии. Таким образом, вызывать метод StrategyStart можно только для тех стратегий, которые являются корневыми.

Родительская и все ее дочерние стратегии исполняются параллельно. Это значит, что, если была выбрана итерационная модель, то методы TimeFrameStrategyOnProcess для дочерних и родительских стратегий выполняются параллельно. Аналогично и с правилами StrategyRules, если была выбрана событийная модель.

Примечание Примечание
Метод StrategyStop для дочерней стратегии, в отличие от StrategyStart, можно вызывать в любое время. Например, когда алгоритму требуется принудительно остановить работу дочерней стратегии при том, что сам алгоритм дочерней стратегии еще не выполнился до конца (например, прервать Котирование).

По умолчанию, дочерние стратегии не связаны друг с другом, и исполняются независимо. Когда требуется установить зависимость между стратегиями, необходимо использовать класс BasketStrategy. Данный класс позволяет задать условия завершения стратегий в зависимости друг от друга через признаки BasketStrategyFinishModes. Например, через значение First задается условие, при котором все дочерние стратегии будут остановлены, когда исполнится хотя бы одна из них. Пример использования BasketStrategy показан в разделе Тейк-профит и стоп-лосс.

Следующие шаги