TakeProfit & StopLoss & снятие заявок
Возникла следующая ситуация, стратегия продала акцию сбера по цене 94.42, StopLoss на 94.47 и TakeProfit на 94.32. Далее цена сначала идет вниз, выставляется TakeProfit, но цена резко уходит вверх и выставляется StopLoss, который и срабатывает, но заявка TakeProfit не снимается[sad]
Цитата:VS 01.07.2011 18:24:25.031 Стратегия запущена.
VS 01.07.2011 18:24:26.515 [BS] Стратегия запущена.
VS 01.07.2011 18:24:26.515 [BS] [BS] Стратегия запущена.
VS 01.07.2011 18:24:26.515 [BS] [BS] [TPS] Стратегия запущена.
VS 01.07.2011 18:24:26.515 [BS] [BS] [SLS] Стратегия запущена.
VS 01.07.2011 18:25:03.078 [BS] [BS] [TPS] Регистрация новой заявки на Buy с ценой 94.32 и объемом 1.
VS 01.07.2011 18:25:03.093 [BS] [BS] [TPS] Заявка 76898486 на Buy отправлена с ценой 94.32 объемом 1.
VS 01.07.2011 18:31:02.093 [BS] [BS] [SLS] Регистрация новой заявки на Buy с ценой 94.47 и объемом 1.
VS 01.07.2011 18:31:02.093 [BS] [BS] [SLS] Заявка 76898487 на Buy отправлена с ценой 94.47 объемом 1.
VS 01.07.2011 18:31:02.625 [BS] [BS] [SLS] Позиция изменилась на 1.
VS 01.07.2011 18:31:02.625 [BS] [BS] [SLS] Заканчиваем котирование с неисполненным объемом равный 0.
VS 01.07.2011 18:31:02.640 [BS] [BS] Стратегия останавливается.
VS 01.07.2011 18:31:02.640 [BS] [BS] [TPS] Стратегия останавливается.
VS 01.07.2011 18:31:02.640 [BS] [BS] Стратегия остановлена.
VS 01.07.2011 18:31:02.640 [BS] [BS] [TPS] Стратегия остановлена.
VS 01.07.2011 18:31:02.640 [BS] [BS] [SLS] Стратегия остановлена.
Так же интересует вопрос, почему первая BatchStrategy не останавливается?
Код
// сама пакетная стратегия так же является параллельной, чтобы она не блокирована основной код робота
var batch = new BatchStrategy(BatchFinishModes.All);
// для каждой сделки добавляем для защиты по пакетной стратегии
batch.ChildStrategies.AddRange(trades.Select(t =>
{
var s = new BatchStrategy(BatchFinishModes.First);
// выставляет тейк-профит в n пунктов
var takeProfit = new TakeProfitStrategy(t, new Unit(Settings.TakeProfit))
{
UseMarketQuoting = true,
};
// выставляет стоп-лосс в m пунктов
var stopLoss = new StopLossStrategy(t, new Unit(Settings.StopLoss))
{
UseMarketQuoting = true,
};
s.ChildStrategies.Add(takeProfit);
s.ChildStrategies.Add(stopLoss);
return s;
}).Cast<Strategy>());