Ошибка при перерегистрации ордера - ReRegisterOrder ошибка
Atom Ответить
18.02.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, если ордер начинает исполнятся, то так же приходят нужные статусы, но до исполнения робот не видит ордер.

Теги:


Спасибо:




53 Ответов
1 2 3  >
Bond

Фотография
Курсы
Дата: 18.02.2014
Ответить


Добрый день!
Попробуйте не перерегистрировать заявки, а удалять их и выставлять по-новому. Перерегистрация - как правило это оболочка над этими методами.
Спасибо:

vsnoopy83

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


у меня планируется много таких операций, чтобы не попадать на штрафы мне нужна одна транзакция вместо 2х, кроме того как она может быть оболочкой над методами, если реально уходит одна транзакция, она поддерживается ртс. Оболочкой она видимо становится на акциях. Я уже все попробовал, но не приходит в некоторых случаях отклик из квика и все тут, а о какой стабильности работы можно тогда говорить. Причем ошибок нет никаких, просто не приходит отклик.
Автор топика
Спасибо:

Bond

Фотография
Курсы
Дата: 18.02.2014
Ответить


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

Скажите, пожалуйста, у вас со срочного рынка приходит событие изменение цены последней сделки в демо версии Квика?
У меня почему-то приходять только с фондового, а в таблице всез сделок, сделки по фьючерсам вообще не приходят.
Вообще демо версия стабильно глючит временами.
Спасибо:

vsnoopy83

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


Bond Перейти
vsnoopy83 Перейти
у меня планируется много таких операций, чтобы не попадать на штрафы мне нужна одна транзакция вместо 2х, кроме того как она может быть оболочкой над методами, если реально уходит одна транзакция, она поддерживается ртс. Оболочкой она видимо становится на акциях. Я уже все попробовал, но не приходит в некоторых случаях отклик из квика и все тут, а о какой стабильности работы можно тогда говорить. Причем ошибок нет никаких, просто не приходит отклик.

Скажите, пожалуйста, у вас со срочного рынка приходит событие изменение цены последней сделки в демо версии Квика?
У меня почему-то приходять только с фондового, а в таблице всез сделок, сделки по фьючерсам вообще не приходят.
Вообще демо версия стабильно глючит временами.


Не интересовался этим, могу сейчас оперативно проверить, это что за событие? У меня проходит 200- 400 перерегистраций нормально, потом вдруг не меняется статус, странно это, не грешу на демо квик, просто в реале столько не будет операций, но я должен быть уверен, что как то вдруг у меня не появится проблема, по этому прогоняю сотнями раз на джуниоре. Думал, что может быть из за частоты операций, но такая ситуация появляется и на разовых операциях, когда один ордер за секунду был выствлен.
Автор топика
Спасибо:

Bond

Фотография
Курсы
Дата: 18.02.2014
Ответить


Вы с какой частотой выставляете заявки? Может экспорт не успевает все это обрабатывать.
Кстати, у вас в таблице всех сделок вообще появляются сделки по фьючерсам?
Спасибо:

vsnoopy83

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


Bond Перейти
Вы с какой частотой выставляете заявки? Может экспорт не успевает все это обрабатывать.
Кстати, у вас в таблице всех сделок вообще появляются сделки по фьючерсам?


Появляются, если у Вас нет сделок по фучам в таблице надо позвонить в тех поддержку квика, сказать им UID, сказать им что они не хорошие люди и чтобы включили сделки по фучам)) сделки я делаю не чаще чем после прихода статуса ордера Active. Т.е. я выставляю ордер, после того как вижу статус Active смотрю условия и если они выполняются меняю ордер, потом опять жду нового статуса. Так что думаю дело не в экспорте. И странно, 400 раз успевает обработать, а на 401 не успевает, ошибка была бы раньше.
Автор топика
Спасибо:

Bond

Фотография
Курсы
Дата: 18.02.2014
Ответить


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

vsnoopy83

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


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


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

