Подскажите кто сталкивался, выполняю перерегистрацию ордеров по нужным мне ценам с помощью 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, если ордер начинает исполнятся, то так же приходят нужные статусы, но до исполнения робот не видит ордер.
Comentários (53)
Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário
Добрый день! Попробуйте не перерегистрировать заявки, а удалять их и выставлять по-новому. Перерегистрация - как правило это оболочка над этими методами.
у меня планируется много таких операций, чтобы не попадать на штрафы мне нужна одна транзакция вместо 2х, кроме того как она может быть оболочкой над методами, если реально уходит одна транзакция, она поддерживается ртс. Оболочкой она видимо становится на акциях. Я уже все попробовал, но не приходит в некоторых случаях отклик из квика и все тут, а о какой стабильности работы можно тогда говорить. Причем ошибок нет никаких, просто не приходит отклик.
Не интересовался этим, могу сейчас оперативно проверить, это что за событие? У меня проходит 200- 400 перерегистраций нормально, потом вдруг не меняется статус, странно это, не грешу на демо квик, просто в реале столько не будет операций, но я должен быть уверен, что как то вдруг у меня не появится проблема, по этому прогоняю сотнями раз на джуниоре. Думал, что может быть из за частоты операций, но такая ситуация появляется и на разовых операциях, когда один ордер за секунду был выствлен.
Вы с какой частотой выставляете заявки? Может экспорт не успевает все это обрабатывать. Кстати, у вас в таблице всех сделок вообще появляются сделки по фьючерсам?
Появляются, если у Вас нет сделок по фучам в таблице надо позвонить в тех поддержку квика, сказать им UID, сказать им что они не хорошие люди и чтобы включили сделки по фучам)) сделки я делаю не чаще чем после прихода статуса ордера Active. Т.е. я выставляю ордер, после того как вижу статус Active смотрю условия и если они выполняются меняю ордер, потом опять жду нового статуса. Так что думаю дело не в экспорте. И странно, 400 раз успевает обработать, а на 401 не успевает, ошибка была бы раньше.
Любят они и тики отключать и сделки. Типа нам это не нужно) Вам нужно отлавливать момент, когда происходит изменение. В дополнение поставьте таймер. Если в течении минуты статус не изменился снимайти заявку и выставляйте по-новому. Лучше перестраховаться. Биржа тоже порой косячит не по-детски.
Так хорошо, но как её снять то))) если S# её не видит)) а по факту в терминале она стоит уже давно)
Слушай, да тут делов на две строчки в коде 😀
Если заявка долго не переходит в состояние Активная, делай вот такую штуку:
И торгуй себе дальше)
foreach (var order in Trader.Orders) { if (order.State == OrderStates.Active) Trader.CancelOrder(order); }
foreach (var order in Trader.Orders) { if (order.State == OrderStates.Active) Trader.CancelOrder(order); }
foreach (var order in Trader.Orders) { if (order.State == OrderStates.Active) Trader.CancelOrder(order); }
Вот мне тоже пока не совсем ясно как Стокшарп сверяет свои сделки и заявки с Квиковскими. Свои он накапливает, нумерует. Вот как бы обратиться и получить из Квика всю табоицу сделок целиком и свериться с ней? Нужно апи поковырять..
Ну я так понял от разработчиков ждать пояснений бесполезно, придется видимо что то придумывать, не понимаю чего, но потратить столько времени на изучение сток шарпа и в итоге понять, что он работает не стабильно, печально. Самое противное, что я бы уже на реале запустил давно.
Ну, может все не так плохо) Нужно просто разобраться как свериться с таблицей Квика. В трейдинге все глючит - компы, инет, роботы, терминалы, биржа. Без этого никак.
Да, но не когда это просто техническая связка, у меня работает рукописный робот уже несколько месяцев, ни одной ошибки, человек хрен знает когда писал, без всяких сток шарпов, а я не могу функционал повторить элементарный, как то это не правильно. к сток шарпу идешь за скоростью, а она глючить начинает. Причем у людей на форуме были такие проблемы еще в 12 году, так никто и не помог тогда)
А о чем речь идет?
Речь о технической проблеме, описанной в первом сообщении, при перерегистрации ордеров время от времени не приходит статус заявки, хотя она выставлена в терминал и активна. В библиотеке статус None
Не нашел в сообщении упоминания, как воспроизвести проблему?
Воспроизвести можно следующим образом:
на обновление стакана вешаем функцию: private Order _LimitOrderLong;
PriceInWS берется небольшое отклонение от текущих цен, смысл в том, чтобы заставить часто перевыставлять ордера с изменением цен, у меня на 100 - 400 перевыставлений по некоторым ордерам не приходит статус active, но в квике ордера активны. Для моей стратегии это очень важно, прошу помочь в решении, на форуме видел старые сообщения про такую же проблему, решения там не было.
вот тема http://stocksharp.com/forum/3714/Probliemy-s-kvikom--nie-vyzyvaiutsia-sobytiia/ 4 сообщение о том же.
Михаил, можно ли с Вами как то связаться помимо форума?
Навскидку косяк - перерегистрация может случится в момент, когда предыдущая еще не зарегистрирована биржей.
Но мы ведь проверяем статус при перерегистрации и не начинаем её пока не получим Active. И опять же странно, что в некоторых случаях и по нескольку раз в секунду все нормально срабатывает, а в некоторых случаях на редких операциях не приходит статус.
Это еще зависит от потоков... Вы можете прислать код с воспроизведением данной ошибки? Будет просто великолепно, если на стандартном примере Sample вы сделаете изменения и тем самым воспроизведете ошибку.
Да, думал о потоках, да, сделаю Sample надо немного времени.
Я как понял если чел парится по транзакциям значит планирует торговать на скоростях...и наверное в будущем не через квик...дык вопрос, зачем обкатываться и парится на джуниоре, когда можно сразу на тестовой плазе например...лично по себе скажу, джуниор - это полный геморрой, очень проблематично там что то нормально обкатать, не говоря уже, что от боевой версии он сейчас достаточно сильно отличается...:)
Есть ошибка, есть 2 пути, решить проблему в корне, или сделать вид, что её не существует, эта ошибка может возникнуть и на небольших скоростях, на 1 ордере в день. Кроме того у меня уже торгуется робот рукописный уже длительное время, я хочу перенести его функциона на сток шарп под квик, чтобы добавить свои фишки и прочее.
Вообще все это очень странно. Конечно, всегда нужно ожидать, что что-нибудь начнет глючить. Я запускаю робота. Не совершаю ни одной сделки, не отправляю ни одной заявки Запрашиваю Trader.orders и он мне ее выводит как она есть. Роботу, в принципе, больше не откуда получать данные как из таблицы. И почему они у вас могут отличаться совершенно непонятно.
Так проблема в этом и есть, что не доходит инфа из терминала в библиотеку.
Поставил фильтр на количество сделок, теперь их не так много, но ошибка стабильно появляется. Одна осталась надежда, что это глюк джуниора, попробую в ближ. время на реале, если там будет то же то беда.
Повторил ошибку на Sample. Как видно из скриншота заявка в терминале висит, а статуса в таблице ордеров нет!
А где код?
не залился сразу почему то, сейчас повторю
Михаил, спасайте, в чем косяк... Все это на квик джуниор на фучах, я брал GZH4 или SRH4.
А что пример должен показать? В окне Заявки будут заявки со статусом None?
циклически выставляются и снимаются заявки, на одной из следующих заявка в терминале появляется, а в таблице ордеров остается со статусом None, на скриншоте видно, я отметил. Причем если руками в квике заявку снять, то статус к ордеру в библиотеку приходит на Done.
Там не видно самого главное - номер транзакции в Квике у этой активной заявки.
да, в этом и проблема видимо. но робот на этом месте умрет сразу же.
Я не понял в чем проблема? Сделайте расширенный скрин, пожалуйста.
Проблема в том, что после отправки ордера в квик по Trader.ReRegisterOrder(OldOrder, NewReRegOrder); ордер выставляется в квике, сток шарп его не видит, ему не присваивается номер и статус None а должен быть Active. и это происходит не сразу, а спустя нескольких десятков нормальных перерегистраций.
На вашем скриншоте не показан номер транзакции. Пришлите скриншот, где виден номер транзакции в таблице Заявки
он не приходит, он не присваевается, в этом и есть проблема!!
Пришлите скриншот😂
я сойду с ума, скриншот чего прислать?) это все, больше ничего после этого уже не происходит, номер транзакции присвоится только если ордер сработает или если его отменить руками в терминале, до этого момента номер не присваивается и статус None.
Пришлите скришот таблицы в Квике. Таблица Заявки. Где видно для той заявки, что имеет статус None, ее биржевой номер, ее номер транзакции. Таблица Квика. Не таблица S#.
такой?
vsnoopy83, вы можете прислать скриншот, что показывает Trader.Orders после появления такой ошибки. В нем состояние None или как в таблице Квика Active? Если None, то каким-то образом не обрабатывается или не приходит из Квика событие регистрации заявки. И получается некорректная работа Trader.Orders.
А если вслед отправить еще одну заявку не дожидаясь изменения состояния? Заявка изменит свое состояние или также останется None?
100 процентов будет ошибка регистрации, я пробовал, т.к. вполне резонно будет ситуация, когда мы будем пытаться перерегистрировать заявку, которая еще не зарегистрирована биржей. По этому обязательно проверять статус перед регистрацией. Но статус придет если заявка исполнится или если её снять руками из квика.
Попробовал на реале получил новую ошибку: Транзакция не поддерживается по передвинутым заявкам, кто знает что это?
Trader.IsCommonMonetaryPosition = true; не помогает
Работает только если объем оставить без изменения Order.Volume = 0; в этом случае Mode = 0 и работает, а если менять объем тогда Mode = 1 выдает ошибку, помогите полечить.
Да друзья мои, на реале происходит тоже самое, уже через 20 перерегистраций, беда!!! Надежда на глюки джуниора растаяли, Михаил спасайте, время идет, не запустить в реале ничего.
Читайте анонсы по новым версиям.
Это значит что ошибка будет исправлена? Когда ждать хотя бы примерно?
А ведь верно... Во всем СтокШарпе нет способа просто получить таблицу заявок из Квика как она есть. Куча всяких второстепенных наворотов, а самого важного и необходимого нет!) Перепроверил Trader.Orders. Видит только свои заявки. Просто нет слов.
Фу, блин 😂 Нашел в недрах свойств SupportManualOrders. По умолчанию false. Выводит все заявки из таблиц. Буду тестировать теперь на соответствие реальной таблице.
а че тестить, возьми мой пример на джуниоре включи и все увидишь сам)) я на реале уже попробовал, там та же проблема.
Отлично, все заработало 4,2,2,15 Спасибо разработчикам!!!!