Проблемы с квиком, не вызываются события~/topic/3714/problemy-s-kvikom-ne-vyzyvayutsya-sobytiya/Copyright @ StockSharp Platform LLC 2010 - 20242024-03-29T15:32:30Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/posts/m/26235/Koal, а вы не пробовали покопаться в исходника, может нашли бы в чем причина? Судя по вашему коду в ...2013-06-03T13:43:03Z2013-06-03T13:43:03ZSerghttps://stocksharp.ru/users/484/info@stocksharp.ru<b>Koal</b>, а вы не пробовали покопаться в исходника, может нашли бы в чем причина? Судя по вашему коду в предмете вы вроде как нормально разбираетесь.<br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/26215/yar1k0v, спасибо за советы. Сколько я всего перепробовал лучше и не пересказывать. Это косяк платфор...2013-06-01T11:13:15Z2013-06-01T11:13:15ZKoalhttps://stocksharp.ru/users/5085/info@stocksharp.ruyar1k0v, спасибо за советы. Сколько я всего перепробовал лучше и не пересказывать. Это косяк платформы, который надо исправлять. Я решил свою проблему 2 квиками))) С одного (Trader.SupportManualOrders = true;) просто беру все сделки, с другим (Trader.SupportManualOrders = false;) работа с ордерами. Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/26207/FiNick Второй момент: при включенном автопереподключении квиктрейдера, если случайно вырубить сам кв...2013-06-01T08:55:59Z2013-06-01T08:57:27Zyar1k0vhttps://stocksharp.ru/users/6437/info@stocksharp.ruFiNick<br /><div class="quote"><span class="quotetitle">Цитата:</span><div class="innerquote">Второй момент: при включенном автопереподключении квиктрейдера, если случайно вырубить сам квик при подключенном роботе, квиктрейдер начинает постоянно пытаться переконнектиться на несуществующий квик, а сам робот можно вырубить только через TaskManager.</div></div><br /><br />Попробуйте делать проверку на <br />If (terminal.isLaunched)Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/26206/У меня была похожая проблема, нужно было быстро выставлять заявки и снимать... Количество заявок в с...2013-06-01T08:40:04Z2013-06-01T08:49:56Zyar1k0vhttps://stocksharp.ru/users/6437/info@stocksharp.ruУ меня была похожая проблема, нужно было быстро выставлять заявки и снимать... Количество заявок в секунду достигало до 8-9 штук, а затем выскакивали ошибки о том, что заявки были уже отправлены на отмену. Мне помог trader.CancelOrders(null, null, null, null, security);... Перед этим, я пытался менять State заявок и снимать их через strategy.CancelActiveOrders, но эти способы пропускали много заявок мимо и не снимали их.<br />Вот код, возможно кому то будет полезен:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
if (_strategy.PositionManager.Position == 0)
{
var activeOrders = (from orders in _strategy.Orders
where (orders.State == OrderStates.Active)
select orders).ToList();
if (activeOrders.IsEmpty())
{
//какая то логика...
}
else
_trader.CancelOrders(null, null, null, null, _strategy.Security);
}
</pre>
</div></div>Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/26177/Ваш пример сложно назвать минимальным, практически 800 строк кода в Strategy.xaml.cs. Вы можете сдел...2013-05-30T13:30:23Z2013-05-30T13:37:55ZKoalhttps://stocksharp.ru/users/5085/info@stocksharp.ru<div class="quote"><span class="quotetitle">esper <a href="https://stocksharp.ru/posts/m/26175/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Ваш пример сложно назвать минимальным, практически 800 строк кода в Strategy.xaml.cs. Вы можете сделать простое приложение, где не будет ничего лишнего (только выставление и снятие заявок) и будет воспроизводится ваша проблема? Это может существенно ускорить поиск ошибки.</div></div><br /><br />я Вам подскажу, если я смог довести ваш движок до состояния, что объекты вашей библиотеки приходят в неверное соостояние по сути, то мой код тут ни при чем)<br />а 800 строк кода там все очень просто, 2 потока, один кидает команды в очередь согласно логике тестовой стратегии, второй разбирает их и исполняет. К тому же я комментарии свои оставил. Если не будете искать косяк, скажите пож сразу, чтоб мне время не терять.<br />СпасибоCopyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/26175/Ваш пример сложно назвать минимальным, практически 800 строк кода в Strategy.xaml.cs. Вы можете сдел...2013-05-30T11:48:05Z2013-05-30T11:48:05Zesperhttps://stocksharp.ru/users/5990/info@stocksharp.ruВаш пример сложно назвать минимальным, практически 800 строк кода в Strategy.xaml.cs. Вы можете сделать простое приложение, где не будет ничего лишнего (только выставление и снятие заявок) и будет воспроизводится ваша проблема? Это может существенно ускорить поиск ошибки.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/26174/Еще пару моментов, которые я заметил (на 4.1.8 по крайней мере были): при исполнении моей заявки, со...2013-05-30T11:42:56Z2013-05-30T11:42:56ZFiNickhttps://stocksharp.ru/users/6053/info@stocksharp.ruЕще пару моментов, которые я заметил (на 4.1.8 по крайней мере были): при исполнении моей заявки, событие изменения заявки и событие прихода новой сделки по моей заявке приходят в произвольном порядке и с задержкой относительно друг друга. <br />Т.к. изменения по моим заявкам приходят не всегда, то приходится подписываться на событие прихода моих сделок, и на этом событии проверять не исполнен ли мой ордер. Но, как было написано выше, квиктрейдер может еще не знать, что моя заявка исполнена (хотя все трейды по ней уже пришли). Соответственно, практически нет способа гарантированно узнавать, что моя заявка исполнилась! <br />Получается, самый надежный способ, это сделать таймер, который проверяет, исполнены ли мои заявки. Это не комильфо, это медленно, и у плазатрейдера таких проблем нет вообще, все на событиях прекрасно работает.<br /><br />Второй момент: при включенном автопереподключении квиктрейдера, если случайно вырубить сам квик при подключенном роботе, квиктрейдер начинает постоянно пытаться переконнектиться на несуществующий квик, а сам робот можно вырубить только через TaskManager.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/26160/Проверил версию 4.1.13.1, тот же прикол: событие StrategyOrderChanged при исполнении заявки приходит...2013-05-29T18:31:26Z2013-05-29T18:40:05ZKoalhttps://stocksharp.ru/users/5085/info@stocksharp.ru<div class="quote"><span class="quotetitle">FiNick <a href="https://stocksharp.ru/posts/m/26131/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Проверил версию 4.1.13.1, тот же прикол: событие StrategyOrderChanged при исполнении заявки приходит через раз. Если дойдут руки сделаю пример.</div></div><br /><br />Нашел я источник косяка и написал примерчик, с которым этого косяка можно достичь и увидеть. Косяк появляется только при использовании свойства <br />Trader.SupportManualOrders = true;<br /><br />Суть примера (из Sample). На расстоянии от лучшего бид отступив 200 пунктов по ри и далее вниз через каждые 50 пунктов ставятся buy limit 5 штук, каждый объемом из Step Volume. Встав на поле Step Volume стрелками вверх и вниз (или кнопками +/- рядом) можно изменять размер всех ордеров разом. При изменении размера все выставленные ордера снимаются, новые с новым объемом ставятся. Если быстро играться этим полем можно добится состояния, что один или несколько ордеров перестанут реагировать на эти операции. Это и есть косяк, означающий, что для этого ордера не пришло сообщение, при этом Status = Accepted, State = None (вместо Active) (т.е. состояние ордера становится некорректным). (Запускается тест кнопкой Start только после получения последней актуальной котировки, чтобы не начать ставить ордера по "некорректным" ценам, приводящим к исполнению).<br /><br /><a href='http://s001.radikal.ru/i196/1305/3c/5b8298ff28c0.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'><img src="http://s001.radikal.ru/i196/1305/3c/5b8298ff28c0.png" style='max-width: 600px;' alt="strategy" title="strategy" /></a><br /><br />сам пример<br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAAAIJqzc31rgBFJH2TV1jAhJjRZpya9iyD1E-nfoHoeTDqz2TiUEGqq2dukC71D87Aw" title="http://dfiles.ru/files/snnt9uj8l">http://dfiles.ru/files/snnt9uj8l</a><br /><br />Косяк, конечно, можно было бы и пережить, но подскажите тогда пожалуйста, как добраться из алгоритма до всех сделок, проведенных по счету/инструменту в том числе и "руками".<br /><br />Спасибо.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/26131/Проверил версию 4.1.13.1, тот же прикол: событие StrategyOrderChanged при исполнении заявки приходит...2013-05-28T17:30:09Z2013-05-28T17:30:41ZFiNickhttps://stocksharp.ru/users/6053/info@stocksharp.ruПроверил версию 4.1.13.1, тот же прикол: событие StrategyOrderChanged при исполнении заявки приходит через раз. Если дойдут руки сделаю пример.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/26122/События приходят по заявкам несколько десятков раз а потом однажды обязательно по одной или нескольк...2013-05-28T11:54:03Z2013-05-28T11:54:03ZKoalhttps://stocksharp.ru/users/5085/info@stocksharp.ru<div class="quote"><span class="quotetitle">esper <a href="https://stocksharp.ru/posts/m/26119/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">Koal <a href="https://stocksharp.ru/posts/m/26115/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">События приходят по заявкам несколько десятков раз а потом однажды обязательно по одной или нескольким не приходит, как правило сбой происходит при более активном темпе отмены и выставлении заявок. Как проверить работу ДДЕ? в процессДата ошибок не прилетает</div></div><br />Можно открыть окно настроек ДДЕ экспорта в квике и посмотреть его состояние. Если у вас это стабильно воспроизводится, то попробуйте сделать минимальное приложение в котором это так же будет и выложите его здесь.<br /></div></div><br />не подскажите пример, в котором корректно отслеживаются состояния ордеров через события?<br /><br />Ошибка стабильно появляется когда интервал между отправкой команды на отмену заявки и регистрацию новой очень не большой. Вообще есть какое то ограничение на интервалы между командами для QuikTrader?<br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/26120/У вас случайно фильтра на таблицу Заявки в Квике не стоит? Проверьте через Sample. не стоит, конечно...2013-05-28T09:14:50Z2013-05-28T09:14:50ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ru<div class="quote"><span class="quotetitle">Koal <a href="https://stocksharp.ru/posts/m/26118/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">Михаил Сухов <a href="https://stocksharp.ru/posts/m/26116/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">У вас случайно фильтра на таблицу Заявки в Квике не стоит? Проверьте через Sample.</div></div><br /><br />не стоит, конечно. Иначе мне бы никакие заявки не приходили.<br />Единственно на что могу подумать, возможно ли, что между двумя вызовами Trader.RegisterOrder(ssOrd) проходит слишком мало времени и при этом происходит какой то сбой, но при этом все RegisterOrder выполняются из одного потока?<br />Кстати, а возможно ли как то "красивым" способом дождать результата отправки заявки прежде чем слать следующую?</div></div><br /><br />Вот поэтому надо воспроизводить такие вещи на Sample. Судя по всему, ошибка у вас в коде.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/26118/У вас случайно фильтра на таблицу Заявки в Квике не стоит? Проверьте через Sample. не стоит, конечно...2013-05-28T09:08:30Z2013-05-28T09:13:22ZKoalhttps://stocksharp.ru/users/5085/info@stocksharp.ru<div class="quote"><span class="quotetitle">Михаил Сухов <a href="https://stocksharp.ru/posts/m/26116/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">У вас случайно фильтра на таблицу Заявки в Квике не стоит? Проверьте через Sample.</div></div><br /><br />не стоит, конечно. Иначе мне бы никакие заявки не приходили.<br />Единственно на что могу подумать, возможно ли, что между двумя вызовами Trader.RegisterOrder(ssOrd) проходит слишком мало времени и при этом происходит какой то сбой, но при этом все RegisterOrder выполняются из одного потока?<br />Кстати, а возможно ли как то "красивым" способом дождать результата отправки заявки прежде чем слать следующую?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/26119/События приходят по заявкам несколько десятков раз а потом однажды обязательно по одной или нескольк...2013-05-28T09:11:30Z2013-05-28T09:11:30Zesperhttps://stocksharp.ru/users/5990/info@stocksharp.ru<div class="quote"><span class="quotetitle">Koal <a href="https://stocksharp.ru/posts/m/26115/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">События приходят по заявкам несколько десятков раз а потом однажды обязательно по одной или нескольким не приходит, как правило сбой происходит при более активном темпе отмены и выставлении заявок. Как проверить работу ДДЕ? в процессДата ошибок не прилетает</div></div><br />Можно открыть окно настроек ДДЕ экспорта в квике и посмотреть его состояние. Если у вас это стабильно воспроизводится, то попробуйте сделать минимальное приложение в котором это так же будет и выложите его здесь.<br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/26116/У вас случайно фильтра на таблицу Заявки в Квике не стоит? Проверьте через Sample.2013-05-28T08:50:32Z2013-05-28T08:50:32ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ruУ вас случайно фильтра на таблицу Заявки в Квике не стоит? Проверьте через Sample.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/26115/На счет Sample не знаю. Приведу текст, как я подписываюсь на сообщения ордера, может в этом какая-то...2013-05-28T07:27:33Z2013-05-28T08:03:45ZKoalhttps://stocksharp.ru/users/5085/info@stocksharp.ru<div class="quote"><span class="quotetitle">esper <a href="https://stocksharp.ru/posts/m/26114/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">Koal <a href="https://stocksharp.ru/posts/m/26108/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">На счет Sample не знаю. Приведу текст, как я подписываюсь на сообщения ордера, может в этом какая-то проблема.</div></div><br /><br />Проверил ваш код у себя на 4.1.13.1 и квике 6.5.2.11, заявки приходят, правила срабатывают. В момент когда у вас не приходят заявки экспорт таблицы заявок по ДДЕ работает нормально?</div></div><br /><br />События приходят по заявкам несколько десятков раз а потом однажды обязательно по одной или нескольким не приходит, как правило сбой происходит при более активном темпе отмены и выставлении заявок. Как проверить работу ДДЕ? в процессДата ошибок не прилетает<br /><br />Странный еще такой момент, что те заявки на которые приходит WhenRegister у них State = Active, у ордеров на которые не приходит - State = None, но Status в любом случае Accepted<br /><br />Мне важно отслеживать изменения статусов заявок в системе, если я пользуюсь для этого не теми средствами подскажите пожайлуйста какой способ лучше?<br />4.1.13.1, квик 6.5.2.11Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/26114/На счет Sample не знаю. Приведу текст, как я подписываюсь на сообщения ордера, может в этом какая-то...2013-05-28T07:12:39Z2013-05-28T07:12:39Zesperhttps://stocksharp.ru/users/5990/info@stocksharp.ru<div class="quote"><span class="quotetitle">Koal <a href="https://stocksharp.ru/posts/m/26108/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">На счет Sample не знаю. Приведу текст, как я подписываюсь на сообщения ордера, может в этом какая-то проблема.</div></div><br /><br />Проверил ваш код у себя на 4.1.13.1 и квике 6.5.2.11, заявки приходят, правила срабатывают. В момент когда у вас не приходят заявки экспорт таблицы заявок по ДДЕ работает нормально?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/26108/Такая же проблема при отправке ордеров через квик по дде. Не всегда отрабатывает событие регистрации...2013-05-28T05:53:26Z2013-05-28T05:53:26ZKoalhttps://stocksharp.ru/users/5085/info@stocksharp.ru<div class="quote"><span class="quotetitle">Михаил Сухов <a href="https://stocksharp.ru/posts/m/26099/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">Koal <a href="https://stocksharp.ru/posts/m/26094/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Такая же проблема при отправке ордеров через квик по дде. Не всегда отрабатывает событие регистрации заявки. Заявка появляется в системе, но статус у нее Accepted и State = None. При попытке ее отменить выдается исключение - Заявка была ранее отправлена на отмену.<br />Переход на 4.1.13.1 не помог. Ошибка появляется стабильно.</div></div><br /><br />Через Sample это можно воспроизвести?</div></div><br /><br />На счет Sample не знаю. Приведу текст, как я подписываюсь на сообщения ордера, может в этом какая-то проблема.<br /><br />StockSharp.BusinessEntities.Order ssOrd = new StockSharp.BusinessEntities.Order()<br /> {<br /> Trader = tr,<br /> Portfolio = tConnection.Trade.Account.ssPortfolio,<br /> Security = tConnection.Trade.Instrument.ssInstrument,<br /> Comment = "",<br /> Direction = _order.type.HasFlag(GISMO.Trade.Order.OrderType.Buy) ? StockSharp.BusinessEntities.OrderDirections.Buy : StockSharp.BusinessEntities.OrderDirections.Sell,<br /> Price = (decimal)_order.price,<br /> Type = StockSharp.BusinessEntities.OrderTypes.Limit,<br /> Volume = _order.amount<br /> };<br /> var ruleRegFail = ssOrder.WhenRegisterFailed();<br /> var ruleReg = ssOrder.WhenRegistered();<br /> ruleReg.Do((StockSharp.BusinessEntities.Order _ssOrd) =><br /> {<br /> //...<br /> })<br /> .Apply()<br /> .Exclusive(ruleRegFail);<br /><br /> ruleRegFail.Do((StockSharp.BusinessEntities.OrderFail f) =><br /> {<br /> //...<br /> })<br /> .Apply()<br /> .Exclusive(ruleReg);<br /> <br /> var ruleCancelled = ssOrder.WhenCanceled();<br /> ruleCancelled.Do((StockSharp.BusinessEntities.Order _ssOrd) =><br /> {<br /> //...<br /> })<br /> .Apply();<br /><br /> ssOrder.WhenCancelFailed().Do((StockSharp.BusinessEntities.OrderFail f) =><br /> {<br /> //...<br /> })<br /> .Apply();<br /><br /> var ruleMatched = ssOrder.WhenMatched();<br /> ruleMatched.Do(() =><br /> {<br /> StockSharp.Algo.MarketRuleHelper.DefaultRuleContainer.Rules.RemoveRulesByToken(ruleMatched.Token, ruleMatched);<br /> //...<br /> })<br /> .Apply();<br /><br /> ssOrder.WhenPartiallyMatched().Do(() =><br /> {<br /> //...<br /> }).Apply();<br /><br /> ssOrder.WhenNewTrades().Do((IEnumerable<MyTrade> trades) =><br /> {<br /> //...<br /> })<br /> .Apply();<br /> Trader.RegisterOrder(ssOrd);<br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/26099/Такая же проблема при отправке ордеров через квик по дде. Не всегда отрабатывает событие регистрации...2013-05-27T21:07:49Z2013-05-27T21:07:49ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ru<div class="quote"><span class="quotetitle">Koal <a href="https://stocksharp.ru/posts/m/26094/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Такая же проблема при отправке ордеров через квик по дде. Не всегда отрабатывает событие регистрации заявки. Заявка появляется в системе, но статус у нее Accepted и State = None. При попытке ее отменить выдается исключение - Заявка была ранее отправлена на отмену.<br />Переход на 4.1.13.1 не помог. Ошибка появляется стабильно.</div></div><br /><br />Через Sample это можно воспроизвести?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/26094/Такая же проблема при отправке ордеров через квик по дде. Не всегда отрабатывает событие регистрации...2013-05-27T18:32:18Z2013-05-27T18:32:18ZKoalhttps://stocksharp.ru/users/5085/info@stocksharp.ruТакая же проблема при отправке ордеров через квик по дде. Не всегда отрабатывает событие регистрации заявки. Заявка появляется в системе, но статус у нее Accepted и State = None. При попытке ее отменить выдается исключение - Заявка была ранее отправлена на отмену.<br />Переход на 4.1.13.1 не помог. Ошибка появляется стабильно.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/26049/А что с неработающими событиями, эти проблемы возникали у кого-нибудь? они исправлялись в 4.1.13?2013-05-23T09:24:17Z2013-05-23T09:24:17ZFiNickhttps://stocksharp.ru/users/6053/info@stocksharp.ruА что с неработающими событиями, эти проблемы возникали у кого-нибудь? они исправлялись в 4.1.13?Copyright @ StockSharp Platform LLC 2010 - 2024