Ошибка при перерегистрации ордера - ReRegisterOrder ошибка


Ошибка при перерегистрации ордера - ReRegisterOrder ошибка
Atom
2/18/2014


Подскажите кто сталкивался, выполняю перерегистрацию ордеров по нужным мне ценам с помощью ReRegisterOrder.
Какое то время все хорошо, потом в статусе текущей заявки появляется статус None, в терминале остается активная заявка, а в мониторе следующее:

FS_SRH4@FORTS_SPBFUT00b19 14.02.2014 20:28:39 Info Перерегистрация заявки 71328746 с ценой 9645 на цену 9646.
FS_SRH4@FORTS_SPBFUT00b19 14.02.2014 20:28:39 Info Перерегистрация проскальзывания заявки 71328746 (0x179D47C) на заявку (0x629157).
FS_SRH4@FORTS_SPBFUT00b19 14.02.2014 20:28:40 Info Заявка 71328746 больше не активна.
FS_SRH4@FORTS_SPBFUT00b19 14.02.2014 20:28:40 Info Перерегистрация заявки 71328747 с ценой 9646 на цену 9645.
FS_SRH4@FORTS_SPBFUT00b19 14.02.2014 20:28:40 Info Перерегистрация проскальзывания заявки 71328747 (0x629157) на заявку (0x2FF6AFB).
FS_SRH4@FORTS_SPBFUT00b19 14.02.2014 20:28:40 Info Заявка 71328747 больше не активна.
FS_SRH4@FORTS_SPBFUT00b19 14.02.2014 20:28:40 Info Новая позиция: SPBFUT00b19-SRH4@FORTS=28.

None статус у следующего ордера №71328748, в монитор он не попадает вообще.

Откуда берется новая позиция, не понимаю, как полечить посоветуйте.
Пока на квик джуниор гонял стратегию, может быть джуниор глючит, на реале может не будет такой ошибки, сложно проверить из за ограничения на кол-во транзакций.

версия библиотеки 4.2.2.6 ошибка в том, что не приходит ответ от терминала, что ордер выставлен и активен, если этот ордер снять вручную, то приходит статус Done, если ордер начинает исполнятся, то так же приходят нужные статусы, но до исполнения робот не видит ордер.



Thanks:


< 1 2 3 4  > >>
Bond

Avatar
Date: 2/18/2014
Reply


vsnoopy83 Go to
Ну я так понял от разработчиков ждать пояснений бесполезно, придется видимо что то придумывать, не понимаю чего, но потратить столько времени на изучение сток шарпа и в итоге понять, что он работает не стабильно, печально. Самое противное, что я бы уже на реале запустил давно.


Ну, может все не так плохо) Нужно просто разобраться как свериться с таблицей Квика. В трейдинге все глючит - компы, инет, роботы, терминалы, биржа. Без этого никак.
Thanks:

vsnoopy83

Avatar
Date: 2/18/2014
Reply


Да, но не когда это просто техническая связка, у меня работает рукописный робот уже несколько месяцев, ни одной ошибки, человек хрен знает когда писал, без всяких сток шарпов, а я не могу функционал повторить элементарный, как то это не правильно. к сток шарпу идешь за скоростью, а она глючить начинает. Причем у людей на форуме были такие проблемы еще в 12 году, так никто и не помог тогда)
Thanks:

Mikhail Sukhov

Avatar
Date: 2/18/2014
Reply


vsnoopy83 Go to
Да, но не когда это просто техническая связка, у меня работает рукописный робот уже несколько месяцев, ни одной ошибки, человек хрен знает когда писал, без всяких сток шарпов, а я не могу функционал повторить элементарный, как то это не правильно. к сток шарпу идешь за скоростью, а она глючить начинает. Причем у людей на форуме были такие проблемы еще в 12 году, так никто и не помог тогда)


А о чем речь идет?
Thanks:

vsnoopy83

Avatar
Date: 2/18/2014
Reply


Михаил Сухов Go to
vsnoopy83 Go to
Да, но не когда это просто техническая связка, у меня работает рукописный робот уже несколько месяцев, ни одной ошибки, человек хрен знает когда писал, без всяких сток шарпов, а я не могу функционал повторить элементарный, как то это не правильно. к сток шарпу идешь за скоростью, а она глючить начинает. Причем у людей на форуме были такие проблемы еще в 12 году, так никто и не помог тогда)


А о чем речь идет?


Речь о технической проблеме, описанной в первом сообщении, при перерегистрации ордеров время от времени не приходит статус заявки, хотя она выставлена в терминал и активна. В библиотеке статус None
Thanks:

Mikhail Sukhov

Avatar
Date: 2/18/2014
Reply


vsnoopy83 Go to

Речь о технической проблеме, описанной в первом сообщении, при перерегистрации ордеров время от времени не приходит статус заявки, хотя она выставлена в терминал и активна. В библиотеке статус None


Не нашел в сообщении упоминания, как воспроизвести проблему?
Thanks:

Bond

Avatar
Date: 2/18/2014
Reply


vsnoopy83 Go to
Bond Go to
Любят они и тики отключать и сделки. Типа нам это не нужно)
Вам нужно отлавливать момент, когда происходит изменение.
В дополнение поставьте таймер. Если в течении минуты статус не изменился снимайти заявку и выставляйте по-новому. Лучше перестраховаться. Биржа тоже порой косячит не по-детски.


