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


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


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

Переписываю роботов под новую логику стратегий. При котирование в
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())
{ IsParallel = false };

Спасибо:

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