AutoProtectiveStrategy не останавливается
Стратегия AutoProtectiveStrategy запускается и отрабатывает (позиция закрывается), но остается запущенной.
При этом все ее дочерние стратегии TPSLS, TPS, SLS остановлены.
Из за этого не срабатывает правило WhenStopped и дальнейшая работа робота прекращается.
Пробовал убирать WaitAllTrades = true, - не помогает.
Запускаю AutoProtectiveStrategy следующим образом:
Code
var pos = fastOrderStrategy.PositionManager.Positions.FirstOrDefault(p => p.CurrentValue != 0);
//Находим сделки, соответствующие позиции pos
var trades = fastOrderStrategy.MyTrades.Where(s => s.Trade.Security == pos.Security).ToArray();
//Создаем защитную стратегию
var auts = new AutoProtectiveStrategy
{
Security = pos.Security,
StopLossLevel = pos.Security.PriceStep * 1,
TakeProfitLevel = pos.Security.PriceStep * 1,
WaitAllTrades = true,
IsTrailingStopLoss = true,
DisposeOnStop = true
};
//Когда защитная стратегия заканчивает работу, удаляем стратегию
auts.WhenStopped()
.Do(() =>
{
ChildStrategies.Clear();
})
.Once()
.Apply(this);
//Обработать сделки для коррекции объема
auts.ProcessNewMyTrades(trades);
this.AddWarningLog("Launching AutoProtectiveStrategy with StopLossLevel={0} TakeProfitLevel={1}", auts.StopLossLevel, auts.TakeProfitLevel);
//Добавляем защитную стратегию в список дочерних
if (_ordersTurnedOn)
ChildStrategies.Add(auts);
Вот что выдает лог:
Code
2014/05/30 21:20:42.118|Warning|DS_XXX4@FORTS_SPBFUT00XXX|Only one position was opened
2014/05/30 21:20:42.118|Warning|DS_XXX4@FORTS_SPBFUT00XXX|Launching AutoProtectiveStrategy with StopLossLevel=1 TakeProfitLevel=1
2014/05/30 21:20:42.118| |TPS_XXX4@FORTS_SPBFUT00XXX|Стратегия запущена. [0,2]. Позиция при старте 0.
2014/05/30 21:20:42.118| |TPS_XXX4@FORTS_SPBFUT00XXX|Защита сделки 894716231 заявки 76814201.
2014/05/30 21:20:42.118| |TPS_XXX4@FORTS_SPBFUT00XXX|Котирование на Sell объема 1.
2014/05/30 21:20:42.118| |TPS_XXX4@FORTS_SPBFUT00XXX|Приостановка правил. _rulesSuspendCount 1.
2014/05/30 21:20:42.118| |TPS_XXX4@FORTS_SPBFUT00XXX|Возобновление правил. _rulesSuspendCount 0.
2014/05/30 21:20:42.118| |SLS_XXX4@FORTS_SPBFUT00XXX|Стратегия запущена. [0,2]. Позиция при старте 0.
2014/05/30 21:20:42.118| |SLS_XXX4@FORTS_SPBFUT00XXX|Защита сделки 894716231 заявки 76814201.
2014/05/30 21:20:42.118| |SLS_XXX4@FORTS_SPBFUT00XXX|Котирование на Sell объема 1.
2014/05/30 21:20:42.118| |SLS_XXX4@FORTS_SPBFUT00XXX|Приостановка правил. _rulesSuspendCount 1.
2014/05/30 21:20:42.118| |SLS_XXX4@FORTS_SPBFUT00XXX|Возобновление правил. _rulesSuspendCount 0.
2014/05/30 21:20:42.118| |TPSLS_XXX4@FORTS_SPBFUT00XXX|Стратегия запущена. [2,1]. Позиция при старте 0.
2014/05/30 21:20:42.118| |APS_XXX4@FORTS_SPBFUT00XXX|Стратегия запущена. [1,2]. Позиция при старте 0.
2014/05/30 21:21:13.099| |SLS_XXX4@FORTS_SPBFUT00XXX|Защита активирована.
2014/05/30 21:21:13.099| |SLS_XXX4@FORTS_SPBFUT00XXX|Цена текущей NULL и лучшей 46568.
2014/05/30 21:21:13.099| |SLS_XXX4@FORTS_SPBFUT00XXX|Лучший бид 47747 и лучший аск 47755.
2014/05/30 21:21:13.099| |SLS_XXX4@FORTS_SPBFUT00XXX|Регистрация новой Limit (0xA33B48) заявки на Sell с ценой 46568 и объемом 1. SLS 894716231
2014/05/30 21:21:13.099| |QuikTrader|RegisterOrder: 0/0 Продажа Цена=46568 Объем=1 Сост=None Бал=0
2014/05/30 21:21:13.099| |QuikTrader|New order: 76814204/0 Продажа Цена=46568 Объем=1 Сост=Pending Бал=1
2014/05/30 21:21:13.100|Warning|SLS_XXX4@FORTS_SPBFUT00XXX|Заявка 76814204 в процессе регистрации.
2014/05/30 21:21:19.682| |QuikTrader|Order changed: 76814204/12756352952 Продажа Цена=46568 Объем=1 Сост=Done Бал=0
2014/05/30 21:21:19.682| |DS_XXX4@FORTS_SPBFUT00XXX|Новая позиция: SPBFUT00XXX-YYY4@FORTS=0, SPBFUT00XXX-XXX4@FORTS=0.
2014/05/30 21:21:19.682| |APS_XXX4@FORTS_SPBFUT00XXX|Новая позиция: SPBFUT00XXX-XXX4@FORTS=-1.
2014/05/30 21:21:19.682| |TPSLS_XXX4@FORTS_SPBFUT00XXX|Новая позиция: SPBFUT00XXX-XXX4@FORTS=-1.
2014/05/30 21:21:19.682| |SLS_XXX4@FORTS_SPBFUT00XXX|Новая позиция: SPBFUT00XXX-XXX4@FORTS=-1.
2014/05/30 21:21:19.682| |TPS_XXX4@FORTS_SPBFUT00XXX|Стратегия останавливается. [0,2]. Позиция при старте 0.
2014/05/30 21:21:19.682| |TPS_XXX4@FORTS_SPBFUT00XXX|Правило 'Изменение стакана инструмента XXX4@FORTS (0x260F40A)'. Приостановлено.
2014/05/30 21:21:19.682|Warning|TPS_XXX4@FORTS_SPBFUT00XXX|Заканчиваем котирование с неисполненным объемом равный 1.
2014/05/30 21:21:19.682| |TPS_XXX4@FORTS_SPBFUT00XXX|Ожидание снятия всех активных заявок.
2014/05/30 21:21:19.682| |TPS_XXX4@FORTS_SPBFUT00XXX|Стратегия остановлена. [0,2]. Позиция при старте 0.
2014/05/30 21:21:19.682| |SLS_XXX4@FORTS_SPBFUT00XXX|Стратегия останавливается. [0,2]. Позиция при старте -1.
2014/05/30 21:21:19.682| |SLS_XXX4@FORTS_SPBFUT00XXX|Правило 'Изменение стакана инструмента XXX4@FORTS (0x26E0A05)'. Приостановлено.
2014/05/30 21:21:19.682| |SLS_XXX4@FORTS_SPBFUT00XXX|Ожидание снятия всех активных заявок.
2014/05/30 21:21:19.682| |SLS_XXX4@FORTS_SPBFUT00XXX|Стратегия остановлена. [0,2]. Позиция при старте -1.
2014/05/30 21:21:19.682| |TPSLS_XXX4@FORTS_SPBFUT00XXX|Стратегия останавливается. [1,1]. Позиция при старте -1.
2014/05/30 21:21:19.682| |TPSLS_XXX4@FORTS_SPBFUT00XXX|Ожидание снятия всех активных заявок.
2014/05/30 21:21:19.682| |TPSLS_XXX4@FORTS_SPBFUT00XXX|Стратегия остановлена. [0,1]. Позиция при старте -1.
Дальше в логе ничего нет, но во время дебага видно что в ChildStrategies Присутствует APS и ProcessState=Started
Подскажите пожалуйста, как быть в этой ситуации, как остановить стратегию?