стал вдруг получать ошибку в дочерней стратегии при переходе на 2.2

стал вдруг получать ошибку в дочерней стратегии при переходе на 2.2
Atom
27.07.2010
ustas


Приветствую, Михаила и коллег!

Переписываю роботов под новую логику стратегий. При котирование в OnProcess стал получать NullReferenceException

Вот кусок кода

public class MyStrategy : ActionStrategy { public MarketQuotingStrategy strategy;

......................skipped

  protected override bool OnProcess()

.......skipped // создаем заявку var order = base.CreateOrder(Direct, IsMarket ? base.Security.GetMarketPrice(Direct, MarketPriceTypes.Opposite):base.Security.GetMarketPrice(Direct, MarketPriceTypes.Following), base.Volume); // регистрируем заявку (обычным способом - лимитированной заявкой)

           if (IsMarket){base.RegisterOrder(order);}
            else
            {

               // регистрируем заявку (через котирование)
                strategy = new MarketQuotingStrategy(order, new

Unit().Value = PD); if (strategy != null) { strategy.Start(); //ТУТ ОШИБКА base.ChildStrategies.Add(strategy); }

           }

NullReferenceException В экземпляре объекта не задана ссылка на объект. в строке strategy.Start();

в 2.1 всё работало. Что я не учёл?

Спасибо и с уважением!


Теги:


Спасибо:


< 1 2 
Garry

Фотография
Дата: 29.07.2010
Ответить


Дебаргер запустил, в 2.1 то работало как, пока MarketQuotingStrategy не отработает, родительский OnProcess не вызывается, а тут вызывается. Сигналы никуда не деваются, поэтому создается новый MarketQuotingStrategy из родительской стратегии из того же места что и первый, и так далее пока сигнал не пропадет. Родительская стратегия и MarketQuotingStrategy работают в параллели, хотя принудительно установил strategy = new myMarketQuotingStrategy(order, new Unit()) ;

Спасибо:

Mikhail Sukhov

Фотография
Дата: 29.07.2010
Ответить


Ок, можете проверить следущее. В OnProcess свой стратегии вставить вывод кол-ва дочерних:

AddLog(base.ChildStrategies.Count);

Спасибо:

Garry

Фотография
Дата: 29.07.2010
Ответить


5 Котирование заканчивается на заявке 53970735. Stopping 5 Котирование отменяет активную заявку 53970735. Stopping 5 MQS остановлена. Stopped 5 MQS останавливается. Stopping 5 Котирование заканчивается на заявке 53970736. Stopping 5 Котирование отменяет активную заявку 53970736. Stopping 5 MQS остановлена. Stopped 5 MQS останавливается. Stopping 5 Котирование заканчивается на заявке 53970737. Stopping 5 Котирование отменяет активную заявку 53970737. Stopping 5 MQS остановлена. Stopped 5 MQS останавливается. Stopping 5 Котирование закончилось. Stopping 5 MQS остановлена. Stopped 5

Спасибо:

Garry

Фотография
Дата: 29.07.2010
Ответить


Извиняюсь не весь лог скопировал

MQS запущена. Runned 1 Регистрация новой заявки на Buy с ценой 85,27 и объемом 1. Runned 1 Заявка 53970734 на Buy отправлена с ценой 85,27 объемом 1. Runned 1 MQS запущена. Runned 2 Цена текущей 85,27 и лучшей 85,27. Runned 2 Регистрация новой заявки на Buy с ценой 85,27 и объемом 1. Runned 2 Заявка 53970735 на Buy отправлена с ценой 85,27 объемом 1. Runned 2 MQS запущена. Runned 3 Цена текущей 85,27 и лучшей 85,27. Runned 3 Регистрация новой заявки на Buy с ценой 85,27 и объемом 1. Runned 3 Заявка 53970736 на Buy отправлена с ценой 85,27 объемом 1. Runned 3 MQS запущена. Runned 4 Цена текущей 85,27 и лучшей 85,27. Runned 4 Регистрация новой заявки на Buy с ценой 85,27 и объемом 1. Runned 4 Заявка 53970737 на Buy отправлена с ценой 85,27 объемом 1. Runned 4 MQS запущена. Runned 5 MQS останавливается. Stopping 5 Котирование заканчивается на заявке 53970734. Stopping 5 Котирование отменяет активную заявку 53970734. Stopping 5 MQS остановлена. Stopped 5 MQS останавливается. Stopping 5 Котирование заканчивается на заявке 53970735. Stopping 5 Котирование отменяет активную заявку 53970735. Stopping 5 MQS остановлена. Stopped 5 MQS останавливается. Stopping 5 Котирование заканчивается на заявке 53970736. Stopping 5 Котирование отменяет активную заявку 53970736. Stopping 5 MQS остановлена. Stopped 5 MQS останавливается. Stopping 5 Котирование заканчивается на заявке 53970737. Stopping 5 Котирование отменяет активную заявку 53970737. Stopping 5 MQS остановлена. Stopped 5 MQS останавливается. Stopping 5 Котирование закончилось. Stopping 5 MQS остановлена. Stopped 5

Спасибо:

ustas

Фотография
Дата: 30.07.2010
Ответить


Приветствую, Михаила и коллег!

Михаил, огромное Вам спасибо за Вашу работу!

Да, в 2.2.1 всё исправилось.

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

вот что в логе (Самое первое котирование )

11:44:26.2203796 MQS MQS запущена. 11:44:26.2483796 MQS Регистрация новой заявки на Sell с ценой 8566 и объемом 2. 11:44:26.2503796 MQS Заявка 42202419 на Sell отправлена с ценой 8566 объемом 2. 11:44:26.4533796 MQS Заявка 42202419 не имеет состояния. 11:44:29.4003796 MQS Цена текущей 8566 и лучшей 8566. 11:44:29.5033796 MQS Цена текущей 8566 и лучшей 8567. 11:44:29.5073796 MQS Котирование заявки 42202419 на Sell с ценой 8566 объемом 2. 11:44:30.0123796 MQS Перекотирование зарегистрировано для заявки 42202425 на Sell с ценой 8567 объемом 2. 11:44:30.7183796 MQS Цена текущей 8567 и лучшей 8565. 11:44:30.7193796 MQS Котирование заявки 42202425 на Sell с ценой 8567 объемом 2. 11:44:31.2213796 MQS Перекотирование зарегистрировано для заявки 42202427 на Sell с ценой 8565 объемом 2. 11:44:31.2243796 MQS Заявка 42202427 не имеет состояния. 11:44:33.1323796 MQS Котируемая заявка 42202427 исполнилась. 11:44:33.1343796 MQS MQS останавливается. 11:44:33.1373796 MQS Котирование заканчивается на заявке 42202427. 11:44:33.1383796 MQS MQS остановлена.

Вот этто лог что выше для меня видится идеальным котированием

Следующее (второе котирование)

11:44:33.4433796 MQS MQS запущена. 11:44:33.4463796 MQS Регистрация новой заявки на Buy с ценой 8563 и объемом 2. 11:44:33.4473796 MQS Заявка 42202430 на Buy отправлена с ценой 8563 объемом 2. 11:46:20.9683796 MQS Заканчиваем котирование с неисполненным объемом равный 0 контрактов. 11:46:20.9693796 MQS MQS останавливается. 11:46:20.9723796 MQS Котирование заканчивается на заявке 42202430. 11:46:20.9733796 MQS MQS остановлена.

дальше третье котирование

11:46:44.7073796 MQS MQS запущена. 11:46:46.7263796 MQS Регистрация новой заявки на Buy с ценой 8562 и объемом 4. 11:46:46.7283796 MQS Заявка 42202444 на Buy отправлена с ценой 8562 объемом 4. 11:46:47.2363796 MQS Цена текущей 8562 и лучшей 8562. 11:46:48.8463796 MQS Цена текущей 8562 и лучшей 8563. 11:46:48.8483796 MQS Котирование заявки 42202444 на Buy с ценой 8562 объемом 4. 11:46:49.3493796 MQS Перекотирование зарегистрировано для заявки 42202446 на Buy с ценой 8563 объемом 4. 11:48:39.5053796 MQS Заканчиваем котирование с неисполненным объемом равный 0 контрактов. 11:48:39.5083796 MQS MQS останавливается. 11:48:39.5133796 MQS Котирование заканчивается на заявке 42202446. 11:48:39.5163796 MQS MQS остановлена.

Как видно со второго и последующего котирования нет сообщенрия об исполненной заявке и добавляется странная запись

11:48:39.5053796 MQS Заканчиваем котирование с неисполненным объемом равный 0 контрактов.

которо

Спасибо:

ustas

Фотография
Дата: 30.07.2010
Ответить


(...продолжу, извините, сорвалось...)

Как видно со второго и во всех последующих котированиях нет сообщения об исполненной заявке и добавляется вот эта странная запись:

11:48:39.5053796 MQS Заканчиваем котирование с неисполненным объемом равный 0 контрактов.

которой, например, не было в самом первом котировании ( и не было в 2.1 при полном исполнении заявки ) и нет сообщений о текущей и лучших ценах как, например, в певрой стратегии. Мне кажется что есть какой то сбой при остановке стратегии.

Спасибо и с уважением!

Спасибо:

Mikhail Sukhov

Фотография
Дата: 30.07.2010
Ответить


"Заканчиваем котирование с неисполненным объемом равный 0 контрактов." это новая фраза, появившаяся из-за

http://stocksharp.com/doc/help/html/P_Ecng_Trading_Algo_QuotingStrate...

Вопрос. Заявки то котируются или нет во втором и в третьем случаях?

Спасибо:

ustas

Фотография
Дата: 30.07.2010
Ответить


Всё равно непонятно. Разве стратегия закончилась из за первышения MaxReRegisterCount ? Это невероятно, учитывая что по умолчанию MaxReRegisterCount огромен.(2**32?) Да и видно, что заявка то исполнилась, так как LeftPositions==0. А сообщения об исполнении заявки, как в первом случае - нет.

А вот на этот простой вопрос мне трудно ответить : )

Кажется что да. А иногда кажется что нет. Дело в том что я ставлю интервал для дочерней стратегии котирования очень большим. И сам из событий стакана вызываю OnProcess дочерней стратегии. Т.е. стратегия работает не по интервалу, а по событию. Чаще всего всё в порядке. Но иногда наблюдаю картину - стакан сильно меняется, при этом с маленькой PriceDelta заявка уходит далеко от лучшей заявки, гораздо дальше чем PriceDelta. Т.е. дочерняя стратегия как бы замирает. Хотя я её точно вызываю.

Еще повторю вопрос в догонку. Отфильтровывает ли MQS из стакана собственные заявки?

Спасибо и с уважением!

Спасибо:

Mikhail Sukhov

Фотография
Дата: 30.07.2010
Ответить


Это сообщение пишется всегда, при превышении или нет. Просто как индикатор, сколько осталось. 0 - это хорошо. Больше 0 - это плохо.

Спасибо:

Garry

Фотография
Дата: 30.07.2010
Ответить


Спасибо огромное, у меня все зарвботало!

Спасибо:
< 1 2 

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

loading
clippy