Mikhail Sukhov
|
Дата: 20.04.2011
Перед запуском стратегии проверьте стакан.
|
|
|
|
Евгений
|
Дата: 22.04.2011
Mikhail Sukhov  Перед запуском стратегии проверьте стакан. Да я проверил, экспорт происходит Код if (_strategy.ProcessState == StrategyProcessStates.Stopped) { // запускаем процесс получения стакана, необходимый для работы алгоритма котирования _trader.RegisterQuotes(_strategy.Security); _strategy.Start(); this.Start.Content = "Стоп"; } Заявка зарегистрированная через котирование исполняется, var strategy = new MarketQuotingStrategy(order, new Unit(), new Unit()); strategy.IsParallel = true; base.ChildStrategies.Add(strategy); А добавление стратегии и регистрация заявки через базовый класс не влияет на получение информации со стакана? Кодbase.RegisterOrder(order); ... base.ChildStrategies.Add(batch);
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 22.04.2011
Евгений  Mikhail Sukhov  Перед запуском стратегии проверьте стакан. Да я проверил, экспорт происходит Код if (_strategy.ProcessState == StrategyProcessStates.Stopped) { // запускаем процесс получения стакана, необходимый для работы алгоритма котирования _trader.RegisterQuotes(_strategy.Security); _strategy.Start(); this.Start.Content = "Стоп"; } Вы лишь проверили, что экспорт запускается. А идет или нет - не проверили. Сразу видна ошибка. Запустили стакан и тут же стратеги. Пришел стакан или нет вы не проверяете.
|
|
|
|
Евгений
|
Дата: 25.04.2011
|
|
|
|
Mikhail Sukhov  Евгений  Mikhail Sukhov  Перед запуском стратегии проверьте стакан. Да я проверил, экспорт происходит Код if (_strategy.ProcessState == StrategyProcessStates.Stopped) { // запускаем процесс получения стакана, необходимый для работы алгоритма котирования _trader.RegisterQuotes(_strategy.Security); _strategy.Start(); this.Start.Content = "Стоп"; } Вы лишь проверили, что экспорт запускается. А идет или нет - не проверили. Сразу видна ошибка. Запустили стакан и тут же стратеги. Пришел стакан или нет вы не проверяете. Так защитные стратегии выдают ошибку, потому что нет проверки на получение стакана? Да, программно я не сделал проверки, но регистрация через котирование работает и я решил, что следовательно стакан получается... Михаил, правильно я делаю проверку? Код if (_strategy.ProcessState == StrategyProcessStates.Stopped) { _trader.RegisterQuotes(_strategy.Security); MarketDepth md = _trader.GetMarketDepth(_strategy.Security);
if (md.Count!=0) _strategy.Start(); }
|
Автор топика
|
|
|
Евгений
|
Дата: 28.04.2011
Помогите, пожалуйста, разобраться  Наверника ж кто-то сталкивался с такой же проблемой, код из примера...
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 28.04.2011
Евгений  Помогите, пожалуйста, разобраться  Наверника ж кто-то сталкивался с такой же проблемой, код из примера... А в чем проблема?
|
|
|
|
Евгений
|
Дата: 28.04.2011
Mikhail Sukhov  Евгений  Помогите, пожалуйста, разобраться  Наверника ж кто-то сталкивался с такой же проблемой, код из примера... А в чем проблема? Как сделать, чтобы стакан заполнялся и защитные стратегии отрабатывали и не выдавали ошибку, которую я описал выше. Я сделал проверку при запуске экспорта стакана, но чего-то я не уверен, что правильно. Проверку нужно делать в событии QuotesChanged? И что нужно сделать, если не пришел стакан, чтобы выполнились защитные стратегии?
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 28.04.2011
Евгений  Как сделать, чтобы стакан заполнялся и защитные стратегии отрабатывали и не выдавали ошибку, которую я описал выше. Я сделал проверку при запуске экспорта стакана, но чего-то я не уверен, что правильно. Запустите и проверьте. Евгений  Проверку нужно делать в событии QuotesChanged? Это как? Евгений  И что нужно сделать, если не пришел стакан, чтобы выполнились защитные стратегии? Если нет стакана, то какой смысл защищать (нет ни продавцов, ни покупателей)? Вы на неликвиде работаете?
|
|
|
|
Евгений
|
Дата: 28.04.2011
Mikhail Sukhov  Евгений  Как сделать, чтобы стакан заполнялся и защитные стратегии отрабатывали и не выдавали ошибку, которую я описал выше. Я сделал проверку при запуске экспорта стакана, но чего-то я не уверен, что правильно. Запустите и проверьте. Проверка проходит, а ситуацию, чтобы сработал стоп еще не отлавил. Mikhail Sukhov 
Это как?
Это мои предположения ничем не подкрепленные  Mikhail Sukhov 
Если нет стакана, то какой смысл защищать (нет ни продавцов, ни покупателей)? Вы на неликвиде работаете?
Я запускаю стратегию для Rim1. И еще повторюсь, что когда заявку выставляю через котирование, она исполняется, значит стакан грузится, как я понял. Но я выставляю лимитировано, заявка исполняется, а защитные стратегии выдают ошибку, что коллекция котировок пуста... Информация по стакану с одного места берется?
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 28.04.2011
Евгений  Я запускаю стратегию для Rim1. И еще повторюсь, что когда заявку выставляю через котирование, она исполняется, значит стакан грузится, как я понял. Но я выставляю лимитировано, заявка исполняется, а защитные стратегии выдают ошибку, что коллекция котировок пуста... Информация по стакану с одного места берется? Стакан не успевает прийти.
|
|
|
|
Евгений
|
Дата: 29.04.2011
Mikhail Sukhov  Евгений  Я запускаю стратегию для Rim1. И еще повторюсь, что когда заявку выставляю через котирование, она исполняется, значит стакан грузится, как я понял. Но я выставляю лимитировано, заявка исполняется, а защитные стратегии выдают ошибку, что коллекция котировок пуста... Информация по стакану с одного места берется? Стакан не успевает прийти. А как сделать, чтобы успевал или хотя бы отрабатывали с задержкой защитные стратегии?
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 29.04.2011
Евгений  Mikhail Sukhov  Евгений  Я запускаю стратегию для Rim1. И еще повторюсь, что когда заявку выставляю через котирование, она исполняется, значит стакан грузится, как я понял. Но я выставляю лимитировано, заявка исполняется, а защитные стратегии выдают ошибку, что коллекция котировок пуста... Информация по стакану с одного места берется? Стакан не успевает прийти. А как сделать, чтобы успевал или хотя бы отрабатывали с задержкой защитные стратегии? Запускать стакан раньше стратегий.
|
|
|
|
Евгений
|
Дата: 17.05.2011
|
|
|
|
Mikhail Sukhov  Евгений  Mikhail Sukhov  Евгений  Я запускаю стратегию для Rim1. И еще повторюсь, что когда заявку выставляю через котирование, она исполняется, значит стакан грузится, как я понял. Но я выставляю лимитировано, заявка исполняется, а защитные стратегии выдают ошибку, что коллекция котировок пуста... Информация по стакану с одного места берется? Стакан не успевает прийти. А как сделать, чтобы успевал или хотя бы отрабатывали с задержкой защитные стратегии? Запускать стакан раньше стратегий. Михаил, запускаю стакан сразу после того как экспорт дде закончен и определен инструмент Код var rim1 = securities.FirstOrDefault(s => s.Code == "RIM1");
if (rim1 != null) { _rim1 = rim1; this.GuiAsync(() => { this.Start.IsEnabled = true;
_trader.RegisterQuotes(_rim1);
};) } А стратегию уже потом при нажатии на кнопку. Но все равно та же ошибка вознкикает :( Пробовал также ставить задержку, но та же ошибка... Код if (_strategy.ProcessState == StrategyProcessStates.Stopped) { _trader.RegisterQuotes(_strategy.Security);
Thread.Sleep(5000);
_strategy.Start(); this.Start.Content = "Стоп"; } else { _trader.UnRegisterQuotes(_strategy.Security); _strategy.Stop(); this.Start.Content = "Старт"; }
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 17.05.2011
Евгений  Михаил, запускаю стакан сразу после того как экспорт дде закончен и определен инструмент
А стратегию уже потом при нажатии на кнопку. Но все равно та же ошибка вознкикает :(
Проверьте, событие ITrader.QuotesChanged передается стакан для RIM1.
|
|
|
|
Евгений
|
Дата: 17.05.2011
Mikhail Sukhov  Евгений  Михаил, запускаю стакан сразу после того как экспорт дде закончен и определен инструмент
А стратегию уже потом при нажатии на кнопку. Но все равно та же ошибка вознкикает :(
Проверьте, событие ITrader.QuotesChanged передается стакан для RIM1. Да, в коллекции MarketDepth есть один стакан для инструмента RIM1. А эти записи идентичны? Код_trader.QuotesChanged += Trader_QuotesChanged; _trader.Trader.QuotesChanged += Trader_QuotesChangedReal; _trader - это RealTimeTestTrader.
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 17.05.2011
Евгений  Mikhail Sukhov  Евгений  Михаил, запускаю стакан сразу после того как экспорт дде закончен и определен инструмент
А стратегию уже потом при нажатии на кнопку. Но все равно та же ошибка вознкикает :(
Проверьте, событие ITrader.QuotesChanged передается стакан для RIM1. Да, в коллекции MarketDepth есть один стакан для инструмента RIM1. А эти записи идентичны? Код_trader.QuotesChanged += Trader_QuotesChanged; _trader.Trader.QuotesChanged += Trader_QuotesChangedReal; _trader - это RealTimeTestTrader. Да идентичны. И что, после того, как пришли изменения по стакану (допустим вы вывели куда-то сообщение об этом) стратегия все равно пишет такое сообщение?
|
|
|
|
Евгений
|
Дата: 17.05.2011
Mikhail Sukhov  Евгений  Mikhail Sukhov  Евгений  Михаил, запускаю стакан сразу после того как экспорт дде закончен и определен инструмент
А стратегию уже потом при нажатии на кнопку. Но все равно та же ошибка вознкикает :(
Проверьте, событие ITrader.QuotesChanged передается стакан для RIM1. Да, в коллекции MarketDepth есть один стакан для инструмента RIM1. А эти записи идентичны? Код_trader.QuotesChanged += Trader_QuotesChanged; _trader.Trader.QuotesChanged += Trader_QuotesChangedReal; _trader - это RealTimeTestTrader. Да идентичны. И что, после того, как пришли изменения по стакану (допустим вы вывели куда-то сообщение об этом) стратегия все равно пишет такое сообщение? Еще не отловил такой ситуации, чтобы отработали защитные стратегии - пробую. А подписка на событие QuotesChanged может изменить ситуацию?
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 17.05.2011
Евгений  Еще не отловил такой ситуации, чтобы отработали защитные стратегии - пробую. А подписка на событие QuotesChanged может изменить ситуацию? Она не меняет ничего. Просто она мне покажет, что вы там такого понаписали и почему не работает.
|
|
|
|
Евгений
|
Дата: 18.05.2011
Mikhail Sukhov  Евгений  Еще не отловил такой ситуации, чтобы отработали защитные стратегии - пробую. А подписка на событие QuotesChanged может изменить ситуацию? Она не меняет ничего. Просто она мне покажет, что вы там такого понаписали и почему не работает. И не говорите, написал теперь вот покоя людям не даю  Ну тогда получается, что ситуация останется той же... А сообщение я вывел так Код private void Trader_QuotesChanged(IEnumerable<MarketDepth> obj) { MessageBox.Show(obj.First().Security.Code); } Так регистрацию стакана нужно делать до запуска стратегии, а насколько до по времени? И принципиально ли место регистрации стакана, если я зарегистрирую ее в Running? Я уже думаю может причина не в том что стакан не приходит, а в самих защитных стратегиях. Может ли повлиять то, что я не снимаю стратегию, после того как сделка совершится по сигналу?
|
Автор топика
|
|
|
Евгений
|
Дата: 31.05.2011
Михаил, я кажется понял, почему происходит эта ошибка: TPS 14:11:52.7958984 System.ArgumentException: Коллекция котировок пуста. Имя параметра: quotes.... TPS 18:45:26.1187618 System.ArgumentException: Коллекция котировок пуста. Имя параметра: quotes... Стратегии продолжают работать во время клиринга, собственно, когда стакан пуст. Но тогда вопрос, как сделать, чтобы защитные стратегии не работали в это время? Для базовой стратегии условие на время работы выставлено в OnProcess() Кодif (base.Security.Exchange.IsTradeTime(base.Trader.MarketTime) == false) return StrategyProcessResults.Continue;
|
Автор топика
|
|
|
Евгений
|
Дата: 03.06.2011
Хелп ми плиз
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 03.06.2011
Евгений  Хелп ми плиз Есть стратегия на S#, которая работает только при наличие стакана. Стакан отсутствует. Но торговать все равно хотите. Вывод, или вам нужна другая стратегия, или доводите до ума эта. OnProcess правильно переопределили. Видимо нужно что-то еще.
|
|
|
|
InsiderHSE
|
Дата: 03.06.2011
Евгений  Хелп ми плиз Думаю можно попробовать отнаследоваться от защитной стратегии и точно так же переопределить OnProcess
|
|
|
|
Евгений
|
Дата: 06.06.2011
InsiderHSE  Евгений  Хелп ми плиз Думаю можно попробовать отнаследоваться от защитной стратегии и точно так же переопределить OnProcess Спасибо, я так и сделал, тестирую
|
Автор топика
|
|
|
Евгений
|
Дата: 14.07.2011
А как задать время работы защитных стратегий в версии 3.2.5? До этого я переопределял OnProcess и там указывал.
|
Автор топика
|
|