← Zurück

Не активируется StopLoss

Здравствуйте, коллеги.

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (4)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Marco
Marco Autor

Обнаружил, что StopLoss активируется, но только для первой сделки. В аттаче - тест, который иллюстрирует проблему. Тестовые данные - тики RIU9, которые идут со StockSharp.

Mikhail Sukhov
Mikhail Sukhov

Marco: Обнаружил, что StopLoss активируется, но только для первой сделки. В аттаче - тест, который иллюстрирует проблему. Тестовые данные - тики RIU9, которые идут со StockSharp.

А на реале такой код работает?

Marco
Marco Autor

Mikhail Sukhov: А на реале такой код работает?

Проверил на тестовой плазе - StopLoss'ы работают. Проблема только с EmulationTrader.

pyhta4og
pyhta4og

Marco:

Mikhail Sukhov: А на реале такой код работает?

Проверил на тестовой плазе - StopLoss'ы работают. Проблема только с EmulationTrader.

Соберите пожалуйста логи EmulationTrader с уровнем логирования Debug воспроизводяший не -исполнение стоплосса.

Лучше всего использовать FileLog с единым файлом под логи всего - так проще увидеть последовательность.

Несрабатывание стоплосса может быть связано как с неверным расчетом pnl так и с неправильным (не)поступлением трейдов/бид-асков в стратегию стоплосса.

Вы при тестировании используете какие стаканы? pnl считается по bestbid/bestask. Если у вас непонятно по каким причинам стаканов нет, а bestbid/bestask не null, то будет считаться неправильный pnl и стоплосс не сработает.