Bond

Фотография
Курсы
Дата: 18.02.2014
Ответить


Вот мне тоже пока не совсем ясно как Стокшарп сверяет свои сделки и заявки с Квиковскими. Свои он накапливает, нумерует. Вот как бы обратиться и получить из Квика всю табоицу сделок целиком и свериться с ней?
Нужно апи поковырять..
Спасибо:

vsnoopy83

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


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

Bond

Фотография
Курсы
Дата: 18.02.2014
Ответить


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


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

vsnoopy83

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


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

Mikhail Sukhov

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


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


А о чем речь идет?
Спасибо:

vsnoopy83

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


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


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


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

Mikhail Sukhov

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


vsnoopy83 Перейти

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


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

Bond

Фотография
Курсы
Дата: 18.02.2014
Ответить


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


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


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

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

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


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

vsnoopy83

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


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


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


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

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

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


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


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

vsnoopy83

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


Михаил Сухов Перейти
vsnoopy83 Перейти

Речь о технической проблеме, описанной в первом сообщении, при перерегистрации ордеров время от времени не приходит статус заявки, хотя она выставлена в терминал и активна. В библиотеке статус 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, но в квике ордера активны. Для моей стратегии это очень важно, прошу помочь в решении, на форуме видел старые сообщения про такую же проблему, решения там не было.

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

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

Mikhail Sukhov

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


vsnoopy83 Перейти


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

Bond

Фотография
Курсы
Дата: 18.02.2014
Ответить


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


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


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

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

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


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


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


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

vsnoopy83

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


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


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


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

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

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


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


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


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



Я смотрел Trader.Orders там те же статусы- None. Спасибо за потраченное время.
Автор топика
Спасибо:

vsnoopy83

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


Михаил Сухов Перейти
vsnoopy83 Перейти


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


Но мы ведь проверяем статус при перерегистрации и не начинаем её пока не получим Active. И опять же странно, что в некоторых случаях и по нескольку раз в секунду все нормально срабатывает, а в некоторых случаях на редких операциях не приходит статус.
Автор топика
Спасибо:

casper-ss

Фотография
Благотворитель
Дата: 19.02.2014
Ответить


Я как понял если чел парится по транзакциям значит планирует торговать на скоростях...и наверное в будущем не через квик...дык вопрос, зачем обкатываться и парится на джуниоре, когда можно сразу на тестовой плазе например...лично по себе скажу, джуниор - это полный геморрой, очень проблематично там что то нормально обкатать, не говоря уже, что от боевой версии он сейчас достаточно сильно отличается...:)
Спасибо:

vsnoopy83

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


casper-ss Перейти
Я как понял если чел парится по транзакциям значит планирует торговать на скоростях...и наверное в будущем не через квик...дык вопрос, зачем обкатываться и парится на джуниоре, когда можно сразу на тестовой плазе например...лично по себе скажу, джуниор - это полный геморрой, очень проблематично там что то нормально обкатать, не говоря уже, что от боевой версии он сейчас достаточно сильно отличается...:)


Есть ошибка, есть 2 пути, решить проблему в корне, или сделать вид, что её не существует, эта ошибка может возникнуть и на небольших скоростях, на 1 ордере в день. Кроме того у меня уже торгуется робот рукописный уже длительное время, я хочу перенести его функциона на сток шарп под квик, чтобы добавить свои фишки и прочее.
Автор топика
Спасибо:

Bond

Фотография
Курсы
Дата: 19.02.2014
Ответить


Вообще все это очень странно.
Конечно, всегда нужно ожидать, что что-нибудь начнет глючить.
Я запускаю робота. Не совершаю ни одной сделки, не отправляю ни одной заявки Запрашиваю Trader.orders и он мне ее выводит как она есть. Роботу, в принципе, больше не откуда получать данные как из таблицы.
И почему они у вас могут отличаться совершенно непонятно.
Спасибо:
1 2 3  >

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

loading
clippy