Проблемы с квиком, не вызываются события


Проблемы с квиком, не вызываются события
Atom
22.05.2013


Возникла необходимость перевести робота с Плазы на Квик, оказалось, что это совсем не просто. Отлично работающий на плазе робот, плохо работал на квике.
Сначала использовал версию 4.1.8, обнаружил, что событие стратегии OrderChanged вызывается очень странно и нестабильно.
Практически всегда срабатывает после отмены заявки, в половине случаев после исполнения заявки, и очень редко после постановки заявки.
Пробовал вместо простого подписывания использовать аналогичное правило стратегии, не помогло.

Попробовал перейти на 4.1.13. Кроме проблем с референсами обнаружил еще ошибку из-за переименования класса фьючей @RTS -> @FORTS. Ошибка возникает при попытке поставить заявку. Причем в примере Quik/Sample просто не ставится заявка, без обьяснения причин. У меня же окно с ошибкой вылетает.

Verifier'ом пользоваться умею.
error.JPG 19 KB (283)

Теги:


Спасибо:


1 2 3  >
Mikhail Sukhov

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


FiNick Перейти

Попробовал перейти на 4.1.13. Кроме проблем с референсами обнаружил еще ошибку из-за переименования класса фьючей @RTS -> @FORTS. Ошибка возникает при попытке поставить заявку. Причем в примере Quik/Sample просто не ставится заявка, без обьяснения причин. У меня же окно с ошибкой вылетает.


Будет фикс в ближайшее время.
Спасибо:

FiNick

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


А что с неработающими событиями, эти проблемы возникали у кого-нибудь? они исправлялись в 4.1.13?
Спасибо:

Koal

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


Такая же проблема при отправке ордеров через квик по дде. Не всегда отрабатывает событие регистрации заявки. Заявка появляется в системе, но статус у нее Accepted и State = None. При попытке ее отменить выдается исключение - Заявка была ранее отправлена на отмену.
Переход на 4.1.13.1 не помог. Ошибка появляется стабильно.
Спасибо:

Mikhail Sukhov

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


Koal Перейти
Такая же проблема при отправке ордеров через квик по дде. Не всегда отрабатывает событие регистрации заявки. Заявка появляется в системе, но статус у нее Accepted и State = None. При попытке ее отменить выдается исключение - Заявка была ранее отправлена на отмену.
Переход на 4.1.13.1 не помог. Ошибка появляется стабильно.


Через Sample это можно воспроизвести?
Спасибо:

Koal

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


Михаил Сухов Перейти
Koal Перейти
Такая же проблема при отправке ордеров через квик по дде. Не всегда отрабатывает событие регистрации заявки. Заявка появляется в системе, но статус у нее Accepted и State = None. При попытке ее отменить выдается исключение - Заявка была ранее отправлена на отмену.
Переход на 4.1.13.1 не помог. Ошибка появляется стабильно.


Через Sample это можно воспроизвести?


На счет Sample не знаю. Приведу текст, как я подписываюсь на сообщения ордера, может в этом какая-то проблема.

StockSharp.BusinessEntities.Order ssOrd = new StockSharp.BusinessEntities.Order()
{
Trader = tr,
Portfolio = tConnection.Trade.Account.ssPortfolio,
Security = tConnection.Trade.Instrument.ssInstrument,
Comment = "",
Direction = _order.type.HasFlag(GISMO.Trade.Order.OrderType.Buy) ? StockSharp.BusinessEntities.OrderDirections.Buy : StockSharp.BusinessEntities.OrderDirections.Sell,
Price = (decimal)_order.price,
Type = StockSharp.BusinessEntities.OrderTypes.Limit,
Volume = _order.amount
};
var ruleRegFail = ssOrder.WhenRegisterFailed();
var ruleReg = ssOrder.WhenRegistered();
ruleReg.Do((StockSharp.BusinessEntities.Order _ssOrd) =>
{
//...
})
.Apply()
.Exclusive(ruleRegFail);

ruleRegFail.Do((StockSharp.BusinessEntities.OrderFail f) =>
{
//...
})
.Apply()
.Exclusive(ruleReg);

var ruleCancelled = ssOrder.WhenCanceled();
ruleCancelled.Do((StockSharp.BusinessEntities.Order _ssOrd) =>
{
//...
})
.Apply();

ssOrder.WhenCancelFailed().Do((StockSharp.BusinessEntities.OrderFail f) =>
{
//...
})
.Apply();

var ruleMatched = ssOrder.WhenMatched();
ruleMatched.Do(() =>
{
StockSharp.Algo.MarketRuleHelper.DefaultRuleContainer.Rules.RemoveRulesByToken(ruleMatched.Token, ruleMatched);
//...
})
.Apply();

ssOrder.WhenPartiallyMatched().Do(() =>
{
//...
}).Apply();

ssOrder.WhenNewTrades().Do((IEnumerable<MyTrade> trades) =>
{
//...
})
.Apply();
Trader.RegisterOrder(ssOrd);
Спасибо:

esper

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


Koal Перейти
На счет Sample не знаю. Приведу текст, как я подписываюсь на сообщения ордера, может в этом какая-то проблема.


Проверил ваш код у себя на 4.1.13.1 и квике 6.5.2.11, заявки приходят, правила срабатывают. В момент когда у вас не приходят заявки экспорт таблицы заявок по ДДЕ работает нормально?
Спасибо:

Koal

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


esper Перейти
Koal Перейти
На счет Sample не знаю. Приведу текст, как я подписываюсь на сообщения ордера, может в этом какая-то проблема.


Проверил ваш код у себя на 4.1.13.1 и квике 6.5.2.11, заявки приходят, правила срабатывают. В момент когда у вас не приходят заявки экспорт таблицы заявок по ДДЕ работает нормально?


События приходят по заявкам несколько десятков раз а потом однажды обязательно по одной или нескольким не приходит, как правило сбой происходит при более активном темпе отмены и выставлении заявок. Как проверить работу ДДЕ? в процессДата ошибок не прилетает

Странный еще такой момент, что те заявки на которые приходит WhenRegister у них State = Active, у ордеров на которые не приходит - State = None, но Status в любом случае Accepted

Мне важно отслеживать изменения статусов заявок в системе, если я пользуюсь для этого не теми средствами подскажите пожайлуйста какой способ лучше?
4.1.13.1, квик 6.5.2.11
Спасибо:

Mikhail Sukhov

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


У вас случайно фильтра на таблицу Заявки в Квике не стоит? Проверьте через Sample.
Спасибо:

Koal

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


Михаил Сухов Перейти
У вас случайно фильтра на таблицу Заявки в Квике не стоит? Проверьте через Sample.


не стоит, конечно. Иначе мне бы никакие заявки не приходили.
Единственно на что могу подумать, возможно ли, что между двумя вызовами Trader.RegisterOrder(ssOrd) проходит слишком мало времени и при этом происходит какой то сбой, но при этом все RegisterOrder выполняются из одного потока?
Кстати, а возможно ли как то "красивым" способом дождать результата отправки заявки прежде чем слать следующую?
Спасибо:

esper

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


Koal Перейти
События приходят по заявкам несколько десятков раз а потом однажды обязательно по одной или нескольким не приходит, как правило сбой происходит при более активном темпе отмены и выставлении заявок. Как проверить работу ДДЕ? в процессДата ошибок не прилетает

Можно открыть окно настроек ДДЕ экспорта в квике и посмотреть его состояние. Если у вас это стабильно воспроизводится, то попробуйте сделать минимальное приложение в котором это так же будет и выложите его здесь.
Спасибо:
1 2 3  >

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

loading
clippy