Евгений
|
Дата: 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 может изменить ситуацию? Она не меняет ничего. Просто она мне покажет, что вы там такого понаписали и почему не работает.[smile]
|
|
Спасибо:
|
|
|
|
|
Евгений
|
Дата: 18.05.2011
Mikhail Sukhov Евгений Еще не отловил такой ситуации, чтобы отработали защитные стратегии - пробую. А подписка на событие QuotesChanged может изменить ситуацию? Она не меняет ничего. Просто она мне покажет, что вы там такого понаписали и почему не работает.[smile] И не говорите, написал теперь вот покоя людям не даю [smile] Ну тогда получается, что ситуация останется той же... А сообщение я вывел так Код 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;
|
|
Спасибо:
|
|
|
|