← Zurück

StoplossStrategy

При старте стратегии добавляю правило обработки всех моих новых сделок.


protected override void OnStarted()
        {
            _series.WhenCandlesFinished()
                .Do(ProcessFinCandle)
                .Apply(this);
            this.WhenNewMyTrades().Do(OnNewOrderTrades).Apply(this);
            
            // запоминаем текущее положение относительно друг друга
           // _isShortLessThenLong = true;// ShortSma.GetCurrentValue() < LongSma.GetCurrentValue();

            base.OnStarted();
        }

На каждую сделку создаю стоплосс


private void OnNewOrderTrades(IEnumerable<MyTrade> myTrades)
{
            var protectiveStrategies = trades.Select(t =>
            {
                // выставляет стоп-лосс в deflevel пунктов 
                var stopLoss = new StopLossStrategy(t, deflevel);
                stopLoss.IsTrailing = true;
                return stopLoss;
            });

            //ChildStrategies.AddRange(protectiveStrategies);
            foreach (var st in protectiveStrategies)
                ChildStrategies.Add(st);
}

Кстати, вместо фора в примере из документации был метод AddRange, которого нет у ChildStrategies. Это нормально?

Лог файл:

0001/01/01 00:00:00.000|       |HistoryEmulationConnector|Connect
0001/01/01 00:00:00.000|       |HistoryEmulationConnector|StartExport
2013/11/11 00:00:00.000|       |HistoryEmulationConnector|Изменение состояния эмуляции Stopped -> Starting
2013/11/11 00:00:00.000|       |HistoryEmulationConnector|Создан новый портфель test account.
2013/11/11 00:00:00.000|       |HistoryEmulationConnector|Изменение состояния эмуляции Starting -> Started
2013/11/11 00:00:00.000|       |RS_RIZ3@FORTS_test account|Стратегия запущена. [0,-1]. Позиция при старте 0.
2013/11/11 00:00:00.000|       |HistoryEmulationConnector|Инструмент RIZ3@FORTS зарегистрирован на получение рыночных данных для Trades.
2014/02/20 22:46:36.015|       |HistoryMessageAdapter|Loading 11.11.2013 0:00:00 Events: 0
2014/02/20 22:47:01.204|       |HistoryMessageAdapter|Loading 12.11.2013 0:00:00 Events: 216755
2013/11/12 17:00:00.000|       |RS_RIZ3@FORTS_test account|Регистрация новой Limit (0x2EF88D4) заявки на Buy с ценой 199682.000000000 и объемом 1. 
2013/11/12 17:00:00.000|       |HistoryEmulationConnector|RegisterOrder: 0/0 Покупка Цена=199682.000000000 Объем=1 Сост=None Бал=0 
2013/11/12 17:00:00.000|       |HistoryEmulationConnector|New order: 81994450/0 Покупка Цена=199682.000000000 Объем=1 Сост=Pending Бал=1 
2014/02/20 22:47:20.756|       |#=q2fRM7GzyJ0kaPhi$YJWwNpgrAk0q2mq7ulLgxePcsZw=|Заявка 81994450 зарегистрирована.
2013/11/12 17:00:00.000|       |HistoryEmulationConnector|Order changed: 81994450/1 Покупка Цена=199682.000000000 Объем=1 Сост=Active Бал=1 
2014/02/20 22:47:20.890|       |#=q2fRM7GzyJ0kaPhi$YJWwNpgrAk0q2mq7ulLgxePcsZw=|Заявка 81994450. Исполнение объема 1 по цене 143520.000000000.
2014/02/20 22:47:20.890|       |#=q2fRM7GzyJ0kaPhi$YJWwNpgrAk0q2mq7ulLgxePcsZw=|Заявка 81994450 полностью исполнена.
2014/02/20 22:47:20.893|       |#=q2fRM7GzyJ0kaPhi$YJWwNpgrAk0q2mq7ulLgxePcsZw=|Сделка 1 заявки 81994450 P=81994450 V=143520.000000000.
2013/11/12 17:00:01.000|       |HistoryEmulationConnector|Order changed: 81994450/1 Покупка Цена=199682.000000000 Объем=1 Сост=Done Бал=0 
2013/11/12 17:00:01.000|       |RS_RIZ3@FORTS_test account|Новая позиция: test account-RIZ3@FORTS=1.
2013/11/12 17:00:01.000|       |RS_RIZ3@FORTS_test account|Заявка 81994450 больше не активна.
2013/11/12 17:00:01.000|       |SLS_RIZ3@FORTS_test account|Стратегия запущена. [0,1]. Позиция при старте 0.
2013/11/12 17:00:01.000|       |SLS_RIZ3@FORTS_test account|Защита сделки 1 заявки 81994450.
2013/11/12 17:00:01.000|       |SLS_RIZ3@FORTS_test account|Котирование на Sell объема 1.
2013/11/12 17:00:01.000|       |SLS_RIZ3@FORTS_test account|Приостановка правил. _rulesSuspendCount 1.
2013/11/12 17:00:01.000|       |SLS_RIZ3@FORTS_test account|Возобновление правил. _rulesSuspendCount 0.
2013/11/12 17:00:01.000|       |RS_RIZ3@FORTS_test account|Новая Buy сделка 1 по цене 143520.000000000 на 1 заявки 81994450.

War dieses Thema hilfreich?

Thema teilen

Kommentare (2)

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

kesot
kesot Autor

Как оказалось для стратегии stoploss в определении цены используются не трейды, а стакан. Поэтому при тестировании на данных без данных о стакане необходимо использовать стаканогенератор.

Интересно почему этого нет в документации.

Mikhail Sukhov
Mikhail Sukhov

kesot: Интересно почему этого нет в документации.

Потому что для этого у нас сделано обучение. Документация вообще мало что содержит. Скорее это Quick Start а не документация.