MarketQuotingStrategy не передает управление?
Atom Ответить
15.07.2010


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

Теги:


Спасибо:




8 Ответов
Garry

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


Забыл Асинхронный режим, S# 2.1
Автор топика
Спасибо:

Garry

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


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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 19.07.2010
Ответить


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

Спасибо:

Garry

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


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? Режим сменил на
синхронный.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 20.07.2010
Ответить


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

Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 21.07.2010
Ответить


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

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

Спасибо:

Garry

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


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

Автор топика
Спасибо:

artemox

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


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

Спасибо:


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

loading
clippy