← Back

Order.DerivedOrder = null для стоп заявки

Столкнулся со странной ситуацией, что после выполнения условия стоп лосса DerivedOrder = null. то есть он не видит порожденную заявку. с чем это может быть связано?

Comments (13)

Login or Create account, Log in or register to leave a comment

Mikhail Sukhov
Mikhail Sukhov

xaxa: Столкнулся со странной ситуацией, что после выполнения условия стоп лосса DerivedOrder = null. то есть он не видит порожденную заявку. с чем это может быть связано?

Таблица стоп заявок скорее всего неправильно оформлена. Verifier запускали?

xaxa
xaxa Author

Да, Verifier выдает, что никаких ошибок нет. Пробовал и под РТС(файл настроек ртс) и под ММВБ(файл настроек ммвб). Режим работы синхронный. (На демо-серверах Цериха***)

Mikhail Sukhov
Mikhail Sukhov

xaxa: Да, Verifier выдает, что никаких ошибок нет. Пробовал и под РТС(файл настроек ртс) и под ММВБ(файл настроек ммвб). Режим работы синхронный. (На демо-серверах Цериха***)

ProcessDataError что-нибудь выводит? Состояние стоп заявки в роботе изменяется?

xaxa
xaxa Author

После выполнения стоп-заявки ее состояние меняется на OrderStates.Done. ProcessDataError сейчас посмотрю...

xaxa
xaxa Author

ProcessDataError - ничего не выводит

Mikhail Sukhov
Mikhail Sukhov

xaxa: ProcessDataError - ничего не выводит

Можете привести параметры инициализации стоп заявки? В этими условиями Sample работает?

xaxa
xaxa Author

        ....

        stopLoss = CreateStopLimit(base.Security.ShrinkPrice(getCandleMiddle(secondCandle)), performReverseCount < reverseCount ? order.GetRealizedVolume() * 2 : order.GetRealizedVolume(), stopDirection);

        .....
        private Order CreateStopLimit(double stopPrice, int volume, OrderDirections direction)
        {
          double price = (direction == OrderDirections.Buy ? (stopPrice + podushka) : (stopPrice - podushka));

          Order stopLossOrder = base.CreateOrder(direction, stopPrice);
            stopLossOrder.Type = OrderTypes.Conditional;
            stopLossOrder.Volume = volume;
            stopLossOrder.StopCondition = new QuikStopCondition
            {
                Type = QuikStopConditionTypes.StopLimit,
                StopPrice = stopPrice
            };
            return stopLossOrder;
        }

Mikhail Sukhov
Mikhail Sukhov

Sample c такими параметрами так же не работает?

xaxa
xaxa Author

Попробовал Sample там все ок. Удивительно то, что на некоторых кругах DerivedOrder = null а на некоторых кругах он ловит порожденную заявку(например когда я в дебаге медленно прохожу круг). Такое ощущение что происходит это дело в асинхронном режиме. Хотя в дебаггере смотрю свойство base.Trader.isAsyncMode -оно установлено в false. Возможно ли такое в синхронном режиме что после проверки условия стоп лосса на OrderStates.Done DerivedOrder будет равен null?

Mikhail Sukhov
Mikhail Sukhov

xaxa: Попробовал Sample там все ок. Удивительно то, что на некоторых кругах DerivedOrder = null а на некоторых кругах он ловит порожденную заявку(например когда я в дебаге медленно прохожу круг). Такое ощущение что происходит это дело в асинхронном режиме. Хотя в дебаггере смотрю свойство base.Trader.isAsyncMode -оно установлено в false. Возможно ли такое в синхронном режиме что после проверки условия стоп лосса на OrderStates.Done DerivedOrder будет равен null?

IsAsyncMode - это в каком режиме будет использоваться Trans2Quik.dll. Эта DLL не предоставляет возможность получать данные. Поэтому данные получаются через ДДЕ, которые работает асинхронно независимо от IsAsyncMode.

xaxa
xaxa Author

Вообщем пришел к тому, что у меня работает DerivedOrder только на ММВБ. Как ни странно при запуске ФОРТСе DerivedOrder стабильно возвращает null. А есть такие у кого на ФОРТС все ок? Кстати а можно как то это обойти?

Mikhail Sukhov
Mikhail Sukhov

xaxa: Вообщем пришел к тому, что у меня работает DerivedOrder только на ММВБ. Как ни странно при запуске ФОРТСе DerivedOrder стабильно возвращает null. А есть такие у кого на ФОРТС все ок? Кстати а можно как то это обойти?

Если попробовать Sample на FORTS такая же проблема?

xaxa
xaxa Author

Проблема оказалась в том, что на таблице заявок был фильтр только на акции