Здравствуйте, коллеги.
Помогите пожалуйста разобраться, почему не активируется StopLoss при тестировании на истории. Пытаюсь выставлять минимальный stoploss следующим кодом:
Код
private void ProtectTrades(IEnumerable<MyTrade> trades)
{
if (StopLoss > 0)
{
var protectiveStrategies = trades.Select(t =>
{
var stoploss = new StopLossStrategy(t, Security.MinStepSize);//new Unit(StopLoss, UnitTypes.Percent));
stoploss.WaitAllTrades = true;
return stoploss;
}
});
ChildStrategies.AddRange(protectiveStrategies);
}
}
Код выполняется, StopLoss добавляется, но при достижении порога защита не активируется. Кусочек лога с запуском стратегии:
Код
2012.10.18 12:26:00.043| |TestStrategy|Opening long position...
2012.10.18 12:26:00.043| |TestStrategy|Открываем позицию. finishPosition=1
2012.10.18 12:26:00.043| |TestStrategy|Снятие всех активных заявок.
2012.10.18 12:26:00.360| |SLS_RIZ2@RTS_TEST|Стратегия запущена. [0,3]. Позиция при старте 0.
2012.10.18 12:26:00.360| |SLS_RIZ2@RTS_TEST|Защита сделки 5 заявки 43943107.
2012.10.18 12:26:00.360| |SLS_RIZ2@RTS_TEST|Котирование на Sell объема 1.
2012.10.18 12:26:00.360| |SLS_RIZ2@RTS_TEST|Приостановка правил. _rulesSuspendCount 1.
2012.10.18 12:26:00.360| |SLS_RIZ2@RTS_TEST|Возобновление правил. _rulesSuspendCount 0.
2012.10.18 12:26:00.360| |TestStrategy|Новая Buy сделка 5 по цене 151560 на 1 заявки 43943107.
2012.10.18 12:26:00.360| |TestStrategy|Long position opened. #2
2012.10.18 12:26:00.360| |TestStrategy|Новая позиция: TEST-RIZ2@RTS=1.
2012.10.18 12:27:00.297| |TestStrategy|Candle: 18.10.2012 12:26:00, 151560, 151570, 151530, 151540, 456
Как видим, после покупки по 151560 со StopLoss'ом 10 появилась свечка с low price 151530, т.е. stoploss должен был сработать.
Обратил внимание, что если вручную инициализировать поле Security, то ActivationPrice для стратегии будет равна 0.
StockSharp обновлен с Codelex только что (4.1.6, commit 20868).