Не активируется StopLoss
Atom Ответить
09.11.2012


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

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



Спасибо:




4 Ответов
Marco

Фотография
Программист
Дата: 09.11.2012
Ответить


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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 09.11.2012
Ответить


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


А на реале такой код работает?
Спасибо:

Marco

Фотография
Программист
Дата: 09.11.2012
Ответить


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


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

pyhta4og

Фотография
Дата: 12.11.2012
Ответить


Marco Перейти
Mikhail Sukhov Перейти
А на реале такой код работает?


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


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

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

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

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

Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy