MarketQuotingStrategy не передает управление?


MarketQuotingStrategy не передает управление?
Atom
7/16/2010


Пытаюсь выставлять заявки через котирование. Создаю заявку, передаю ее
на котирование. Все отлично работает, если заявка успешно
регистрируется, если же при регистрации возникли ошибки, например
попробовал продать в шорт на тестовом квике, то возникают проблеммы.
Все как положено вызывается событие Trader.OrdersFailed,
обрабатывается, после этого MarketQuotingStrategy как бы стопорится,
не завершает свою работу, метод onProcess родительской стратегии
больше не вызывается, и MarketQuotingStrategy тоже ничего не делает.
Т.е. алгоритм подвисает, как можно принудительно завершить работу
MarketQuotingStrategy и передать управление родительской тратегии в
таких случаях? Попробовать делать это из события OrdersFailed?

Tags:


Thanks:


Garry

Avatar
Date: 7/16/2010
Reply


Забыл Асинхронный режим, S# 2.1
Thanks:

Garry

Avatar
Date: 7/16/2010
Reply


Попытался остановить котирование, в случае ошибки, из события
OrdersFailed, не останавливается, статус меняется на stopping, в итоге
управление родительской стратегии так и не передается!
Thanks:

Mikhail Sukhov

Avatar
Date: 7/19/2010
Reply


MarketQuotingStrategy что выводит в лог? какой статус у нее
ProcessState

Thanks:

Garry

Avatar
Date: 7/20/2010
Reply


MQS_SBER03 запущена.
Runned
Регистрация новой заявки на Sell с ценой 80,55 и объемом 1.
Runned
System.ArgumentException: Транзакции 'ACCOUNT=SPBFUT00491;
CLIENT_CODE=XXX; TYPE=L; TRANS_ID=60642140; CLASSCODE=QJSIM;
SECCODE=SBER03; ACTION=NEW_ORDER; OPERATION=S; QUANTITY=1;
PRICE=80,55; EXECUTION_CONDITION=PUT_IN_QUEUE;' не была
зарегистрирована. Причина 'Вам запрещена работа по данному торговому
счету'.
Имя параметра: transactionTxt
в . (String , OrderStatus& , UInt32& , Double& , String& )
в Ecng.Trading.Quik.QuikTrader. (Order , TransactionBuilder ,
Boolean , Boolean )
в Ecng.Trading.Quik.QuikTrader.RegisterOrder(Order order)
в Ecng.Trading.Algo.Strategy.RegisterOrder(Order order)
в Ecng.Trading.Algo.QuotingStrategy.OnProcess()
в Ecng.Trading.Algo.Strategy. ()
Runned
MQS_SBER03 останавливается.
Stopping
Котирование заканчивается на заявке 60642140.
Stopping
Заявка 60642140 не имеет состояния. Котирование продолжается.
Stopping
Котирование заканчивается на заявке 60642140.
Stopping
Заявка 60642140 не имеет состояния. Котирование продолжается.
Stopping
Котирование заканчивается на заявке 60642140.
Stopping
Заявка 60642140 не имеет состояния. Котирование продолжается.
Stopping
Котирование заканчивается на заявке 60642140.
Stopping
Заявка 60642140 не имеет состояния. Котирование продолжается.
Stopping
Котирование заканчивается на заявке 60642140.
Stopping

Это лог, и изменение статуса Как и говорил
MarketQuotingStrategy.Stop() не помогает из сбытия OrdersFailed.
Пмогает только удаление MarketQuotingStrategy из ChildStrategies
базовой стратегии, может как то можно правильно обработать эту
ситуацию из события Log MarketQuotingStrategy? Режим сменил на
синхронный.
Thanks:

Mikhail Sukhov

Avatar
Date: 7/20/2010
Reply


Ок, понял. Подтверждаю, бага. Буду думать как исправлять.

Thanks:

Mikhail Sukhov

Avatar
Date: 7/21/2010
Reply


Как обходной путь переодпределить OnProcess

protected override OnProcess()
{
if (base.ProcessState == Running)
return base.OnProcess();
else
{
if (order is failed)
return false;
else
return base.OnProcess();
}

Thanks:

Garry

Avatar
Date: 7/22/2010
Reply


Ок, спасибо, будем пробовать!

Thanks:

artemox

Avatar
Date: 7/23/2010
Reply


Переопределить надо MarketQuotingStrategy.OnProcess ?
Можно уточнить что значит "order is failed"? Failed не нашел ни в
состояниях ни в статусах.
Пора делать две версии либы бета и релиз:)

Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy