Стоп заявка
Atom
11/27/2012


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

Code

        private void OnNewOrderTrades(IEnumerable<MyTrade> trades)
        {
            var protectiveStrategy = trades.Select(trade =>
            {
                //Определяем величину уровня стоп-лоса
                var level = trade.Order.Price - 100;

                // выставляет стоп-лосс
                var stopLossLevelUnit = new Unit(level, UnitTypes.Limit, Security);

                return new StopLossStrategy(trade, stopLossLevelUnit);
            });

            ChildStrategies.AddRange(protectiveStrategy);
        }


Однако стоп-лосс при достижении цены не срабатывает.
Пробовал все свойства UnitTypes, но результат - или срабатывание стопа после совершения трейда или несрабатывание вообще.

Подскажите, как правильно выставить стоп для сделки к примеру на 100 пунктов ниже (для фьюча РТС)?


Tags:


Thanks:


Mirovan

Avatar
Date: 12/12/2012
Reply


Попробуйте пример из семплов:
Code

            foreach (MyTrade t in trades)
            {
                Console.WriteLine("trade !!!");

                var takeProfit = new TakeProfitStrategy(t, 20);

                var stopLoss = new StopLossStrategy(t, 10);
                var str = new TakeProfitStopLossStrategy(takeProfit, stopLoss);

                ChildStrategies.Add(str);

            }


Кстати проверьте метод OnNewOrderTrades - он вызывается или нет?
Если нет, то нужно установить значение поля WaitAllTrades у стратегии стоп-лоса и котирования в true.
Thanks:

intint

Avatar
Date: 12/12/2012
Reply


Не пойму в чем ошибка - стратегия работает, заявка исполняется, защитная стратегия судя по логам работает, а потом падает.

В чем может быть баг ???


2012.12.12 21:54:18.122| |TPS_SiZ2@RTS_SPBFUT00281|Защита сделки 79765218 заявки 78847884.
...
2012.12.12 21:54:18.158| |MQS_SiZ2@RTS_SPBFUT00281|Заявка 78847884 больше не активна.


Code

2012.12.12 21:54:12.751|       |QuikTrader|New order: 140521/1933130026 Продажа Цена=30683 Объем=5 Сост=Done Бал=0 
2012.12.12 21:54:12.766|       |QuikTrader|New order: 140531/1933168180 Покупка Цена=30721 Объем=5 Сост=Done Бал=0 
2012.12.12 21:54:12.767|       |QuikTrader|New order: 142022/1933170880 Покупка Цена=30726 Объем=5 Сост=Done Бал=0 
2012.12.12 21:54:12.767|       |QuikTrader|New order: 142031/1933215627 Продажа Цена=30687 Объем=5 Сост=Done Бал=0 
2012.12.12 21:54:12.767|       |QuikTrader|New order: 151507/1933292705 Покупка Цена=30713 Объем=5 Сост=Done Бал=0 
2012.12.12 21:54:12.767|       |QuikTrader|New order: 151517/1933418642 Продажа Цена=30670 Объем=5 Сост=Done Бал=0 
2012.12.12 21:54:12.767|       |QuikTrader|New order: 160525/1933419313 Продажа Цена=30670 Объем=5 Сост=Done Бал=0 
2012.12.12 21:54:12.768|       |QuikTrader|New order: 73309866/1934015231 Продажа Цена=30582 Объем=1 Сост=Done Бал=0 
2012.12.12 21:54:12.768|       |QuikTrader|New order: 74078073/1934026394 Продажа Цена=30577 Объем=1 Сост=Done Бал=0 
2012.12.12 21:54:12.768|       |QuikTrader|New order: 74961825/1934036819 Продажа Цена=30581 Объем=1 Сост=Done Бал=0 
2012.12.12 21:54:12.768|       |QuikTrader|New order: 75382429/1934045999 Покупка Цена=30606 Объем=1 Сост=Done Бал=0 
2012.12.12 21:54:12.768|       |QuikTrader|New order: 78058736/1934103299 Продажа Цена=30572 Объем=1 Сост=Done Бал=0 
2012.12.12 21:54:13.026|       |QuikTrader|New order: 140531/1907797 Покупка Цена=30721 Объем=5 Сост=Done Бал=0 
2012.12.12 21:54:13.027|       |QuikTrader|New order: 142031/1907845 Продажа Цена=30687 Объем=5 Сост=Done Бал=0 
2012.12.12 21:54:13.027|       |QuikTrader|New order: 151517/1907970 Продажа Цена=30670 Объем=5 Сост=Done Бал=0 
2012.12.12 21:54:13.028|       |QuikTrader|New order: 160536/1907994 Покупка Цена=30708 Объем=5 Сост=Done Бал=5 
2012.12.12 21:54:13.167|       |QuikTrader|Экспорт запущен.
2012.12.12 21:54:13.306|Error  |QuikTrader|System.InvalidOperationException: Инструмент с кодом LKOH для бумажной позиции не найден.
   в StockSharp.Quik.QuikTrader.#=qKP5xkryv_BLBz9FH4VGI78AeILidAh6yriKbRUDGBd4=.#=qgHe_P3MDYJK8z$lRLodPZg==(IList`1 #=qErgxR5R8ijueue$803aA6Q==, Func`2 #=qkttsqiru7i9M42meVzyJpQ==)
   в #=qIXhYlq42gusmJ2A32NsN5Ax0Y_OK1WFfG67P8GpTU_InVvHHSFyAS2$fvcqFg9r6.#=qFiCHjYnRW3CmWb8MGaUV7Q==(DdeTable #=q5RZiucAH3l7rrDcQWUh1uw==, IList`1 #=qAu$zucNoQid3dCEGQAu2vQ==, Action`2 #=qaqP1AhN8E2BNJZJ$2uwTvA==, Action`1 #=qfKbbOFcCam6jnNKRIEFGnQ==, Boolean #=qRt4iW7c1yIaKnzuW1VSpMA==)