Так хорошо, но как её снять то))) если S# её не видит)) а по факту в терминале она стоит уже давно)


Слушай, да тут делов на две строчки в коде [biggrin]

Если заявка долго не переходит в состояние Активная, делай вот такую штуку:
Code

foreach (var order in Trader.Orders)
            {
                if (order.State == OrderStates.Active) Trader.CancelOrder(order);
            }


И торгуй себе дальше)
Thanks:

vsnoopy83

Avatar
Date: 2/18/2014
Reply


Bond Go to
vsnoopy83 Go to
Bond Go to
Любят они и тики отключать и сделки. Типа нам это не нужно)
Вам нужно отлавливать момент, когда происходит изменение.
В дополнение поставьте таймер. Если в течении минуты статус не изменился снимайти заявку и выставляйте по-новому. Лучше перестраховаться. Биржа тоже порой косячит не по-детски.


Так хорошо, но как её снять то))) если S# её не видит)) а по факту в терминале она стоит уже давно)


Слушай, да тут делов на две строчки в коде [biggrin]

Если заявка долго не переходит в состояние Активная, делай вот такую штуку:
Code

foreach (var order in Trader.Orders)
            {
                if (order.State == OrderStates.Active) Trader.CancelOrder(order);
            }


И торгуй себе дальше)


я же говорю, CancelOrder не пройдет, нельзя снять ордер, если система считает, что его нет.
Thanks:

vsnoopy83

Avatar
Date: 2/18/2014
Reply


Михаил Сухов Go to
vsnoopy83 Go to

Речь о технической проблеме, описанной в первом сообщении, при перерегистрации ордеров время от времени не приходит статус заявки, хотя она выставлена в терминал и активна. В библиотеке статус None


Не нашел в сообщении упоминания, как воспроизвести проблему?


Воспроизвести можно следующим образом:

на обновление стакана вешаем функцию:
private Order _LimitOrderLong;

private void Algoritm()
{
lock (_locker)
{
//выставляем заявки
if (_LimitOrderLong == null && PriceInWS >= _WorkSecurity.MinPrice && PriceInWS <= _WorkSecurity.MaxPrice)//если нет ордера выставляем
{
var NewLimitOrderLong = new Order()
{
Direction = OrderDirections.Buy,
Price = PriceInWS,
Volume = DeltaWS,
Security = _WorkSecurity,
};
_LimitOrderLong = NewLimitOrderLong;
_Strategy.RegisterOrder(NewLimitOrderLong);
}
else if (_LimitOrderLong != null && PriceInWS >= _WorkSecurity.MinPrice && PriceInWS <= _WorkSecurity.MaxPrice)// двигаем ордер
if ((_LimitOrderLong.State == StockSharp.Messages.OrderStates.Active) && _LimitOrderLong.Price != PriceInWS) // заменяем ордер
{
//Заменяем ордер
var NewReRegOrder = _LimitOrderLong.Clone();
NewReRegOrder.Price = PriceInWS;
NewReRegOrder.Volume = 0;//_LimitOrderLong.Balance > DeltaWS ? DeltaWS : _LimitOrderLong.Balance;
_Strategy.ReRegisterOrder(_LimitOrderLong, NewReRegOrder);
_LimitOrderLong = NewReRegOrder;
};
}
}

PriceInWS берется небольшое отклонение от текущих цен, смысл в том, чтобы заставить часто перевыставлять ордера с изменением цен, у меня на 100 - 400 перевыставлений по некоторым ордерам не приходит статус active, но в квике ордера активны. Для моей стратегии это очень важно, прошу помочь в решении, на форуме видел старые сообщения про такую же проблему, решения там не было.

вот тема http://stocksharp.com/fo...-vyzyvaiutsia-sobytiia/ 4 сообщение о том же.

Михаил, можно ли с Вами как то связаться помимо форума?
Thanks:

Mikhail Sukhov

Avatar
Date: 2/19/2014
Reply


vsnoopy83 Go to


Навскидку косяк - перерегистрация может случится в момент, когда предыдущая еще не зарегистрирована биржей.
Thanks:

Bond

Avatar
Date: 2/19/2014
Reply


vsnoopy83 Go to
Bond Go to
vsnoopy83 Go to
Bond Go to
Любят они и тики отключать и сделки. Типа нам это не нужно)
Вам нужно отлавливать момент, когда происходит изменение.
В дополнение поставьте таймер. Если в течении минуты статус не изменился снимайти заявку и выставляйте по-новому. Лучше перестраховаться. Биржа тоже порой косячит не по-детски.


Так хорошо, но как её снять то))) если S# её не видит)) а по факту в терминале она стоит уже давно)


Слушай, да тут делов на две строчки в коде [biggrin]

Если заявка долго не переходит в состояние Активная, делай вот такую штуку:
Code

foreach (var order in Trader.Orders)
            {
                if (order.State == OrderStates.Active) Trader.CancelOrder(order);
            }


И торгуй себе дальше)


я же говорю, CancelOrder не пройдет, нельзя снять ордер, если система считает, что его нет.


Trader.Orders - это массив сделок из Квика, а не СтокШарпа. Проверял, все там четко работает.
Специально для тебя потратил время. Но, я думаю, ты сам в следующий раз разберешься.
Thanks:
< 1 2 3 4  > >>

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

loading
clippy