ChildStrategy
Atom
2/14/2017
swnike


Добрый день. Не получается запустить дочерние стратегии (StopLossStrategy, TakeProfitStrategy). При запуске стратегия останавливается с выдачей исключения: "System.InvalidOperationException: Инструмент SBER@TQBR не подписан на получение отфильтрованного стакана котировок."

Почему при входе в стратегию многие поля Security равны "null"? Как например Security.StepPrice=null.Ведь в стратегию передается объект Security. Как сделать чтобы поля обновлялись?

Что делаю не так? Пример стратегии из StockSharp_Edu_4_3_19_5 дает тот же результат. Версия S# 4.3.19.5; Win 10;

Исходный код стратегии:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using StockSharp.Algo; using StockSharp.Algo.Strategies; using StockSharp.Algo.Strategies.Quoting; using StockSharp.Algo.Strategies.Protective; using StockSharp.BusinessEntities;

using Ecng.Collections; using MoreLinq; using StockSharp.Messages;

namespace Lesson6 { class SmartStrategy:Strategy
{ protected override void OnStarted() { var order = this.BuyAtMarket();

        order.WhenNewTrade(this.Connector)
            .Do(trade =>
                    {
                        var sl = new StopLossStrategy(trade, 0.2);//20 пунктов от нашей сделки  Security.StepPrice*20
                        var tp = new TakeProfitStrategy(trade, 0.4);//40 пунктов от нашей сделки
                        {
                            
                        }

                        var tpsl = new TakeProfitStopLossStrategy(tp, sl);

                        tpsl.WhenStopped()
                            .Do(tpsl1 =>
                                        {

                                        }).Apply(this);

                        ChildStrategies.Add(tpsl);    
                    }).Apply(this);

        RegisterOrder(order);
        base.OnStarted();
    }

    protected override void OnStopped()
    {
        base.OnStopped();
    }
}

}

лог-файл:

0001/01/01 00:00:00.000| |QuikTrader|Connect 2017/02/14 19:34:22.668| |Quik LUA. Transactions|Connect to Unspecified/localhost:5001... 2017/02/14 19:34:22.672| |Quik LUA. Transactions|Connect to Unspecified/localhost:5001 is OK. 2017/02/14 19:34:22.679| |Quik LUA. Transactions|Sending logon to Unspecified/localhost:5001... 2017/02/14 19:34:22.689| |Quik LUA. Transactions|Logon sent to Unspecified/localhost:5001 OK. 2017/02/14 19:34:22.690| |Quik LUA. Market data|Connect to Unspecified/localhost:5001... 2017/02/14 19:34:22.691| |Quik LUA. Market data|Connect to Unspecified/localhost:5001 is OK. 2017/02/14 19:34:22.692| |Quik LUA. Market data|Sending logon to Unspecified/localhost:5001... 2017/02/14 19:34:22.692| |Quik LUA. Market data|Logon sent to Unspecified/localhost:5001 OK. 2017/02/14 19:34:22.693| |Quik LUA. Transactions|Start message processing. 2017/02/14 19:34:22.694| |Quik LUA. Market data|Start message processing. 2017/02/14 19:34:22.826| |QuikTrader|Создан новый портфель 000000421641. 2017/02/14 19:34:22.829| |QuikTrader|Создан новый портфель L01-00000F00. 2017/02/14 19:34:22.847|Warning|QuikTrader|Заявка 1739007 не найдена. 2017/02/14 19:34:22.849| |QuikTrader|New order: 56353259/1767477 Покупка Цена=0 Объем=10 Сост=Done Бал=0 2017/02/14 19:34:22.850|Warning|QuikTrader|Заявка 1802429 не найдена. 2017/02/14 19:34:22.850|Warning|QuikTrader|Заявка 1813287 не найдена. 2017/02/14 19:34:22.850|Warning|QuikTrader|Заявка 1834923 не найдена. 2017/02/14 19:34:22.851| |QuikTrader|New order: 63735060/2434567 Покупка Цена=0 Объем=10 Сост=Done Бал=0 2017/02/14 19:34:22.851|Warning|QuikTrader|Заявка 2449226 не найдена. 2017/02/14 19:34:22.852| |QuikTrader|New order: 70327237/2989661 Покупка Цена=0 Объем=10 Сост=Done Бал=0 2017/02/14 19:34:22.852|Warning|QuikTrader|Заявка 1739007 не найдена. 2017/02/14 19:34:22.852| |QuikTrader|My trade delayed: Execution,T(L)=2017.02.14 19:34:22.852,T(S)=2017.02.14 13:35:16.812,(Transaction),Sec=S#:SBER@TQBR, Native:,Type:,Ord=1739007/0/0,Fail=,Price=0,OrdVol=,TrVol=10,Bal=,TId=213143,Pf=L01-00000F00,TPrice=163,11,UId=,State= 2017/02/14 19:34:22.854|Warning|QuikTrader|Заявка 1802429 не найдена. 2017/02/14 19:34:22.854| |QuikTrader|My trade delayed: Execution,T(L)=2017.02.14 19:34:22.854,T(S)=2017.02.14 13:46:49.856,(Transaction),Sec=S#:SBER@TQBR, Native:,Type:,Ord=1802429/0/0,Fail=,Price=0,OrdVol=,TrVol=10,Bal=,TId=219932,Pf=L01-00000F00,TPrice=162,89,UId=,State= 2017/02/14 19:34:22.854|Warning|QuikTrader|Заявка 1813287 не найдена. 2017/02/14 19:34:22.854| |QuikTrader|My trade delayed: Execution,T(L)=2017.02.14 19:34:22.854,T(S)=2017.02.14 13:48:55.048,(Transaction),Sec=S#:SBER@TQBR, Native:,Type:,Ord=1813287/0/0,Fail=,Price=0,OrdVol=,TrVol=10,Bal=,TId=221001,Pf=L01-00000F00,TPrice=162,86,UId=,State= 2017/02/14 19:34:22.854|Warning|QuikTrader|Заявка 1834923 не найдена. 2017/02/14 19:34:22.854| |QuikTrader|My trade delayed: Execution,T(L)=2017.02.14 19:34:22.854,T(S)=2017.02.14 13:53:04.856,(Transaction),Sec=S#:SBER@TQBR, Native:,Type:,Ord=1834923/0/0,Fail=,Price=0,OrdVol=,TrVol=10,Bal=,TId=223889,Pf=L01-00000F00,TPrice=162,85,UId=,State= 2017/02/14 19:34:22.855|Warning|QuikTrader|Заявка 2449226 не найдена. 2017/02/14 19:34:22.855| |QuikTrader|My trade delayed: Execution,T(L)=2017.02.14 19:34:22.855,T(S)=2017.02.14 15:48:50.207,(Transaction),Sec=S#:SBER@TQBR, Native:,Type:,Ord=2449226/0/0,Fail=,Price=0,OrdVol=,TrVol=10,Bal=,TId=291000,Pf=L01-00000F00,TPrice=162,45,UId=,State= 2017/02/14 19:34:30.571| |QuikTrader|Инструмент SBER@TQBR зарегистрирован на получение рыночных данных для MarketDepth. 2017/02/14 19:34:30.595| |SS_SBER@TQBR_L01-00000F00|Стратегия Запущена. [0,-1]. Позиция 0. 2017/02/14 19:34:30.617| |SS_SBER@TQBR_L01-00000F00|Регистрация новой Market (0x3FCDA63) заявки на Buy с ценой 0 и объемом 10. 2017/02/14 19:34:30.638| |QuikTrader|RegisterOrder: 0/ Покупка Цена=0 Объем=10 Сост=None Бал=0 2017/02/14 19:34:30.638| |QuikTrader|New order: 70460263/ Покупка Цена=0 Объем=10 Сост=Pending Бал=10 2017/02/14 19:34:31.275|Warning|QuikTrader|Заявка 3002330 не найдена. 2017/02/14 19:34:31.275| |QuikTrader|My trade delayed: Execution,T(L)=2017.02.14 19:34:31.275,T(S)=2017.02.14 17:34:31.716,(Transaction),Sec=S#:SBER@TQBR, Native:,Type:,Ord=3002330/0/0,Fail=,Price=0,OrdVol=,TrVol=10,Bal=,TId=355746,Pf=L01-00000F00,TPrice=163,03,UId=,State= 2017/02/14 19:34:31.276|Warning|QuikTrader|Заявка 3002330 не найдена. 2017/02/14 19:34:31.276| |QuikTrader|My trade delayed: Execution,T(L)=2017.02.14 19:34:31.276,T(S)=2017.02.14 17:34:31.716,(Transaction),Sec=S#:SBER@TQBR, Native:,Type:,Ord=3002330/0/0,Fail=,Price=0,OrdVol=,TrVol=10,Bal=,TId=355746,Pf=L01-00000F00,TPrice=163,03,UId=,State= 2017/02/14 19:34:31.276|Warning|QuikTrader|Заявка 3002330 не найдена. 2017/02/14 19:34:31.276| |QuikTrader|My trade delayed: Execution,T(L)=2017.02.14 19:34:31.276,T(S)=2017.02.14 17:34:31.716,(Transaction),Sec=S#:SBER@TQBR, Native:,Type:,Ord=3002330/0/0,Fail=,Price=0,OrdVol=,TrVol=10,Bal=,TId=355746,Pf=L01-00000F00,TPrice=163,03,UId=,State= 2017/02/14 19:34:31.277| |QuikTrader|Order changed: 70460263/3002330 Покупка Цена=0 Объем=10 Сост=Done Бал=0 2017/02/14 19:34:31.277| |SS_SBER@TQBR_L01-00000F00|Заявка 70460263 (0x3FCDA63) больше не активна. 2017/02/14 19:34:31.277| |SS_SBER@TQBR_L01-00000F00|Новая позиция: (S#:SBER@TQBR, Native:,Type:Stock, L01-00000F00)=10. 2017/02/14 19:34:31.277| |TPS_SBER@TQBR_L01-00000F00|Стратегия Запущена. [0,2]. Позиция 0. 2017/02/14 19:34:31.277| |TPS_SBER@TQBR_L01-00000F00|Защита позиции Buy/163,03 с объемом 10. Уровень=0,4, Скользящий=False, Маркет-заявки=False, Котирование=False, Проскальзывание=0 2017/02/14 19:34:31.277| |TPS_SBER@TQBR_L01-00000F00|Котирование на Sell объема 10. 2017/02/14 19:34:31.277|Error |TPS_SBER@TQBR_L01-00000F00|System.InvalidOperationException: Инструмент SBER@TQBR не подписан на получение отфильтрованного стакана котировок. в StockSharp.Algo.Connector.GetFilteredMarketDepth(Security security) в StockSharp.Algo.Strategies.Quoting.QuotingStrategy.GetFilteredQuotes(Sides side) в StockSharp.Algo.Strategies.Quoting.QuotingStrategy.get_BestPrice() в StockSharp.Algo.Strategies.Protective.ProtectiveStrategy.get_ActivationPrice() в StockSharp.Algo.Strategies.Protective.ProtectiveStrategy.NeedQuoting(Nullable1 currentPrice, Nullable1 currentVolume, Decimal newVolume) в StockSharp.Algo.Strategies.Quoting.QuotingStrategy.ProcessQuoting() в StockSharp.Algo.Strategies.Protective.ProtectiveStrategy.ProcessQuoting() в StockSharp.Algo.Strategies.Quoting.QuotingStrategy.OnStarted() в StockSharp.Algo.Strategies.Protective.ProtectiveStrategy.OnStarted() в StockSharp.Algo.Strategies.Strategy.set_ProcessState(ProcessStates value) 2017/02/14 19:34:31.277| |TPS_SBER@TQBR_L01-00000F00|Стратегия останавливается. [0,2]. Позиция 0. 2017/02/14 19:34:31.277| |TPS_SBER@TQBR_L01-00000F00|Правило 'Новые сделки инструмента SBER@TQBR (0x2366E6E)'. Приостановлено. 2017/02/14 19:34:31.277|Warning|TPS_SBER@TQBR_L01-00000F00|Заканчиваем котирование с неисполненным объемом равный 10. 2017/02/14 19:34:31.277| |TPS_SBER@TQBR_L01-00000F00|Ожидание снятия всех активных заявок. 2017/02/14 19:34:31.277| |TPS_SBER@TQBR_L01-00000F00|Стратегия остановлена. [0,2]. Позиция 0. 2017/02/14 19:34:31.277| |SLS_SBER@TQBR_L01-00000F00|Стратегия Запущена. [0,1]. Позиция 0. 2017/02/14 19:34:31.277| |SLS_SBER@TQBR_L01-00000F00|Защита позиции Buy/163,03 с объемом 10. Уровень=0,2, Скользящий=False, Маркет-заявки=False, Котирование=False, Проскальзывание=0 2017/02/14 19:34:31.277| |SLS_SBER@TQBR_L01-00000F00|Котирование на Sell объема 10. 2017/02/14 19:34:31.277|Error |SLS_SBER@TQBR_L01-00000F00|System.InvalidOperationException: Инструмент SBER@TQBR не подписан на получение отфильтрованного стакана котировок. в StockSharp.Algo.Connector.GetFilteredMarketDepth(Security security) в StockSharp.Algo.Strategies.Quoting.QuotingStrategy.GetFilteredQuotes(Sides side) в StockSharp.Algo.Strategies.Quoting.QuotingStrategy.get_BestPrice() в StockSharp.Algo.Strategies.Protective.ProtectiveStrategy.get_ActivationPrice() в StockSharp.Algo.Strategies.Protective.ProtectiveStrategy.NeedQuoting(Nullable1 currentPrice, Nullable1 currentVolume, Decimal newVolume) в StockSharp.Algo.Strategies.Quoting.QuotingStrategy.ProcessQuoting() в StockSharp.Algo.Strategies.Protective.ProtectiveStrategy.ProcessQuoting() в StockSharp.Algo.Strategies.Quoting.QuotingStrategy.OnStarted() в StockSharp.Algo.Strategies.Protective.ProtectiveStrategy.OnStarted() в StockSharp.Algo.Strategies.Strategy.set_ProcessState(ProcessStates value) 2017/02/14 19:34:31.277| |SLS_SBER@TQBR_L01-00000F00|Стратегия останавливается. [0,1]. Позиция 0. 2017/02/14 19:34:31.277| |SLS_SBER@TQBR_L01-00000F00|Правило 'Новые сделки инструмента SBER@TQBR (0x2B7AFA0)'. Приостановлено. 2017/02/14 19:34:31.277|Warning|SLS_SBER@TQBR_L01-00000F00|Заканчиваем котирование с неисполненным объемом равный 10. 2017/02/14 19:34:31.277| |SLS_SBER@TQBR_L01-00000F00|Ожидание снятия всех активных заявок. 2017/02/14 19:34:31.277| |SLS_SBER@TQBR_L01-00000F00|Стратегия остановлена. [0,1]. Позиция 0. 2017/02/14 19:34:31.277| |TPSLS_SBER@TQBR_L01-00000F00|Стратегия Запущена. [0,1]. Позиция 0. 2017/02/14 19:34:31.277| |SS_SBER@TQBR_L01-00000F00|Новая Buy сделка 355746 по цене 163,03 на 10 заявки 70460263. 2017/02/14 19:34:46.994| |QuikTrader|Инструмент SBER@TQBR зарегистрирован на получение рыночных данных для Trades. 2017/02/14 19:34:46.995|Error |QuikTrader|System.InvalidOperationException: Subscribed 2017/02/14 19:34:47.081| |QuikTrader|Инструмент SBER@TQBR зарегистрирован на получение рыночных данных для Trades. 2017/02/14 19:34:47.082| |QuikTrader|Инструмент SBER@TQBR зарегистрирован на получение рыночных данных для MarketDepth. 2017/02/14 19:35:04.988| |QuikTrader|Disconnect 2017/02/14 19:35:05.015|Error |Quik LUA. Market data|System.IO.IOException: Не удается записать данные в транспортное соединение: Удаленный хост принудительно разорвал существующее подключение. ---> System.Net.Sockets.SocketException: Удаленный хост принудительно разорвал существующее подключение в System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) в System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size) --- Конец трассировки внутреннего стека исключений ---




Thanks:


Support

Avatar
Date: 2/15/2017
Reply


Проверим...

Thanks:

RomSunZ

Avatar
Date: 2/16/2017
Reply


Есть какой-то баг. Вызов GetFilteredMarketDepth приводит к исключению "Инструмент ХХХХ не подписан на получение отфильтрованного стакана котировок.", хотя метод connector.RegisterFilteredMarketDepth(security) до этого вызывается.

Thanks:

Support

Avatar
Date: 2/16/2017
Reply


Да это баг, в следующих версиях будет исправлен.

Thanks:


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

loading
clippy