2012.12.12 21:54:14.557|       |RS_SiZ2@RTS_SPBFUT00281|Стратегия запущена. [0,-1]. Позиция при старте 0.
2012.12.12 21:54:17.517|       |MQS_SiZ2@RTS_SPBFUT00281|Стратегия запущена. [0,1]. Позиция при старте 0.
2012.12.12 21:54:17.518|       |MQS_SiZ2@RTS_SPBFUT00281|Котирование на Sell объема 1.
2012.12.12 21:54:17.519|       |MQS_SiZ2@RTS_SPBFUT00281|Приостановка правил. _rulesSuspendCount 1.
2012.12.12 21:54:17.544|       |MQS_SiZ2@RTS_SPBFUT00281|Возобновление правил. _rulesSuspendCount 0.
2012.12.12 21:54:17.570|       |MQS_SiZ2@RTS_SPBFUT00281|Цена текущей NULL и лучшей 30541.
2012.12.12 21:54:17.570|       |MQS_SiZ2@RTS_SPBFUT00281|Лучший бид 30542 и лучший аск 30551.
2012.12.12 21:54:17.582|       |MQS_SiZ2@RTS_SPBFUT00281|Регистрация новой заявки на Sell с ценой 30541 и объемом 1. MQS_SiZ2@RTS_SPBFUT00281
2012.12.12 21:54:17.596|       |QuikTrader|RegisterOrder: 78847884/0 Продажа Цена=30541 Объем=1 Сост=None Бал=1 
2012.12.12 21:54:18.044|       |QuikTrader|New order: 78847884/1934123313 Продажа Цена=30541 Объем=1 Сост=Done Бал=0 
2012.12.12 21:54:18.070|       |RS_SiZ2@RTS_SPBFUT00281|Новая позиция: SPBFUT00281-SiZ2@RTS=-1.
2012.12.12 21:54:18.075|       |MQS_SiZ2@RTS_SPBFUT00281|Новая позиция: SPBFUT00281-SiZ2@RTS=-1.
2012.12.12 21:54:18.077|       |MQS_SiZ2@RTS_SPBFUT00281|Позиция изменилась на -1. Оставшийся объем 0.
2012.12.12 21:54:18.077|       |MQS_SiZ2@RTS_SPBFUT00281|Заканчиваем котирование.
2012.12.12 21:54:18.078|       |MQS_SiZ2@RTS_SPBFUT00281|Стратегия останавливается. [0,1]. Позиция при старте -1.
2012.12.12 21:54:18.080|       |MQS_SiZ2@RTS_SPBFUT00281|Правило 'Изменение стакана инструмента SiZ2@RTS (0x2B9109E)'. Приостановлено.
2012.12.12 21:54:18.084|       |MQS_SiZ2@RTS_SPBFUT00281|Ожидание снятия всех активных заявок.
2012.12.12 21:54:18.098|       |MQS_SiZ2@RTS_SPBFUT00281|Отмена заявки 78847884.
2012.12.12 21:54:18.099|       |QuikTrader|CancelOrder: 78847884/1934123313 Продажа Цена=30541 Объем=1 Сост=Done Бал=0 
2012.12.12 21:54:18.122|       |TPS_SiZ2@RTS_SPBFUT00281|Стратегия запущена. [0,2]. Позиция при старте 0.
2012.12.12 21:54:18.122|       |TPS_SiZ2@RTS_SPBFUT00281|Защита сделки 79765218 заявки 78847884.
2012.12.12 21:54:18.123|       |TPS_SiZ2@RTS_SPBFUT00281|Котирование на Buy объема 1.
2012.12.12 21:54:18.123|       |TPS_SiZ2@RTS_SPBFUT00281|Приостановка правил. _rulesSuspendCount 1.
2012.12.12 21:54:18.123|       |TPS_SiZ2@RTS_SPBFUT00281|Возобновление правил. _rulesSuspendCount 0.
2012.12.12 21:54:18.127|       |SLS_SiZ2@RTS_SPBFUT00281|Стратегия запущена. [0,2]. Позиция при старте 0.
2012.12.12 21:54:18.127|       |SLS_SiZ2@RTS_SPBFUT00281|Защита сделки 79765218 заявки 78847884.
2012.12.12 21:54:18.127|       |SLS_SiZ2@RTS_SPBFUT00281|Котирование на Buy объема 1.
2012.12.12 21:54:18.127|       |SLS_SiZ2@RTS_SPBFUT00281|Приостановка правил. _rulesSuspendCount 1.
2012.12.12 21:54:18.128|       |SLS_SiZ2@RTS_SPBFUT00281|Возобновление правил. _rulesSuspendCount 0.
2012.12.12 21:54:18.130|       |TPSLS_SiZ2@RTS_SPBFUT00281|Стратегия запущена. [2,2]. Позиция при старте 0.
2012.12.12 21:54:18.130|       |RS_SiZ2@RTS_SPBFUT00281|Новая Sell сделка 79765218 по цене 30542 на 1 заявки 78847884.
2012.12.12 21:54:18.155|       |MQS_SiZ2@RTS_SPBFUT00281|Новая Sell сделка 79765218 по цене 30542 на 1 заявки 78847884.
2012.12.12 21:54:18.158|       |MQS_SiZ2@RTS_SPBFUT00281|Заявка 78847884 больше не активна.
2012.12.12 21:54:18.160|       |MQS_SiZ2@RTS_SPBFUT00281|Стратегия остановлена. [0,2]. Позиция при старте -1.
2012.12.12 21:54:18.180|       |QuikTrader|Order changed: 78847884/1934123313 Продажа Цена=30541 Объем=1 Сост=Done Бал=0 
2012.12.12 21:54:18.181|       |QuikTrader|Order changed: 78847884/1934123313 Продажа Цена=30541 Объем=1 Сост=Done Бал=0 
2012.12.12 21:54:18.313|       |QuikTrader|OrderCancelFailed: 78847884/1934123313 Продажа Цена=30541 Объем=1 Сост=Done Бал=0 
StockSharp.Quik.ApiException: Код ошибки Failed Сообщение Вы не можете снять данную заявку
2012.12.12 21:54:20.495|Error  |SLS_SiZ2@RTS_SPBFUT00281|System.ArgumentException: У инструмента SiZ2@RTS отсутствует информация о планках.
Имя параметра: security
   в StockSharp.Algo.TraderHelper.GetMarketPrice(Security security, OrderDirections direction)
   в StockSharp.Algo.Strategies.ProtectiveStrategy.get_ClosePositionPrice()
   в StockSharp.Algo.Strategies.StopLossStrategy.get_ActivationPrice()
   в StockSharp.Algo.Strategies.ProtectiveStrategy.NeedQuoting(Decimal currentPrice, Decimal currentVolume, Range`1 acceptablePriceRange, Decimal newVolume)
   в StockSharp.Algo.Strategies.QuotingStrategy.ProcessQuoting()
   в StockSharp.Algo.Strategies.ProtectiveStrategy.ProcessQuoting()
   в StockSharp.Algo.MarketRule`2.#=qi3hqyTgOI5dZEARZP28nH2SBD88D1qTQGuFjf6P9ZQY=.#=q_eZ4IJWGrJ3v1keuWlSFRQ==(#=qm$heEiUsNAmzGxlfWjBtkw== #=qc_B2bNjcbdhaI6Rt9ZvIuQ==)
   в StockSharp.Algo.MarketRule`2.#=qlMrJ9mLC5voOVghPH$xgB2VlcP21OlBVjwvlGB5rqGo=()
   в StockSharp.Algo.MarketRuleHelper.#=qKZ8ZzaOt_ebb8gNH4O3CiA==(IMarketRuleContainer #=qKMbkiCgz1LKcPaiHd8UC2Q==, IMarketRule #=qt$E4_YmYi0PnpJ6nE15pAQ==, Func`1 #=qiQggEF1d4UbmJo4W4r4IdQ==)
   в StockSharp.Algo.Strategies.Strategy.#=q3udKpCOalDAG9i_Fiaji7Bk5TvmGRtdO0kyciLcHtxNVF6_Th1OBDyPaB$aQwscwQcZFlwCZUfo3TiM$JKmUmQ==(IMarketRule #=qXKycGTf2ej0HKdDUPJVrlQ==, Func`1 #=qojSXZRoaHUuA_th_PKD0eQ==)
2012.12.12 21:54:20.496|       |SLS_SiZ2@RTS_SPBFUT00281|Стратегия останавливается. [0,2]. Позиция при старте 0.
2012.12.12 21:54:20.496|       |SLS_SiZ2@RTS_SPBFUT00281|Правило 'Изменение стакана инструмента SiZ2@RTS (0x3B05601)'. Приостановлено.
2012.12.12 21:54:20.497|Warning|SLS_SiZ2@RTS_SPBFUT00281|Заканчиваем котирование с неисполненным объемом равный 1.
2012.12.12 21:54:20.497|       |SLS_SiZ2@RTS_SPBFUT00281|Ожидание снятия всех активных заявок.
2012.12.12 21:54:20.497|       |SLS_SiZ2@RTS_SPBFUT00281|Стратегия остановлена. [0,2]. Позиция при старте 0.
2012.12.12 21:54:20.498|       |TPS_SiZ2@RTS_SPBFUT00281|Стратегия останавливается. [0,2]. Позиция при старте 0.
2012.12.12 21:54:20.498|       |TPS_SiZ2@RTS_SPBFUT00281|Правило 'Изменение стакана инструмента SiZ2@RTS (0xD5F67D)'. Приостановлено.
2012.12.12 21:54:20.498|Warning|TPS_SiZ2@RTS_SPBFUT00281|Заканчиваем котирование с неисполненным объемом равный 1.
2012.12.12 21:54:20.498|       |TPS_SiZ2@RTS_SPBFUT00281|Ожидание снятия всех активных заявок.
2012.12.12 21:54:20.498|       |TPS_SiZ2@RTS_SPBFUT00281|Стратегия остановлена. [0,2]. Позиция при старте 0.
2012.12.12 21:54:20.498|       |TPSLS_SiZ2@RTS_SPBFUT00281|Стратегия останавливается. [1,1]. Позиция при старте 0.
2012.12.12 21:54:20.498|       |TPSLS_SiZ2@RTS_SPBFUT00281|Ожидание снятия всех активных заявок.
2012.12.12 21:54:20.499|       |TPSLS_SiZ2@RTS_SPBFUT00281|Стратегия остановлена. [1,1]. Позиция при старте 0.

Thanks:

Mirovan

Avatar
Date: 12/14/2012
Reply


Судя по логам - стратегия не может определить цену для исполнения стоп заявки, если используется котирование.
Соответственно нужно установить вручную свойства у бумаги MinPrice и MaxPrice.
Thanks:

reraise

Avatar
Date: 1/24/2013
Reply


Подскужите плз в чем проблема
У меня тэйк и стоп срабатывают сразу же после исполнения ордера.
Стоп исполняется, а тейк отменяется

Code
var _order = this.CreateOrder(orderDirections, price, Volume);
_order.WhenNewTrades().Do(trades => trades.ForEach(t =>
                {
                   var tps = new TakeProfitStrategy(t, new Unit(takeProfit, UnitTypes.Limit));
                   var sls = new StopLossStrategy(t, new Unit(stopLoss, UnitTypes.Limit));
                   var tpsls = new TakeProfitStopLossStrategy(tps, sls);
                   ChildStrategies.Add(tpsls);
                })).Apply(this);
Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy