Добрый день.
Не получается запустить дочерние стратегии (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(Nullable`1 currentPrice, Nullable`1 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(Nullable`1 currentPrice, Nullable`1 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)
--- Конец трассировки внутреннего стека исключений ---